diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..9d2a82b --- /dev/null +++ b/.eslintignore @@ -0,0 +1,6 @@ +*.json +bin/ +coverage/ +dist/ +docs/ +node_modules/ \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..0076f3f --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,50 @@ +module.exports = { + env: { + node: true, + es2022: true, + "vitest-globals/env": true + }, + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:import/errors", + "plugin:import/warnings", + "plugin:prettier/recommended", + "plugin:vitest-globals/recommended" + ], + overrides: [ + { + env: { + node: true + }, + files: [".eslintrc.{js,cjs}"], + parserOptions: { + sourceType: "script" + } + } + ], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: "latest", + sourceType: "module" + }, + plugins: ["@typescript-eslint", "simple-import-sort"], + rules: { + complexity: ["error", { max: 10 }], + "import/no-duplicates": "error", + "@typescript-eslint/no-explicit-any": "off", + "import/first": "error", + "import/newline-after-import": "error", + "sort-imports": "off", + "simple-import-sort/imports": "error" + }, + settings: { + "import/resolver": { + typescript: {}, + node: { + extensions: [".js", ".ts", ".d.ts"] + } + } + } +}; diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2e2c7b2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +dist/** -diff linguist-generated=true \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a92343b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,16 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: monthly + + - package-ecosystem: npm + directory: / + schedule: + interval: weekly diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..d86f970 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,26 @@ +# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes +changelog: + exclude: + labels: + - ignore-for-release + authors: + - octocat + categories: + - title: Breaking Changes ⚠️ + labels: + - breaking-change + - title: New Features 🎉 + labels: + - enhancement + - title: Bug fixes 🐞 + labels: + - bug + - title: Other Changes + labels: + - "*" + exclude: + labels: + - dependencies + - title: Dependency Updates 🏌️ + labels: + - dependencies \ No newline at end of file diff --git a/.github/workflows/check-dist.yaml b/.github/workflows/check-dist.yaml new file mode 100644 index 0000000..37fb539 --- /dev/null +++ b/.github/workflows/check-dist.yaml @@ -0,0 +1,59 @@ +name: Check dist/ +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths-ignore: + - '.github/workflows/**' + - '**.md' + workflow_dispatch: + workflow_call: + +jobs: + check-dist: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Node.js ${{inputs.node-version}} + uses: actions/setup-node@v4 + with: + node-version: 20.x + - id: cache + name: Get Cache NPM and NCC + run: | + echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT + echo "ncc-dir=$(node -e 'console.info(require("os").tmpdir()+"/ncc-cache");')" >> $GITHUB_OUTPUT + - name: Restore npm cache + uses: actions/cache@v4 + with: + path: ${{ steps.cache.outputs.dir }} + key: ${{ runner.os }}-node-check-dist-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-node-check-dist- + - name: Restore ncc cache + uses: actions/cache@v4 + with: + path: ${{ steps.cache.outputs.ncc-dir }} + key: ${{ runner.os }}-ncc-check-dist-${{ hashFiles('build/**') }} + restore-keys: | + ${{ runner.os }}-ncc-check-dist- + - name: Install dependencies + run: npm ci --ignore-scripts + - name: Rebuild the dist directory + run: npm run build + - id: diff + shell: bash + name: Compare the expected and actual dist directories + run: | + if [ "$(git diff --ignore-space-at-eol build/ | wc -l)" -gt "0" ]; then + echo "Detected uncommitted changes after the build. See the status below:" + git diff --color=always --ignore-space-at-eol build/ + exit 1 + fi + # If inners of the build directory were different than expected, upload the expected version as an artifact + - name: Upload artifact + if: ${{failure() && steps.diff.conclusion == 'failure'}} + uses: actions/upload-artifact@v4 + with: + name: dist + path: build/ diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..21b9782 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,43 @@ +name: CI + +on: + pull_request: + paths-ignore: + - '**.md' + workflow_call: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + - name: Install dependencies + run: npm ci --ignore-scripts + - name: Generate Grpc files + run: npm run generate + - name: Test + shell: bash + run: | + npm run test -- --run + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + - name: Install dependencies + run: npm ci --ignore-scripts + - name: Format Check + shell: bash + run: | + npm run format-check + - name: Check Lint + shell: bash + run: | + npm run lint \ No newline at end of file diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..6c28e75 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,41 @@ +name: "CodeQL" + +on: + push: + branches: [ main ] + paths-ignore: + - '.github/workflows/**' + - '**.md' + pull_request: + branches: [ main ] + types: [ ready_for_review ] + paths-ignore: + - '.github/workflows/**' + - '**.md' + schedule: + - cron: '0 0 1 * *' # Run at 00:00 on day-of-month 1. + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + strategy: + fail-fast: false + matrix: + language: [ 'TypeScript' ] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + source-root: src + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 \ No newline at end of file diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..8353f13 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,71 @@ +name: Release new version +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + ci: + name: CI + uses: ./.github/workflows/ci.yaml + secrets: inherit + + check-dist: + name: Check dist/ + uses: ./.github/workflows/check-dist.yaml + secrets: inherit + + release: + environment: + name: github + needs: [ci, check-dist] + permissions: + contents: write # to be able to publish a GitHub release + issues: write # to be able to comment on released issues + pull-requests: write # to be able to comment on released pull requests + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + registry-url: 'https://registry.npmjs.org' + - name: Install dependencies + run: npm ci --ignore-scripts + - name: Semantic Version + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + run: npx semantic-release + - name: Set Outputs + shell: bash + id: outputs + run: | + echo version=$(cat package.json | jq -r '.version') >> $GITHUB_OUTPUT + echo tag=$(cat package.json | jq -r '.version') >> $GITHUB_OUTPUT + echo release_notes=$(cat release_notes.md) >> $GITHUB_OUTPUT + - name: Create tag + shell: bash + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git tag -a ${{ steps.outputs.outputs.tag }} -m "Release ${{ steps.outputs.outputs.version }}" + git push origin ${{ steps.outputs.outputs.tag }} + - name: Create Release + uses: softprops/action-gh-release@v0.1.15 + with: + tag_name: ${{ steps.outputs.outputs.tag }} + body_path: ${{ steps.outputs.release-notes.path }} + generate_release_notes: true + prerelease: false + - name: Publish N${{ steps.outputs.outputs.tag }} + run: npm publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 0000000..9f58cca --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,26 @@ +name: Close stale PRs and Issues + +permissions: + issues: write + pull-requests: write + +on: + schedule: + - cron: "0 0 1 * *" # Run at 00:00 on day-of-month 1. + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + name: Clean up stale PRs and Issues + with: + stale-pr-message: "👋 This pull request has been marked as stale because it has been open with no activity. You can: comment on the issue or remove the stale label to hold stale off for a while, add the `Keep` label to hold stale off permanently, or do nothing. If you do nothing, this pull request will be closed eventually by the stale bot. Please see CONTRIBUTING.md for more policy details." + stale-pr-label: "Stale" + exempt-pr-labels: "Keep" # a "Keep" label will keep the PR from being closed as stale + days-before-pr-stale: 180 # when the PR is considered stale + days-before-pr-close: 15 # when the PR is closed by the bot, + days-before-issue-stale: 180 # prevents issues from being tagged by the bot + days-before-issue-close: 15 # prevents issues from being closed by the bot + exempt-assignees: 'tooling' + ascending: true \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b74ffa5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,125 @@ +# Dependencies directory +node_modules + +# Rest pulled from https://github.com/github/gitignore/blob/main/Node.gitignore +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# vuepress build output +.vuepress/dist + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* +.npmignore diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..d5a1596 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20.10.0 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..8c3b169 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,8 @@ +*.json +bin/ +coverage/ +build/ +dist/ +docs/ +*.md +node_modules/ diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..8c7df2e --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "printWidth": 120, + "tabWidth": 4, + "useTabs": false, + "semi": true, + "singleQuote": false, + "trailingComma": "none", + "bracketSpacing": true, + "arrowParens": "avoid", + "parser": "typescript" +} \ No newline at end of file diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..6462293 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @travix/tooling \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..4f65028 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,69 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Project maintainer have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [tooling-team@travix.com]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project’s leadership. + +## Attribution +This Code of Conduct is adapted from the Contributor Covenant, version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +For answers to common questions about this code of conduct, see https://www.contributor-covenant.org/faq \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..74971c8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,45 @@ +# Contributing + +Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great. + +Contributions to this project are [released](https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#6-contributions-under-repository-license) to the public under the [project's open source license](./LICENSE). + +Please note that this project is released with a [Contributor Code of Conduct](./CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. + +## Bootstrapping the Project + +```shell +# Clone the repository +git clone https://github.com/travix/ts-grpc-hmac.git +npm install +``` + +## Running the Tests + +```shell +npm fun test +``` + +## Local Development + +it's recommended to adjust/modify the example to test the changes locally. + +```shell +./example/run.sh +``` + +## Submitting Pull Requests + +1. [Fork](https://github.com/travix/ts-grpc-hmac/fork) the repository and create your branch from `main`. +2. Configure and install the dependencies. `npm install` +3. Make sure the test pass on your machine. `npm run all` +4. Create a new branch: `git checkout -b my-branch-name`. +5. Make your change, add tests, and make sure the format and lint tests pass. `npm run lint && npm run format && npm run test` +6. Make sure to build the library. `npm run build` or I recommend using `npm run all` and you can pass the step 4. +7. Push to your fork and [submit a pull request](https://github.com/travix/ts-grpc-hmac/compare) +8. Pat yourself on the back and wait for your pull request to be reviewed and merged. +9. The maintainers will review your pull request and either merge it, request changes to it, or close it with an explanation. + +## Resources +- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/) +- [Using Pull Requests](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests) \ No newline at end of file diff --git a/ISSUE_TEMPLATE/bug_report.md b/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..dd33361 --- /dev/null +++ b/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,22 @@ +--- +name: Bug report +about: Create a bug report +title: '' +labels: bug, needs triage +assignees: '' + +--- + + +**Description:** +A clear and concise description of what the bug is. + + +**Tools version:** + + +**Expected behavior:** +A description of what you expected to happen. + +**Actual behavior:** +A description of what is actually happening. \ No newline at end of file diff --git a/ISSUE_TEMPLATE/config.yml b/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..ec4bb38 --- /dev/null +++ b/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false \ No newline at end of file diff --git a/ISSUE_TEMPLATE/feature_request.md b/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..b3c6ac0 --- /dev/null +++ b/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: feature request, needs triage +assignees: '' +--- + + +**Description:** +Describe your proposal. + +**Justification:** +Justification or a use case for your proposal. + +**Are you willing to submit a PR?** + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9e34ed3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Travix International + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index fb493ea..dd2e57a 100644 --- a/README.md +++ b/README.md @@ -1 +1,91 @@ -# ts-grpc-hmac +# :closed_lock_with_key: grpc-hmac-interceptor + +This TypeScript library provides an HMAC authentication interceptor for gRPC, simplifying the process of setting up HMAC authentication for both server and client. It utilizes grpc-js, the official gRPC library for Node.js, employing interceptors to seamlessly integrate HMAC authentication into the gRPC server and client. + +## :rocket: Usage + +### Installation + +```shell +npm install --save-dev grpc-hmac-interceptor +``` + +### 1. Server + +Add the HMAC server interceptor to the gRPC server. + +```typescript + // keyId for which secret_key is returned by hmac.GetSecret func type + const getSecret: GetSecret = (keyId: string) => { + // return secret_key for the keyId + return secretKey; + }; + + // create HMAC server interceptor + const interceptor = NewServerInterceptor(getSecret); + let server: Server = new Server({ interceptors: [interceptor.WithInterceptor()] }); +``` + +### 2. Client + +Add the HMAC client interceptor to the gRPC client. +```typescript + // keyId and secretKey for HMAC authentication + const target = "localhost:50051"; + const interceptor = NewClientInterceptor(keyId, secretKey); + + // create gRPC client + const client: ServiceClient = new construct(target, credentials.createInsecure(), { + interceptors: [interceptor.WithInterceptor()] +}); +``` +--- +## ✏️ [Example] + +### Requirements + +```shell +# Build the ts-grpc-hmac library +npm run all + +# Package the ts-grpc-hmac library +npm pack + +# Go to the example directory +pushd example + +# Install the required packages +npm install +# Generate the gRPC code +npm run generate + +# Run the example +./run.sh +``` +[![asciicast](https://asciinema.org/a/59n7aYYFa7LJML5KJ7kQVtbIp.svg)](https://asciinema.org/a/59n7aYYFa7LJML5KJ7kQVtbIp) + +## :key: HMAC Authentication + +Steps for generating the HMAC: + +1. **Encode Request Payload**: check the request payload if not empty, encode the request payload using the gob encoder. This encoding method serializes Go data structures into a binary format. If the payload is not empty, encode the request payload using the gob encoder. This encoding method serializes data structures into a binary format. + +2. **Concatenate with Method Name**: Concatenate the encoded request payload (or just the full method name if the payload is empty) with the full method name of the gRPC service. Use a semicolon (;) as the separator between the payload and the method name. + +3. **Encrypt with Secret**: Encrypt the concatenated message using the SHA512_256 algorithm and a secret key. HMAC typically involves using a cryptographic hash function (in this case, SHA512_256) along with a secret key to generate a fixed-size hash value. + +4. **Base64 Encode**: Base64 encode the encrypted message to ensure that it is transmitted safely. + + +Steps for verifying the HMAC: + +1. **Client Interceptor**: The client interceptor will add the `x-hmac-key-id` and `x-hmac-signature` to the outgoing request metadata. +2. **Server Interceptor**: The server interceptor will extract the `x-hmac-key-id` and `x-hmac-signature` from the incoming request metadata, and then verify the HMAC signature using the `x-hmac-key-id` and the secret key associated with the key id. +3. if signature is **valid**, the request will be processed, **otherwise** `UNAUTHENTICATED` error will be returned. + +## CONTRIBUTING + +We welcome contributions to ts-grpc-hmac! Please see the [CONTRIBUTING.md](./CONTRIBUTING.md) file for more information. + +[Example]: ./example/README.md + diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..a70010c --- /dev/null +++ b/build/index.js @@ -0,0 +1,56 @@ +import './sourcemap-register.cjs';import{createRequire as __WEBPACK_EXTERNAL_createRequire}from"module";var __webpack_modules__={4235:(e,t,r)=>{var n=r(3495);e.exports=function create(e){return function adapter(t){try{return n(t,e())}catch(e){}return false}}},1009:(e,t,r)=>{var n=r(4235);e.exports=n((function processenv(){return process.env.DEBUG||process.env.DIAGNOSTICS}))},3201:e=>{var t=[];var r=[];var n=function devnull(){};function use(e){if(~t.indexOf(e))return false;t.push(e);return true}function set(e){n=e}function enabled(e){var r=[];for(var n=0;n{e.exports=function(e,t){try{Function.prototype.apply.call(console.log,console,t)}catch(e){}}},5037:(e,t,r)=>{var n=r(5917);var i=r(6287);e.exports=function ansiModifier(e,t){var r=t.namespace;var s=t.colors!==false?i(r+":",n(r)):r+":";e[0]=s+" "+e[0];return e}},611:(e,t,r)=>{var n=r(3201);var i=r(6224).isatty(1);var s=n((function dev(e,t){t=t||{};t.colors="colors"in t?t.colors:i;t.namespace=e;t.prod=false;t.dev=true;if(!dev.enabled(e)&&!(t.force||dev.force)){return dev.nope(t)}return dev.yep(t)}));s.modify(r(5037));s.use(r(1009));s.set(r(1238));e.exports=s},3170:(e,t,r)=>{if(process.env.NODE_ENV==="production"){e.exports=r(9827)}else{e.exports=r(611)}},9827:(e,t,r)=>{var n=r(3201);var i=n((function prod(e,t){t=t||{};t.namespace=e;t.prod=true;t.dev=false;if(!(t.force||prod.force))return prod.nope(t);return prod.yep(t)}));e.exports=i},8258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.addAdminServicesToServer=t.registerAdminService=void 0;const r=[];function registerAdminService(e,t){r.push({getServiceDefinition:e,getHandlers:t})}t.registerAdminService=registerAdminService;function addAdminServicesToServer(e){for(const{getServiceDefinition:t,getHandlers:n}of r){e.addService(t(),n())}}t.addAdminServicesToServer=addAdminServicesToServer},4186:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.BackoffTimeout=void 0;const r=1e3;const n=1.6;const i=12e4;const s=.2;function uniformRandom(e,t){return Math.random()*(t-e)+e}class BackoffTimeout{constructor(e,t){this.callback=e;this.initialDelay=r;this.multiplier=n;this.maxDelay=i;this.jitter=s;this.running=false;this.hasRef=true;this.startTime=new Date;this.endTime=new Date;if(t){if(t.initialDelay){this.initialDelay=t.initialDelay}if(t.multiplier){this.multiplier=t.multiplier}if(t.jitter){this.jitter=t.jitter}if(t.maxDelay){this.maxDelay=t.maxDelay}}this.nextDelay=this.initialDelay;this.timerId=setTimeout((()=>{}),0);clearTimeout(this.timerId)}runTimer(e){var t,r;this.endTime=this.startTime;this.endTime.setMilliseconds(this.endTime.getMilliseconds()+this.nextDelay);clearTimeout(this.timerId);this.timerId=setTimeout((()=>{this.callback();this.running=false}),e);if(!this.hasRef){(r=(t=this.timerId).unref)===null||r===void 0?void 0:r.call(t)}}runOnce(){this.running=true;this.startTime=new Date;this.runTimer(this.nextDelay);const e=Math.min(this.nextDelay*this.multiplier,this.maxDelay);const t=e*this.jitter;this.nextDelay=e+uniformRandom(-t,t)}stop(){clearTimeout(this.timerId);this.running=false}reset(){this.nextDelay=this.initialDelay;if(this.running){const e=new Date;const t=this.startTime;t.setMilliseconds(t.getMilliseconds()+this.nextDelay);clearTimeout(this.timerId);if(e{Object.defineProperty(t,"__esModule",{value:true});t.CallCredentials=void 0;const n=r(3665);function isCurrentOauth2Client(e){return"getRequestHeaders"in e&&typeof e.getRequestHeaders==="function"}class CallCredentials{static createFromMetadataGenerator(e){return new SingleCallCredentials(e)}static createFromGoogleCredential(e){return CallCredentials.createFromMetadataGenerator(((t,r)=>{let i;if(isCurrentOauth2Client(e)){i=e.getRequestHeaders(t.service_url)}else{i=new Promise(((r,n)=>{e.getRequestMetadata(t.service_url,((e,t)=>{if(e){n(e);return}if(!t){n(new Error("Headers not set by metadata plugin"));return}r(t)}))}))}i.then((e=>{const t=new n.Metadata;for(const r of Object.keys(e)){t.add(r,e[r])}r(null,t)}),(e=>{r(e)}))}))}static createEmpty(){return new EmptyCallCredentials}}t.CallCredentials=CallCredentials;class ComposedCallCredentials extends CallCredentials{constructor(e){super();this.creds=e}async generateMetadata(e){const t=new n.Metadata;const r=await Promise.all(this.creds.map((t=>t.generateMetadata(e))));for(const e of r){t.merge(e)}return t}compose(e){return new ComposedCallCredentials(this.creds.concat([e]))}_equals(e){if(this===e){return true}if(e instanceof ComposedCallCredentials){return this.creds.every(((t,r)=>t._equals(e.creds[r])))}else{return false}}}class SingleCallCredentials extends CallCredentials{constructor(e){super();this.metadataGenerator=e}generateMetadata(e){return new Promise(((t,r)=>{this.metadataGenerator(e,((e,n)=>{if(n!==undefined){t(n)}else{r(e)}}))}))}compose(e){return new ComposedCallCredentials([this,e])}_equals(e){if(this===e){return true}if(e instanceof SingleCallCredentials){return this.metadataGenerator===e.metadataGenerator}else{return false}}}class EmptyCallCredentials extends CallCredentials{generateMetadata(e){return Promise.resolve(new n.Metadata)}compose(e){return e}_equals(e){return e instanceof EmptyCallCredentials}}},8710:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.InterceptingListenerImpl=t.isInterceptingListener=void 0;function isInterceptingListener(e){return e.onReceiveMetadata!==undefined&&e.onReceiveMetadata.length===1}t.isInterceptingListener=isInterceptingListener;class InterceptingListenerImpl{constructor(e,t){this.listener=e;this.nextListener=t;this.processingMetadata=false;this.hasPendingMessage=false;this.processingMessage=false;this.pendingStatus=null}processPendingMessage(){if(this.hasPendingMessage){this.nextListener.onReceiveMessage(this.pendingMessage);this.pendingMessage=null;this.hasPendingMessage=false}}processPendingStatus(){if(this.pendingStatus){this.nextListener.onReceiveStatus(this.pendingStatus)}}onReceiveMetadata(e){this.processingMetadata=true;this.listener.onReceiveMetadata(e,(e=>{this.processingMetadata=false;this.nextListener.onReceiveMetadata(e);this.processPendingMessage();this.processPendingStatus()}))}onReceiveMessage(e){this.processingMessage=true;this.listener.onReceiveMessage(e,(e=>{this.processingMessage=false;if(this.processingMetadata){this.pendingMessage=e;this.hasPendingMessage=true}else{this.nextListener.onReceiveMessage(e);this.processPendingStatus()}}))}onReceiveStatus(e){this.listener.onReceiveStatus(e,(e=>{if(this.processingMetadata||this.processingMessage){this.pendingStatus=e}else{this.nextListener.onReceiveStatus(e)}}))}}t.InterceptingListenerImpl=InterceptingListenerImpl},380:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.getNextCallNumber=void 0;let r=0;function getNextCallNumber(){return r++}t.getNextCallNumber=getNextCallNumber},7453:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ClientDuplexStreamImpl=t.ClientWritableStreamImpl=t.ClientReadableStreamImpl=t.ClientUnaryCallImpl=t.callErrorFromStatus=void 0;const n=r(2361);const i=r(2781);const s=r(634);function callErrorFromStatus(e,t){const r=`${e.code} ${s.Status[e.code]}: ${e.details}`;const n=new Error(r);const i=`${n.stack}\nfor call at\n${t}`;return Object.assign(new Error(r),e,{stack:i})}t.callErrorFromStatus=callErrorFromStatus;class ClientUnaryCallImpl extends n.EventEmitter{constructor(){super()}cancel(){var e;(e=this.call)===null||e===void 0?void 0:e.cancelWithStatus(s.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}}t.ClientUnaryCallImpl=ClientUnaryCallImpl;class ClientReadableStreamImpl extends i.Readable{constructor(e){super({objectMode:true});this.deserialize=e}cancel(){var e;(e=this.call)===null||e===void 0?void 0:e.cancelWithStatus(s.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}_read(e){var t;(t=this.call)===null||t===void 0?void 0:t.startRead()}}t.ClientReadableStreamImpl=ClientReadableStreamImpl;class ClientWritableStreamImpl extends i.Writable{constructor(e){super({objectMode:true});this.serialize=e}cancel(){var e;(e=this.call)===null||e===void 0?void 0:e.cancelWithStatus(s.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}_write(e,t,r){var n;const i={callback:r};const s=Number(t);if(!Number.isNaN(s)){i.flags=s}(n=this.call)===null||n===void 0?void 0:n.sendMessageWithContext(i,e)}_final(e){var t;(t=this.call)===null||t===void 0?void 0:t.halfClose();e()}}t.ClientWritableStreamImpl=ClientWritableStreamImpl;class ClientDuplexStreamImpl extends i.Duplex{constructor(e,t){super({objectMode:true});this.serialize=e;this.deserialize=t}cancel(){var e;(e=this.call)===null||e===void 0?void 0:e.cancelWithStatus(s.Status.CANCELLED,"Cancelled on client")}getPeer(){var e,t;return(t=(e=this.call)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:"unknown"}_read(e){var t;(t=this.call)===null||t===void 0?void 0:t.startRead()}_write(e,t,r){var n;const i={callback:r};const s=Number(t);if(!Number.isNaN(s)){i.flags=s}(n=this.call)===null||n===void 0?void 0:n.sendMessageWithContext(i,e)}_final(e){var t;(t=this.call)===null||t===void 0?void 0:t.halfClose();e()}}t.ClientDuplexStreamImpl=ClientDuplexStreamImpl},4030:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ChannelCredentials=void 0;const n=r(4404);const i=r(1426);const s=r(6581);function verifyIsBufferOrNull(e,t){if(e&&!(e instanceof Buffer)){throw new TypeError(`${t}, if provided, must be a Buffer.`)}}class ChannelCredentials{constructor(e){this.callCredentials=e||i.CallCredentials.createEmpty()}_getCallCredentials(){return this.callCredentials}static createSsl(e,t,r,i){var a;verifyIsBufferOrNull(e,"Root certificate");verifyIsBufferOrNull(t,"Private key");verifyIsBufferOrNull(r,"Certificate chain");if(t&&!r){throw new Error("Private key must be given with accompanying certificate chain")}if(!t&&r){throw new Error("Certificate chain must be given with accompanying private key")}const o=(0,n.createSecureContext)({ca:(a=e!==null&&e!==void 0?e:(0,s.getDefaultRootsData)())!==null&&a!==void 0?a:undefined,key:t!==null&&t!==void 0?t:undefined,cert:r!==null&&r!==void 0?r:undefined,ciphers:s.CIPHER_SUITES});return new SecureChannelCredentialsImpl(o,i!==null&&i!==void 0?i:{})}static createFromSecureContext(e,t){return new SecureChannelCredentialsImpl(e,t!==null&&t!==void 0?t:{})}static createInsecure(){return new InsecureChannelCredentialsImpl}}t.ChannelCredentials=ChannelCredentials;class InsecureChannelCredentialsImpl extends ChannelCredentials{constructor(){super()}compose(e){throw new Error("Cannot compose insecure credentials")}_getConnectionOptions(){return null}_isSecure(){return false}_equals(e){return e instanceof InsecureChannelCredentialsImpl}}class SecureChannelCredentialsImpl extends ChannelCredentials{constructor(e,t){super();this.secureContext=e;this.verifyOptions=t;this.connectionOptions={secureContext:e};if(t===null||t===void 0?void 0:t.checkServerIdentity){this.connectionOptions.checkServerIdentity=t.checkServerIdentity}}compose(e){const t=this.callCredentials.compose(e);return new ComposedChannelCredentialsImpl(this,t)}_getConnectionOptions(){return Object.assign({},this.connectionOptions)}_isSecure(){return true}_equals(e){if(this===e){return true}if(e instanceof SecureChannelCredentialsImpl){return this.secureContext===e.secureContext&&this.verifyOptions.checkServerIdentity===e.verifyOptions.checkServerIdentity}else{return false}}}class ComposedChannelCredentialsImpl extends ChannelCredentials{constructor(e,t){super(t);this.channelCredentials=e}compose(e){const t=this.callCredentials.compose(e);return new ComposedChannelCredentialsImpl(this.channelCredentials,t)}_getConnectionOptions(){return this.channelCredentials._getConnectionOptions()}_isSecure(){return true}_equals(e){if(this===e){return true}if(e instanceof ComposedChannelCredentialsImpl){return this.channelCredentials._equals(e.channelCredentials)&&this.callCredentials._equals(e.callCredentials)}else{return false}}}},9810:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.channelOptionsEqual=t.recognizedOptions=void 0;t.recognizedOptions={"grpc.ssl_target_name_override":true,"grpc.primary_user_agent":true,"grpc.secondary_user_agent":true,"grpc.default_authority":true,"grpc.keepalive_time_ms":true,"grpc.keepalive_timeout_ms":true,"grpc.keepalive_permit_without_calls":true,"grpc.service_config":true,"grpc.max_concurrent_streams":true,"grpc.initial_reconnect_backoff_ms":true,"grpc.max_reconnect_backoff_ms":true,"grpc.use_local_subchannel_pool":true,"grpc.max_send_message_length":true,"grpc.max_receive_message_length":true,"grpc.enable_http_proxy":true,"grpc.enable_channelz":true,"grpc.dns_min_time_between_resolutions_ms":true,"grpc.enable_retries":true,"grpc.per_rpc_retry_buffer_size":true,"grpc.retry_buffer_size":true,"grpc.max_connection_age_ms":true,"grpc.max_connection_age_grace_ms":true,"grpc-node.max_session_memory":true,"grpc.service_config_disable_resolution":true,"grpc.client_idle_timeout_ms":true,"grpc-node.tls_enable_trace":true,"grpc.lb.ring_hash.ring_size_cap":true};function channelOptionsEqual(e,t){const r=Object.keys(e).sort();const n=Object.keys(t).sort();if(r.length!==n.length){return false}for(let i=0;i{Object.defineProperty(t,"__esModule",{value:true});t.ChannelImplementation=void 0;const n=r(4030);const i=r(9672);class ChannelImplementation{constructor(e,t,r){if(typeof e!=="string"){throw new TypeError("Channel target must be a string")}if(!(t instanceof n.ChannelCredentials)){throw new TypeError("Channel credentials must be a ChannelCredentials object")}if(r){if(typeof r!=="object"){throw new TypeError("Channel options must be an object")}}this.internalChannel=new i.InternalChannel(e,t,r)}close(){this.internalChannel.close()}getTarget(){return this.internalChannel.getTarget()}getConnectivityState(e){return this.internalChannel.getConnectivityState(e)}watchConnectivityState(e,t,r){this.internalChannel.watchConnectivityState(e,t,r)}getChannelzRef(){return this.internalChannel.getChannelzRef()}createCall(e,t,r,n,i){if(typeof e!=="string"){throw new TypeError("Channel#createCall: method must be a string")}if(!(typeof t==="number"||t instanceof Date)){throw new TypeError("Channel#createCall: deadline must be a number or Date")}return this.internalChannel.createCall(e,t,r,n,i)}}t.ChannelImplementation=ChannelImplementation},9975:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.setup=t.getChannelzServiceDefinition=t.getChannelzHandlers=t.unregisterChannelzRef=t.registerChannelzSocket=t.registerChannelzServer=t.registerChannelzSubchannel=t.registerChannelzChannel=t.ChannelzCallTracker=t.ChannelzChildrenTracker=t.ChannelzTrace=void 0;const n=r(1808);const i=r(878);const s=r(634);const a=r(9905);const o=r(8258);const l=r(8541);function channelRefToMessage(e){return{channel_id:e.id,name:e.name}}function subchannelRefToMessage(e){return{subchannel_id:e.id,name:e.name}}function serverRefToMessage(e){return{server_id:e.id}}function socketRefToMessage(e){return{socket_id:e.id,name:e.name}}const c=32;class ChannelzTrace{constructor(){this.events=[];this.eventsLogged=0;this.creationTimestamp=new Date}addTrace(e,t,r){const n=new Date;this.events.push({description:t,severity:e,timestamp:n,childChannel:(r===null||r===void 0?void 0:r.kind)==="channel"?r:undefined,childSubchannel:(r===null||r===void 0?void 0:r.kind)==="subchannel"?r:undefined});if(this.events.length>=c*2){this.events=this.events.slice(c)}this.eventsLogged+=1}getTraceMessage(){return{creation_timestamp:dateToProtoTimestamp(this.creationTimestamp),num_events_logged:this.eventsLogged,events:this.events.map((e=>({description:e.description,severity:e.severity,timestamp:dateToProtoTimestamp(e.timestamp),channel_ref:e.childChannel?channelRefToMessage(e.childChannel):null,subchannel_ref:e.childSubchannel?subchannelRefToMessage(e.childSubchannel):null})))}}}t.ChannelzTrace=ChannelzTrace;class ChannelzChildrenTracker{constructor(){this.channelChildren=new Map;this.subchannelChildren=new Map;this.socketChildren=new Map}refChild(e){var t,r,n;switch(e.kind){case"channel":{const r=(t=this.channelChildren.get(e.id))!==null&&t!==void 0?t:{ref:e,count:0};r.count+=1;this.channelChildren.set(e.id,r);break}case"subchannel":{const t=(r=this.subchannelChildren.get(e.id))!==null&&r!==void 0?r:{ref:e,count:0};t.count+=1;this.subchannelChildren.set(e.id,t);break}case"socket":{const t=(n=this.socketChildren.get(e.id))!==null&&n!==void 0?n:{ref:e,count:0};t.count+=1;this.socketChildren.set(e.id,t);break}}}unrefChild(e){switch(e.kind){case"channel":{const t=this.channelChildren.get(e.id);if(t!==undefined){t.count-=1;if(t.count===0){this.channelChildren.delete(e.id)}else{this.channelChildren.set(e.id,t)}}break}case"subchannel":{const t=this.subchannelChildren.get(e.id);if(t!==undefined){t.count-=1;if(t.count===0){this.subchannelChildren.delete(e.id)}else{this.subchannelChildren.set(e.id,t)}}break}case"socket":{const t=this.socketChildren.get(e.id);if(t!==undefined){t.count-=1;if(t.count===0){this.socketChildren.delete(e.id)}else{this.socketChildren.set(e.id,t)}}break}}}getChildLists(){const e=[];for(const{ref:t}of this.channelChildren.values()){e.push(t)}const t=[];for(const{ref:e}of this.subchannelChildren.values()){t.push(e)}const r=[];for(const{ref:e}of this.socketChildren.values()){r.push(e)}return{channels:e,subchannels:t,sockets:r}}}t.ChannelzChildrenTracker=ChannelzChildrenTracker;class ChannelzCallTracker{constructor(){this.callsStarted=0;this.callsSucceeded=0;this.callsFailed=0;this.lastCallStartedTimestamp=null}addCallStarted(){this.callsStarted+=1;this.lastCallStartedTimestamp=new Date}addCallSucceeded(){this.callsSucceeded+=1}addCallFailed(){this.callsFailed+=1}}t.ChannelzCallTracker=ChannelzCallTracker;let u=1;function getNextId(){return u++}const d=[];const f=[];const h=[];const p=[];function registerChannelzChannel(e,t,r){const n=getNextId();const i={id:n,name:e,kind:"channel"};if(r){d[n]={ref:i,getInfo:t}}return i}t.registerChannelzChannel=registerChannelzChannel;function registerChannelzSubchannel(e,t,r){const n=getNextId();const i={id:n,name:e,kind:"subchannel"};if(r){f[n]={ref:i,getInfo:t}}return i}t.registerChannelzSubchannel=registerChannelzSubchannel;function registerChannelzServer(e,t){const r=getNextId();const n={id:r,kind:"server"};if(t){h[r]={ref:n,getInfo:e}}return n}t.registerChannelzServer=registerChannelzServer;function registerChannelzSocket(e,t,r){const n=getNextId();const i={id:n,name:e,kind:"socket"};if(r){p[n]={ref:i,getInfo:t}}return i}t.registerChannelzSocket=registerChannelzSocket;function unregisterChannelzRef(e){switch(e.kind){case"channel":delete d[e.id];return;case"subchannel":delete f[e.id];return;case"server":delete h[e.id];return;case"socket":delete p[e.id];return}}t.unregisterChannelzRef=unregisterChannelzRef;function parseIPv6Section(e){const t=Number.parseInt(e,16);return[t/256|0,t%256]}function parseIPv6Chunk(e){if(e===""){return[]}const t=e.split(":").map((e=>parseIPv6Section(e)));const r=[];return r.concat(...t)}function ipAddressStringToBuffer(e){if((0,n.isIPv4)(e)){return Buffer.from(Uint8Array.from(e.split(".").map((e=>Number.parseInt(e)))))}else if((0,n.isIPv6)(e)){let t;let r;const n=e.indexOf("::");if(n===-1){t=e;r=""}else{t=e.substring(0,n);r=e.substring(n+2)}const i=Buffer.from(parseIPv6Chunk(t));const s=Buffer.from(parseIPv6Chunk(r));const a=Buffer.alloc(16-i.length-s.length,0);return Buffer.concat([i,a,s])}else{return null}}function connectivityStateToMessage(e){switch(e){case i.ConnectivityState.CONNECTING:return{state:"CONNECTING"};case i.ConnectivityState.IDLE:return{state:"IDLE"};case i.ConnectivityState.READY:return{state:"READY"};case i.ConnectivityState.SHUTDOWN:return{state:"SHUTDOWN"};case i.ConnectivityState.TRANSIENT_FAILURE:return{state:"TRANSIENT_FAILURE"};default:return{state:"UNKNOWN"}}}function dateToProtoTimestamp(e){if(!e){return null}const t=e.getTime();return{seconds:t/1e3|0,nanos:t%1e3*1e6}}function getChannelMessage(e){const t=e.getInfo();return{ref:channelRefToMessage(e.ref),data:{target:t.target,state:connectivityStateToMessage(t.state),calls_started:t.callTracker.callsStarted,calls_succeeded:t.callTracker.callsSucceeded,calls_failed:t.callTracker.callsFailed,last_call_started_timestamp:dateToProtoTimestamp(t.callTracker.lastCallStartedTimestamp),trace:t.trace.getTraceMessage()},channel_ref:t.children.channels.map((e=>channelRefToMessage(e))),subchannel_ref:t.children.subchannels.map((e=>subchannelRefToMessage(e)))}}function GetChannel(e,t){const r=Number.parseInt(e.request.channel_id);const n=d[r];if(n===undefined){t({code:s.Status.NOT_FOUND,details:"No channel data found for id "+r});return}t(null,{channel:getChannelMessage(n)})}function GetTopChannels(e,t){const r=Number.parseInt(e.request.max_results);const n=[];let i=Number.parseInt(e.request.start_channel_id);for(;i=r){break}}t(null,{channel:n,end:i>=h.length})}function getServerMessage(e){const t=e.getInfo();return{ref:serverRefToMessage(e.ref),data:{calls_started:t.callTracker.callsStarted,calls_succeeded:t.callTracker.callsSucceeded,calls_failed:t.callTracker.callsFailed,last_call_started_timestamp:dateToProtoTimestamp(t.callTracker.lastCallStartedTimestamp),trace:t.trace.getTraceMessage()},listen_socket:t.listenerChildren.sockets.map((e=>socketRefToMessage(e)))}}function GetServer(e,t){const r=Number.parseInt(e.request.server_id);const n=h[r];if(n===undefined){t({code:s.Status.NOT_FOUND,details:"No server data found for id "+r});return}t(null,{server:getServerMessage(n)})}function GetServers(e,t){const r=Number.parseInt(e.request.max_results);const n=[];let i=Number.parseInt(e.request.start_server_id);for(;i=r){break}}t(null,{server:n,end:i>=h.length})}function GetSubchannel(e,t){const r=Number.parseInt(e.request.subchannel_id);const n=f[r];if(n===undefined){t({code:s.Status.NOT_FOUND,details:"No subchannel data found for id "+r});return}const i=n.getInfo();const a={ref:subchannelRefToMessage(n.ref),data:{target:i.target,state:connectivityStateToMessage(i.state),calls_started:i.callTracker.callsStarted,calls_succeeded:i.callTracker.callsSucceeded,calls_failed:i.callTracker.callsFailed,last_call_started_timestamp:dateToProtoTimestamp(i.callTracker.lastCallStartedTimestamp),trace:i.trace.getTraceMessage()},socket_ref:i.children.sockets.map((e=>socketRefToMessage(e)))};t(null,{subchannel:a})}function subchannelAddressToAddressMessage(e){var t;if((0,a.isTcpSubchannelAddress)(e)){return{address:"tcpip_address",tcpip_address:{ip_address:(t=ipAddressStringToBuffer(e.host))!==null&&t!==void 0?t:undefined,port:e.port}}}else{return{address:"uds_address",uds_address:{filename:e.path}}}}function GetSocket(e,t){var r,n,i,a,o;const l=Number.parseInt(e.request.socket_id);const c=p[l];if(c===undefined){t({code:s.Status.NOT_FOUND,details:"No socket data found for id "+l});return}const u=c.getInfo();const d=u.security?{model:"tls",tls:{cipher_suite:u.security.cipherSuiteStandardName?"standard_name":"other_name",standard_name:(r=u.security.cipherSuiteStandardName)!==null&&r!==void 0?r:undefined,other_name:(n=u.security.cipherSuiteOtherName)!==null&&n!==void 0?n:undefined,local_certificate:(i=u.security.localCertificate)!==null&&i!==void 0?i:undefined,remote_certificate:(a=u.security.remoteCertificate)!==null&&a!==void 0?a:undefined}}:null;const f={ref:socketRefToMessage(c.ref),local:u.localAddress?subchannelAddressToAddressMessage(u.localAddress):null,remote:u.remoteAddress?subchannelAddressToAddressMessage(u.remoteAddress):null,remote_name:(o=u.remoteName)!==null&&o!==void 0?o:undefined,security:d,data:{keep_alives_sent:u.keepAlivesSent,streams_started:u.streamsStarted,streams_succeeded:u.streamsSucceeded,streams_failed:u.streamsFailed,last_local_stream_created_timestamp:dateToProtoTimestamp(u.lastLocalStreamCreatedTimestamp),last_remote_stream_created_timestamp:dateToProtoTimestamp(u.lastRemoteStreamCreatedTimestamp),messages_received:u.messagesReceived,messages_sent:u.messagesSent,last_message_received_timestamp:dateToProtoTimestamp(u.lastMessageReceivedTimestamp),last_message_sent_timestamp:dateToProtoTimestamp(u.lastMessageSentTimestamp),local_flow_control_window:u.localFlowControlWindow?{value:u.localFlowControlWindow}:null,remote_flow_control_window:u.remoteFlowControlWindow?{value:u.remoteFlowControlWindow}:null}};t(null,{socket:f})}function GetServerSockets(e,t){const r=Number.parseInt(e.request.server_id);const n=h[r];if(n===undefined){t({code:s.Status.NOT_FOUND,details:"No server data found for id "+r});return}const i=Number.parseInt(e.request.start_socket_id);const a=Number.parseInt(e.request.max_results);const o=n.getInfo();const l=o.sessionChildren.sockets.sort(((e,t)=>e.id-t.id));const c=[];let u=0;for(;u=i){c.push(socketRefToMessage(l[u]));if(c.length>=a){break}}}t(null,{socket_ref:c,end:u>=l.length})}function getChannelzHandlers(){return{GetChannel:GetChannel,GetTopChannels:GetTopChannels,GetServer:GetServer,GetServers:GetServers,GetSubchannel:GetSubchannel,GetSocket:GetSocket,GetServerSockets:GetServerSockets}}t.getChannelzHandlers=getChannelzHandlers;let g=null;function getChannelzServiceDefinition(){if(g){return g}const e=r(8171).J_;const t=e("channelz.proto",{keepCase:true,longs:String,enums:String,defaults:true,oneofs:true,includeDirs:[r.ab+"proto"]});const n=(0,l.loadPackageDefinition)(t);g=n.grpc.channelz.v1.Channelz.service;return g}t.getChannelzServiceDefinition=getChannelzServiceDefinition;function setup(){(0,o.registerAdminService)(getChannelzServiceDefinition,getChannelzHandlers)}t.setup=setup},2127:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.getInterceptingCall=t.InterceptingCall=t.RequesterBuilder=t.ListenerBuilder=t.InterceptorConfigurationError=void 0;const n=r(3665);const i=r(8710);const s=r(634);const a=r(2336);class InterceptorConfigurationError extends Error{constructor(e){super(e);this.name="InterceptorConfigurationError";Error.captureStackTrace(this,InterceptorConfigurationError)}}t.InterceptorConfigurationError=InterceptorConfigurationError;class ListenerBuilder{constructor(){this.metadata=undefined;this.message=undefined;this.status=undefined}withOnReceiveMetadata(e){this.metadata=e;return this}withOnReceiveMessage(e){this.message=e;return this}withOnReceiveStatus(e){this.status=e;return this}build(){return{onReceiveMetadata:this.metadata,onReceiveMessage:this.message,onReceiveStatus:this.status}}}t.ListenerBuilder=ListenerBuilder;class RequesterBuilder{constructor(){this.start=undefined;this.message=undefined;this.halfClose=undefined;this.cancel=undefined}withStart(e){this.start=e;return this}withSendMessage(e){this.message=e;return this}withHalfClose(e){this.halfClose=e;return this}withCancel(e){this.cancel=e;return this}build(){return{start:this.start,sendMessage:this.message,halfClose:this.halfClose,cancel:this.cancel}}}t.RequesterBuilder=RequesterBuilder;const o={onReceiveMetadata:(e,t)=>{t(e)},onReceiveMessage:(e,t)=>{t(e)},onReceiveStatus:(e,t)=>{t(e)}};const l={start:(e,t,r)=>{r(e,t)},sendMessage:(e,t)=>{t(e)},halfClose:e=>{e()},cancel:e=>{e()}};class InterceptingCall{constructor(e,t){var r,n,i,s;this.nextCall=e;this.processingMetadata=false;this.pendingMessageContext=null;this.processingMessage=false;this.pendingHalfClose=false;if(t){this.requester={start:(r=t.start)!==null&&r!==void 0?r:l.start,sendMessage:(n=t.sendMessage)!==null&&n!==void 0?n:l.sendMessage,halfClose:(i=t.halfClose)!==null&&i!==void 0?i:l.halfClose,cancel:(s=t.cancel)!==null&&s!==void 0?s:l.cancel}}else{this.requester=l}}cancelWithStatus(e,t){this.requester.cancel((()=>{this.nextCall.cancelWithStatus(e,t)}))}getPeer(){return this.nextCall.getPeer()}processPendingMessage(){if(this.pendingMessageContext){this.nextCall.sendMessageWithContext(this.pendingMessageContext,this.pendingMessage);this.pendingMessageContext=null;this.pendingMessage=null}}processPendingHalfClose(){if(this.pendingHalfClose){this.nextCall.halfClose()}}start(e,t){var r,n,s,a,l,c;const u={onReceiveMetadata:(n=(r=t===null||t===void 0?void 0:t.onReceiveMetadata)===null||r===void 0?void 0:r.bind(t))!==null&&n!==void 0?n:e=>{},onReceiveMessage:(a=(s=t===null||t===void 0?void 0:t.onReceiveMessage)===null||s===void 0?void 0:s.bind(t))!==null&&a!==void 0?a:e=>{},onReceiveStatus:(c=(l=t===null||t===void 0?void 0:t.onReceiveStatus)===null||l===void 0?void 0:l.bind(t))!==null&&c!==void 0?c:e=>{}};this.processingMetadata=true;this.requester.start(e,u,((e,t)=>{var r,n,s;this.processingMetadata=false;let a;if((0,i.isInterceptingListener)(t)){a=t}else{const e={onReceiveMetadata:(r=t.onReceiveMetadata)!==null&&r!==void 0?r:o.onReceiveMetadata,onReceiveMessage:(n=t.onReceiveMessage)!==null&&n!==void 0?n:o.onReceiveMessage,onReceiveStatus:(s=t.onReceiveStatus)!==null&&s!==void 0?s:o.onReceiveStatus};a=new i.InterceptingListenerImpl(e,u)}this.nextCall.start(e,a);this.processPendingMessage();this.processPendingHalfClose()}))}sendMessageWithContext(e,t){this.processingMessage=true;this.requester.sendMessage(t,(r=>{this.processingMessage=false;if(this.processingMetadata){this.pendingMessageContext=e;this.pendingMessage=t}else{this.nextCall.sendMessageWithContext(e,r);this.processPendingHalfClose()}}))}sendMessage(e){this.sendMessageWithContext({},e)}startRead(){this.nextCall.startRead()}halfClose(){this.requester.halfClose((()=>{if(this.processingMetadata||this.processingMessage){this.pendingHalfClose=true}else{this.nextCall.halfClose()}}))}}t.InterceptingCall=InterceptingCall;function getCall(e,t,r){var n,i;const s=(n=r.deadline)!==null&&n!==void 0?n:Infinity;const a=r.host;const o=(i=r.parent)!==null&&i!==void 0?i:null;const l=r.propagate_flags;const c=r.credentials;const u=e.createCall(t,s,a,o,l);if(c){u.setCredentials(c)}return u}class BaseInterceptingCall{constructor(e,t){this.call=e;this.methodDefinition=t}cancelWithStatus(e,t){this.call.cancelWithStatus(e,t)}getPeer(){return this.call.getPeer()}sendMessageWithContext(e,t){let r;try{r=this.methodDefinition.requestSerialize(t)}catch(e){this.call.cancelWithStatus(s.Status.INTERNAL,`Request message serialization failure: ${(0,a.getErrorMessage)(e)}`);return}this.call.sendMessageWithContext(e,r)}sendMessage(e){this.sendMessageWithContext({},e)}start(e,t){let r=null;this.call.start(e,{onReceiveMetadata:e=>{var r;(r=t===null||t===void 0?void 0:t.onReceiveMetadata)===null||r===void 0?void 0:r.call(t,e)},onReceiveMessage:e=>{var i;let o;try{o=this.methodDefinition.responseDeserialize(e)}catch(e){r={code:s.Status.INTERNAL,details:`Response message parsing error: ${(0,a.getErrorMessage)(e)}`,metadata:new n.Metadata};this.call.cancelWithStatus(r.code,r.details);return}(i=t===null||t===void 0?void 0:t.onReceiveMessage)===null||i===void 0?void 0:i.call(t,o)},onReceiveStatus:e=>{var n,i;if(r){(n=t===null||t===void 0?void 0:t.onReceiveStatus)===null||n===void 0?void 0:n.call(t,r)}else{(i=t===null||t===void 0?void 0:t.onReceiveStatus)===null||i===void 0?void 0:i.call(t,e)}}})}startRead(){this.call.startRead()}halfClose(){this.call.halfClose()}}class BaseUnaryInterceptingCall extends BaseInterceptingCall{constructor(e,t){super(e,t)}start(e,t){var r,n;let i=false;const s={onReceiveMetadata:(n=(r=t===null||t===void 0?void 0:t.onReceiveMetadata)===null||r===void 0?void 0:r.bind(t))!==null&&n!==void 0?n:e=>{},onReceiveMessage:e=>{var r;i=true;(r=t===null||t===void 0?void 0:t.onReceiveMessage)===null||r===void 0?void 0:r.call(t,e)},onReceiveStatus:e=>{var r,n;if(!i){(r=t===null||t===void 0?void 0:t.onReceiveMessage)===null||r===void 0?void 0:r.call(t,null)}(n=t===null||t===void 0?void 0:t.onReceiveStatus)===null||n===void 0?void 0:n.call(t,e)}};super.start(e,s);this.call.startRead()}}class BaseStreamingInterceptingCall extends BaseInterceptingCall{}function getBottomInterceptingCall(e,t,r){const n=getCall(e,r.path,t);if(r.responseStream){return new BaseStreamingInterceptingCall(n,r)}else{return new BaseUnaryInterceptingCall(n,r)}}function getInterceptingCall(e,t,r,n){if(e.clientInterceptors.length>0&&e.clientInterceptorProviders.length>0){throw new InterceptorConfigurationError("Both interceptors and interceptor_providers were passed as options "+"to the client constructor. Only one of these is allowed.")}if(e.callInterceptors.length>0&&e.callInterceptorProviders.length>0){throw new InterceptorConfigurationError("Both interceptors and interceptor_providers were passed as call "+"options. Only one of these is allowed.")}let i=[];if(e.callInterceptors.length>0||e.callInterceptorProviders.length>0){i=[].concat(e.callInterceptors,e.callInterceptorProviders.map((e=>e(t)))).filter((e=>e))}else{i=[].concat(e.clientInterceptors,e.clientInterceptorProviders.map((e=>e(t)))).filter((e=>e))}const s=Object.assign({},r,{method_definition:t});const a=i.reduceRight(((e,t)=>r=>t(r,e)),(e=>getBottomInterceptingCall(n,e,t)));return a(s)}t.getInterceptingCall=getInterceptingCall},7172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.Client=void 0;const n=r(7453);const i=r(3860);const s=r(878);const a=r(634);const o=r(3665);const l=r(2127);const c=Symbol();const u=Symbol();const d=Symbol();const f=Symbol();function isFunction(e){return typeof e==="function"}function getErrorStackString(e){return e.stack.split("\n").slice(1).join("\n")}class Client{constructor(e,t,r={}){var n,s;r=Object.assign({},r);this[u]=(n=r.interceptors)!==null&&n!==void 0?n:[];delete r.interceptors;this[d]=(s=r.interceptor_providers)!==null&&s!==void 0?s:[];delete r.interceptor_providers;if(this[u].length>0&&this[d].length>0){throw new Error("Both interceptors and interceptor_providers were passed as options "+"to the client constructor. Only one of these is allowed.")}this[f]=r.callInvocationTransformer;delete r.callInvocationTransformer;if(r.channelOverride){this[c]=r.channelOverride}else if(r.channelFactoryOverride){const n=r.channelFactoryOverride;delete r.channelFactoryOverride;this[c]=n(e,t,r)}else{this[c]=new i.ChannelImplementation(e,t,r)}}close(){this[c].close()}getChannel(){return this[c]}waitForReady(e,t){const checkState=r=>{if(r){t(new Error("Failed to connect before the deadline"));return}let n;try{n=this[c].getConnectivityState(true)}catch(e){t(new Error("The channel has been closed"));return}if(n===s.ConnectivityState.READY){t()}else{try{this[c].watchConnectivityState(n,e,checkState)}catch(e){t(new Error("The channel has been closed"))}}};setImmediate(checkState)}checkOptionalUnaryResponseArguments(e,t,r){if(isFunction(e)){return{metadata:new o.Metadata,options:{},callback:e}}else if(isFunction(t)){if(e instanceof o.Metadata){return{metadata:e,options:{},callback:t}}else{return{metadata:new o.Metadata,options:e,callback:t}}}else{if(!(e instanceof o.Metadata&&t instanceof Object&&isFunction(r))){throw new Error("Incorrect arguments passed")}return{metadata:e,options:t,callback:r}}}makeUnaryRequest(e,t,r,i,s,o,h){var p,g;const m=this.checkOptionalUnaryResponseArguments(s,o,h);const v={path:e,requestStream:false,responseStream:false,requestSerialize:t,responseDeserialize:r};let y={argument:i,metadata:m.metadata,call:new n.ClientUnaryCallImpl,channel:this[c],methodDefinition:v,callOptions:m.options,callback:m.callback};if(this[f]){y=this[f](y)}const b=y.call;const S={clientInterceptors:this[u],clientInterceptorProviders:this[d],callInterceptors:(p=y.callOptions.interceptors)!==null&&p!==void 0?p:[],callInterceptorProviders:(g=y.callOptions.interceptor_providers)!==null&&g!==void 0?g:[]};const _=(0,l.getInterceptingCall)(S,y.methodDefinition,y.callOptions,y.channel);b.call=_;let w=null;let C=false;let E=new Error;_.start(y.metadata,{onReceiveMetadata:e=>{b.emit("metadata",e)},onReceiveMessage(e){if(w!==null){_.cancelWithStatus(a.Status.INTERNAL,"Too many responses received")}w=e},onReceiveStatus(e){if(C){return}C=true;if(e.code===a.Status.OK){if(w===null){const t=getErrorStackString(E);y.callback((0,n.callErrorFromStatus)({code:a.Status.INTERNAL,details:"No message received",metadata:e.metadata},t))}else{y.callback(null,w)}}else{const t=getErrorStackString(E);y.callback((0,n.callErrorFromStatus)(e,t))}E=null;b.emit("status",e)}});_.sendMessage(i);_.halfClose();return b}makeClientStreamRequest(e,t,r,i,s,o){var h,p;const g=this.checkOptionalUnaryResponseArguments(i,s,o);const m={path:e,requestStream:true,responseStream:false,requestSerialize:t,responseDeserialize:r};let v={metadata:g.metadata,call:new n.ClientWritableStreamImpl(t),channel:this[c],methodDefinition:m,callOptions:g.options,callback:g.callback};if(this[f]){v=this[f](v)}const y=v.call;const b={clientInterceptors:this[u],clientInterceptorProviders:this[d],callInterceptors:(h=v.callOptions.interceptors)!==null&&h!==void 0?h:[],callInterceptorProviders:(p=v.callOptions.interceptor_providers)!==null&&p!==void 0?p:[]};const S=(0,l.getInterceptingCall)(b,v.methodDefinition,v.callOptions,v.channel);y.call=S;let _=null;let w=false;let C=new Error;S.start(v.metadata,{onReceiveMetadata:e=>{y.emit("metadata",e)},onReceiveMessage(e){if(_!==null){S.cancelWithStatus(a.Status.INTERNAL,"Too many responses received")}_=e},onReceiveStatus(e){if(w){return}w=true;if(e.code===a.Status.OK){if(_===null){const t=getErrorStackString(C);v.callback((0,n.callErrorFromStatus)({code:a.Status.INTERNAL,details:"No message received",metadata:e.metadata},t))}else{v.callback(null,_)}}else{const t=getErrorStackString(C);v.callback((0,n.callErrorFromStatus)(e,t))}C=null;y.emit("status",e)}});return y}checkMetadataAndOptions(e,t){let r;let n;if(e instanceof o.Metadata){r=e;if(t){n=t}else{n={}}}else{if(e){n=e}else{n={}}r=new o.Metadata}return{metadata:r,options:n}}makeServerStreamRequest(e,t,r,i,s,o){var h,p;const g=this.checkMetadataAndOptions(s,o);const m={path:e,requestStream:false,responseStream:true,requestSerialize:t,responseDeserialize:r};let v={argument:i,metadata:g.metadata,call:new n.ClientReadableStreamImpl(r),channel:this[c],methodDefinition:m,callOptions:g.options};if(this[f]){v=this[f](v)}const y=v.call;const b={clientInterceptors:this[u],clientInterceptorProviders:this[d],callInterceptors:(h=v.callOptions.interceptors)!==null&&h!==void 0?h:[],callInterceptorProviders:(p=v.callOptions.interceptor_providers)!==null&&p!==void 0?p:[]};const S=(0,l.getInterceptingCall)(b,v.methodDefinition,v.callOptions,v.channel);y.call=S;let _=false;let w=new Error;S.start(v.metadata,{onReceiveMetadata(e){y.emit("metadata",e)},onReceiveMessage(e){y.push(e)},onReceiveStatus(e){if(_){return}_=true;y.push(null);if(e.code!==a.Status.OK){const t=getErrorStackString(w);y.emit("error",(0,n.callErrorFromStatus)(e,t))}w=null;y.emit("status",e)}});S.sendMessage(i);S.halfClose();return y}makeBidiStreamRequest(e,t,r,i,s){var o,h;const p=this.checkMetadataAndOptions(i,s);const g={path:e,requestStream:true,responseStream:true,requestSerialize:t,responseDeserialize:r};let m={metadata:p.metadata,call:new n.ClientDuplexStreamImpl(t,r),channel:this[c],methodDefinition:g,callOptions:p.options};if(this[f]){m=this[f](m)}const v=m.call;const y={clientInterceptors:this[u],clientInterceptorProviders:this[d],callInterceptors:(o=m.callOptions.interceptors)!==null&&o!==void 0?o:[],callInterceptorProviders:(h=m.callOptions.interceptor_providers)!==null&&h!==void 0?h:[]};const b=(0,l.getInterceptingCall)(y,m.methodDefinition,m.callOptions,m.channel);v.call=b;let S=false;let _=new Error;b.start(m.metadata,{onReceiveMetadata(e){v.emit("metadata",e)},onReceiveMessage(e){v.push(e)},onReceiveStatus(e){if(S){return}S=true;v.push(null);if(e.code!==a.Status.OK){const t=getErrorStackString(_);v.emit("error",(0,n.callErrorFromStatus)(e,t))}_=null;v.emit("status",e)}});return v}}t.Client=Client},4789:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.CompressionAlgorithms=void 0;var r;(function(e){e[e["identity"]=0]="identity";e[e["deflate"]=1]="deflate";e[e["gzip"]=2]="gzip"})(r||(t.CompressionAlgorithms=r={}))},7616:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.CompressionFilterFactory=t.CompressionFilter=void 0;const n=r(9796);const i=r(4789);const s=r(634);const a=r(3392);const o=r(5993);const isCompressionAlgorithmKey=e=>typeof e==="number"&&typeof i.CompressionAlgorithms[e]==="string";class CompressionHandler{async writeMessage(e,t){let r=e;if(t){r=await this.compressMessage(r)}const n=Buffer.allocUnsafe(r.length+5);n.writeUInt8(t?1:0,0);n.writeUInt32BE(r.length,1);r.copy(n,5);return n}async readMessage(e){const t=e.readUInt8(0)===1;let r=e.slice(5);if(t){r=await this.decompressMessage(r)}return r}}class IdentityHandler extends CompressionHandler{async compressMessage(e){return e}async writeMessage(e,t){const r=Buffer.allocUnsafe(e.length+5);r.writeUInt8(0,0);r.writeUInt32BE(e.length,1);e.copy(r,5);return r}decompressMessage(e){return Promise.reject(new Error('Received compressed message but "grpc-encoding" header was identity'))}}class DeflateHandler extends CompressionHandler{compressMessage(e){return new Promise(((t,r)=>{n.deflate(e,((e,n)=>{if(e){r(e)}else{t(n)}}))}))}decompressMessage(e){return new Promise(((t,r)=>{n.inflate(e,((e,n)=>{if(e){r(e)}else{t(n)}}))}))}}class GzipHandler extends CompressionHandler{compressMessage(e){return new Promise(((t,r)=>{n.gzip(e,((e,n)=>{if(e){r(e)}else{t(n)}}))}))}decompressMessage(e){return new Promise(((t,r)=>{n.unzip(e,((e,n)=>{if(e){r(e)}else{t(n)}}))}))}}class UnknownHandler extends CompressionHandler{constructor(e){super();this.compressionName=e}compressMessage(e){return Promise.reject(new Error(`Received message compressed with unsupported compression method ${this.compressionName}`))}decompressMessage(e){return Promise.reject(new Error(`Compression method not supported: ${this.compressionName}`))}}function getCompressionHandler(e){switch(e){case"identity":return new IdentityHandler;case"deflate":return new DeflateHandler;case"gzip":return new GzipHandler;default:return new UnknownHandler(e)}}class CompressionFilter extends a.BaseFilter{constructor(e,t){var r;super();this.sharedFilterConfig=t;this.sendCompression=new IdentityHandler;this.receiveCompression=new IdentityHandler;this.currentCompressionAlgorithm="identity";const n=e["grpc.default_compression_algorithm"];if(n!==undefined){if(isCompressionAlgorithmKey(n)){const e=i.CompressionAlgorithms[n];const s=(r=t.serverSupportedEncodingHeader)===null||r===void 0?void 0:r.split(",");if(!s||s.includes(e)){this.currentCompressionAlgorithm=e;this.sendCompression=getCompressionHandler(this.currentCompressionAlgorithm)}}else{o.log(s.LogVerbosity.ERROR,`Invalid value provided for grpc.default_compression_algorithm option: ${n}`)}}}async sendMetadata(e){const t=await e;t.set("grpc-accept-encoding","identity,deflate,gzip");t.set("accept-encoding","identity");if(this.currentCompressionAlgorithm==="identity"){t.remove("grpc-encoding")}else{t.set("grpc-encoding",this.currentCompressionAlgorithm)}return t}receiveMetadata(e){const t=e.get("grpc-encoding");if(t.length>0){const e=t[0];if(typeof e==="string"){this.receiveCompression=getCompressionHandler(e)}}e.remove("grpc-encoding");const r=e.get("grpc-accept-encoding")[0];if(r){this.sharedFilterConfig.serverSupportedEncodingHeader=r;const e=r.split(",");if(!e.includes(this.currentCompressionAlgorithm)){this.sendCompression=new IdentityHandler;this.currentCompressionAlgorithm="identity"}}e.remove("grpc-accept-encoding");return e}async sendMessage(e){var t;const r=await e;let n;if(this.sendCompression instanceof IdentityHandler){n=false}else{n=(((t=r.flags)!==null&&t!==void 0?t:0)&2)===0}return{message:await this.sendCompression.writeMessage(r.message,n),flags:r.flags}}async receiveMessage(e){return this.receiveCompression.readMessage(await e)}}t.CompressionFilter=CompressionFilter;class CompressionFilterFactory{constructor(e,t){this.options=t;this.sharedFilterConfig={}}createFilter(){return new CompressionFilter(this.options,this.sharedFilterConfig)}}t.CompressionFilterFactory=CompressionFilterFactory},878:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.ConnectivityState=void 0;var r;(function(e){e[e["IDLE"]=0]="IDLE";e[e["CONNECTING"]=1]="CONNECTING";e[e["READY"]=2]="READY";e[e["TRANSIENT_FAILURE"]=3]="TRANSIENT_FAILURE";e[e["SHUTDOWN"]=4]="SHUTDOWN"})(r||(t.ConnectivityState=r={}))},634:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH=t.DEFAULT_MAX_SEND_MESSAGE_LENGTH=t.Propagate=t.LogVerbosity=t.Status=void 0;var r;(function(e){e[e["OK"]=0]="OK";e[e["CANCELLED"]=1]="CANCELLED";e[e["UNKNOWN"]=2]="UNKNOWN";e[e["INVALID_ARGUMENT"]=3]="INVALID_ARGUMENT";e[e["DEADLINE_EXCEEDED"]=4]="DEADLINE_EXCEEDED";e[e["NOT_FOUND"]=5]="NOT_FOUND";e[e["ALREADY_EXISTS"]=6]="ALREADY_EXISTS";e[e["PERMISSION_DENIED"]=7]="PERMISSION_DENIED";e[e["RESOURCE_EXHAUSTED"]=8]="RESOURCE_EXHAUSTED";e[e["FAILED_PRECONDITION"]=9]="FAILED_PRECONDITION";e[e["ABORTED"]=10]="ABORTED";e[e["OUT_OF_RANGE"]=11]="OUT_OF_RANGE";e[e["UNIMPLEMENTED"]=12]="UNIMPLEMENTED";e[e["INTERNAL"]=13]="INTERNAL";e[e["UNAVAILABLE"]=14]="UNAVAILABLE";e[e["DATA_LOSS"]=15]="DATA_LOSS";e[e["UNAUTHENTICATED"]=16]="UNAUTHENTICATED"})(r||(t.Status=r={}));var n;(function(e){e[e["DEBUG"]=0]="DEBUG";e[e["INFO"]=1]="INFO";e[e["ERROR"]=2]="ERROR";e[e["NONE"]=3]="NONE"})(n||(t.LogVerbosity=n={}));var i;(function(e){e[e["DEADLINE"]=1]="DEADLINE";e[e["CENSUS_STATS_CONTEXT"]=2]="CENSUS_STATS_CONTEXT";e[e["CENSUS_TRACING_CONTEXT"]=4]="CENSUS_TRACING_CONTEXT";e[e["CANCELLATION"]=8]="CANCELLATION";e[e["DEFAULTS"]=65535]="DEFAULTS"})(i||(t.Propagate=i={}));t.DEFAULT_MAX_SEND_MESSAGE_LENGTH=-1;t.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH=4*1024*1024},9129:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.restrictControlPlaneStatusCode=void 0;const n=r(634);const i=[n.Status.OK,n.Status.INVALID_ARGUMENT,n.Status.NOT_FOUND,n.Status.ALREADY_EXISTS,n.Status.FAILED_PRECONDITION,n.Status.ABORTED,n.Status.OUT_OF_RANGE,n.Status.DATA_LOSS];function restrictControlPlaneStatusCode(e,t){if(i.includes(e)){return{code:n.Status.INTERNAL,details:`Invalid status from control plane: ${e} ${n.Status[e]} ${t}`}}else{return{code:e,details:t}}}t.restrictControlPlaneStatusCode=restrictControlPlaneStatusCode},511:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.deadlineToString=t.getRelativeTimeout=t.getDeadlineTimeoutString=t.minDeadline=void 0;function minDeadline(...e){let t=Infinity;for(const r of e){const e=r instanceof Date?r.getTime():r;if(en){return Infinity}else{return i}}t.getRelativeTimeout=getRelativeTimeout;function deadlineToString(e){if(e instanceof Date){return e.toISOString()}else{const t=new Date(e);if(Number.isNaN(t.getTime())){return""+e}else{return t.toISOString()}}}t.deadlineToString=deadlineToString},2668:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.isDuration=t.durationToMs=t.msToDuration=void 0;function msToDuration(e){return{seconds:e/1e3|0,nanos:e%1e3*1e6|0}}t.msToDuration=msToDuration;function durationToMs(e){return e.seconds*1e3+e.nanos/1e6|0}t.durationToMs=durationToMs;function isDuration(e){return typeof e.seconds==="number"&&typeof e.nanos==="number"}t.isDuration=isDuration},2336:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.getErrorCode=t.getErrorMessage=void 0;function getErrorMessage(e){if(e instanceof Error){return e.message}else{return String(e)}}t.getErrorMessage=getErrorMessage;function getErrorCode(e){if(typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="number"){return e.code}else{return null}}t.getErrorCode=getErrorCode},7626:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.BaseSubchannelWrapper=t.registerAdminService=t.FilterStackFactory=t.BaseFilter=t.PickResultType=t.QueuePicker=t.UnavailablePicker=t.ChildLoadBalancerHandler=t.EndpointMap=t.endpointHasAddress=t.endpointToString=t.subchannelAddressToString=t.LeafLoadBalancer=t.isLoadBalancerNameRegistered=t.parseLoadBalancingConfig=t.selectLbConfigFromList=t.registerLoadBalancerType=t.createChildChannelControlHelper=t.BackoffTimeout=t.durationToMs=t.uriToString=t.createResolver=t.registerResolver=t.log=t.trace=void 0;var n=r(5993);Object.defineProperty(t,"trace",{enumerable:true,get:function(){return n.trace}});Object.defineProperty(t,"log",{enumerable:true,get:function(){return n.log}});var i=r(1594);Object.defineProperty(t,"registerResolver",{enumerable:true,get:function(){return i.registerResolver}});Object.defineProperty(t,"createResolver",{enumerable:true,get:function(){return i.createResolver}});var s=r(5974);Object.defineProperty(t,"uriToString",{enumerable:true,get:function(){return s.uriToString}});var a=r(2668);Object.defineProperty(t,"durationToMs",{enumerable:true,get:function(){return a.durationToMs}});var o=r(4186);Object.defineProperty(t,"BackoffTimeout",{enumerable:true,get:function(){return o.BackoffTimeout}});var l=r(2680);Object.defineProperty(t,"createChildChannelControlHelper",{enumerable:true,get:function(){return l.createChildChannelControlHelper}});Object.defineProperty(t,"registerLoadBalancerType",{enumerable:true,get:function(){return l.registerLoadBalancerType}});Object.defineProperty(t,"selectLbConfigFromList",{enumerable:true,get:function(){return l.selectLbConfigFromList}});Object.defineProperty(t,"parseLoadBalancingConfig",{enumerable:true,get:function(){return l.parseLoadBalancingConfig}});Object.defineProperty(t,"isLoadBalancerNameRegistered",{enumerable:true,get:function(){return l.isLoadBalancerNameRegistered}});var c=r(8977);Object.defineProperty(t,"LeafLoadBalancer",{enumerable:true,get:function(){return c.LeafLoadBalancer}});var u=r(9905);Object.defineProperty(t,"subchannelAddressToString",{enumerable:true,get:function(){return u.subchannelAddressToString}});Object.defineProperty(t,"endpointToString",{enumerable:true,get:function(){return u.endpointToString}});Object.defineProperty(t,"endpointHasAddress",{enumerable:true,get:function(){return u.endpointHasAddress}});Object.defineProperty(t,"EndpointMap",{enumerable:true,get:function(){return u.EndpointMap}});var d=r(7559);Object.defineProperty(t,"ChildLoadBalancerHandler",{enumerable:true,get:function(){return d.ChildLoadBalancerHandler}});var f=r(1611);Object.defineProperty(t,"UnavailablePicker",{enumerable:true,get:function(){return f.UnavailablePicker}});Object.defineProperty(t,"QueuePicker",{enumerable:true,get:function(){return f.QueuePicker}});Object.defineProperty(t,"PickResultType",{enumerable:true,get:function(){return f.PickResultType}});var h=r(3392);Object.defineProperty(t,"BaseFilter",{enumerable:true,get:function(){return h.BaseFilter}});var p=r(6450);Object.defineProperty(t,"FilterStackFactory",{enumerable:true,get:function(){return p.FilterStackFactory}});var g=r(8258);Object.defineProperty(t,"registerAdminService",{enumerable:true,get:function(){return g.registerAdminService}});var m=r(2258);Object.defineProperty(t,"BaseSubchannelWrapper",{enumerable:true,get:function(){return m.BaseSubchannelWrapper}})},6450:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.FilterStackFactory=t.FilterStack=void 0;class FilterStack{constructor(e){this.filters=e}sendMetadata(e){let t=e;for(let e=0;e=0;e--){t=this.filters[e].receiveMetadata(t)}return t}sendMessage(e){let t=e;for(let e=0;e=0;e--){t=this.filters[e].receiveMessage(t)}return t}receiveTrailers(e){let t=e;for(let e=this.filters.length-1;e>=0;e--){t=this.filters[e].receiveTrailers(t)}return t}push(e){this.filters.unshift(...e)}getFilters(){return this.filters}}t.FilterStack=FilterStack;class FilterStackFactory{constructor(e){this.factories=e}push(e){this.factories.unshift(...e)}clone(){return new FilterStackFactory([...this.factories])}createFilter(){return new FilterStack(this.factories.map((e=>e.createFilter())))}}t.FilterStackFactory=FilterStackFactory},3392:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.BaseFilter=void 0;class BaseFilter{async sendMetadata(e){return e}receiveMetadata(e){return e}async sendMessage(e){return e}async receiveMessage(e){return e}receiveTrailers(e){return e}}t.BaseFilter=BaseFilter},4e3:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.getProxiedConnection=t.mapProxyName=void 0;const n=r(5993);const i=r(634);const s=r(1594);const a=r(3685);const o=r(4404);const l=r(5993);const c=r(9905);const u=r(5974);const d=r(7310);const f=r(4886);const h="proxy";function trace(e){l.trace(i.LogVerbosity.DEBUG,h,e)}function getProxyInfo(){let e="";let t="";if(process.env.grpc_proxy){t="grpc_proxy";e=process.env.grpc_proxy}else if(process.env.https_proxy){t="https_proxy";e=process.env.https_proxy}else if(process.env.http_proxy){t="http_proxy";e=process.env.http_proxy}else{return{}}let r;try{r=new d.URL(e)}catch(e){(0,n.log)(i.LogVerbosity.ERROR,`cannot parse value of "${t}" env var`);return{}}if(r.protocol!=="http:"){(0,n.log)(i.LogVerbosity.ERROR,`"${r.protocol}" scheme not supported in proxy URI`);return{}}let s=null;if(r.username){if(r.password){(0,n.log)(i.LogVerbosity.INFO,"userinfo found in proxy URI");s=`${r.username}:${r.password}`}else{s=r.username}}const a=r.hostname;let o=r.port;if(o===""){o="80"}const l={address:`${a}:${o}`};if(s){l.creds=s}trace("Proxy server "+l.address+" set by environment variable "+t);return l}function getNoProxyHostList(){let e=process.env.no_grpc_proxy;let t="no_grpc_proxy";if(!e){e=process.env.no_proxy;t="no_proxy"}if(e){trace("No proxy server list set by environment variable "+t);return e.split(",")}else{return[]}}function mapProxyName(e,t){var r;const n={target:e,extraOptions:{}};if(((r=t["grpc.enable_http_proxy"])!==null&&r!==void 0?r:1)===0){return n}if(e.scheme==="unix"){return n}const i=getProxyInfo();if(!i.address){return n}const s=(0,u.splitHostPort)(e.path);if(!s){return n}const a=s.host;for(const t of getNoProxyHostList()){if(t===a){trace("Not using proxy for target in no_proxy list: "+(0,u.uriToString)(e));return n}}const o={"grpc.http_connect_target":(0,u.uriToString)(e)};if(i.creds){o["grpc.http_connect_creds"]=i.creds}return{target:{scheme:"dns",path:i.address},extraOptions:o}}t.mapProxyName=mapProxyName;function getProxiedConnection(e,t,r){var l;if(!("grpc.http_connect_target"in t)){return Promise.resolve({})}const d=t["grpc.http_connect_target"];const h=(0,u.parseUri)(d);if(h===null){return Promise.resolve({})}const p=(0,u.splitHostPort)(h.path);if(p===null){return Promise.resolve({})}const g=`${p.host}:${(l=p.port)!==null&&l!==void 0?l:f.DEFAULT_PORT}`;const m={method:"CONNECT",path:g};const v={Host:g};if((0,c.isTcpSubchannelAddress)(e)){m.host=e.host;m.port=e.port}else{m.socketPath=e.path}if("grpc.http_connect_creds"in t){v["Proxy-Authorization"]="Basic "+Buffer.from(t["grpc.http_connect_creds"]).toString("base64")}m.headers=v;const y=(0,c.subchannelAddressToString)(e);trace("Using proxy "+y+" to connect to "+m.path);return new Promise(((e,t)=>{const l=a.request(m);l.once("connect",((a,c,d)=>{var f;l.removeAllListeners();c.removeAllListeners();if(a.statusCode===200){trace("Successfully connected to "+m.path+" through proxy "+y);if("secureContext"in r){const n=(0,s.getDefaultAuthority)(h);const i=(0,u.splitHostPort)(n);const a=(f=i===null||i===void 0?void 0:i.host)!==null&&f!==void 0?f:n;const l=o.connect(Object.assign({host:a,servername:a,socket:c},r),(()=>{trace("Successfully established a TLS connection to "+m.path+" through proxy "+y);e({socket:l,realTarget:h})}));l.on("error",(e=>{trace("Failed to establish a TLS connection to "+m.path+" through proxy "+y+" with error "+e.message);t()}))}else{trace("Successfully established a plaintext connection to "+m.path+" through proxy "+y);e({socket:c,realTarget:h})}}else{(0,n.log)(i.LogVerbosity.ERROR,"Failed to connect to "+m.path+" through proxy "+y+" with status "+a.statusCode);t()}}));l.once("error",(e=>{l.removeAllListeners();(0,n.log)(i.LogVerbosity.ERROR,"Failed to connect to proxy "+y+" with error "+e.message);t()}));l.end()}))}t.getProxiedConnection=getProxiedConnection},7025:(e,t,r)=>{var n;n={value:true};n=t.wg=n=t.e1=n=n=n=n=t.fl=t.u8=n=t.yi=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=n=t.i7=n=t.SF=n=void 0;const i=r(1426);n={enumerable:true,get:function(){return i.CallCredentials}};const s=r(3860);n={enumerable:true,get:function(){return s.ChannelImplementation}};const a=r(4789);n={enumerable:true,get:function(){return a.CompressionAlgorithms}};const o=r(878);n={enumerable:true,get:function(){return o.ConnectivityState}};const l=r(4030);n={enumerable:true,get:function(){return l.ChannelCredentials}};const c=r(7172);n={enumerable:true,get:function(){return c.Client}};const u=r(634);n={enumerable:true,get:function(){return u.LogVerbosity}};Object.defineProperty(t,"i7",{enumerable:true,get:function(){return u.Status}});n={enumerable:true,get:function(){return u.Propagate}};const d=r(5993);const f=r(8541);n={enumerable:true,get:function(){return f.loadPackageDefinition}};n={enumerable:true,get:function(){return f.makeClientConstructor}};n={enumerable:true,get:function(){return f.makeClientConstructor}};const h=r(3665);Object.defineProperty(t,"SF",{enumerable:true,get:function(){return h.Metadata}});const p=r(3389);n={enumerable:true,get:function(){return p.Server}};const g=r(3828);n={enumerable:true,get:function(){return g.ServerCredentials}};const m=r(3155);Object.defineProperty(t,"yi",{enumerable:true,get:function(){return m.StatusBuilder}});n={combineChannelCredentials:(e,...t)=>t.reduce(((e,t)=>e.compose(t)),e),combineCallCredentials:(e,...t)=>t.reduce(((e,t)=>e.compose(t)),e),createInsecure:l.ChannelCredentials.createInsecure,createSsl:l.ChannelCredentials.createSsl,createFromSecureContext:l.ChannelCredentials.createFromSecureContext,createFromMetadataGenerator:i.CallCredentials.createFromMetadataGenerator,createFromGoogleCredential:i.CallCredentials.createFromGoogleCredential,createEmpty:i.CallCredentials.createEmpty};const closeClient=e=>e.close();n=closeClient;const waitForClientReady=(e,t,r)=>e.waitForReady(t,r);n=waitForClientReady;const loadObject=(e,t)=>{throw new Error("Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead")};n=loadObject;const load=(e,t,r)=>{throw new Error("Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead")};n=load;const setLogger=e=>{d.setLogger(e)};n=setLogger;const setLogVerbosity=e=>{d.setLoggerVerbosity(e)};n=setLogVerbosity;const getClientChannel=e=>c.Client.prototype.getChannel.call(e);n=getClientChannel;var v=r(2127);n={enumerable:true,get:function(){return v.ListenerBuilder}};Object.defineProperty(t,"u8",{enumerable:true,get:function(){return v.RequesterBuilder}});Object.defineProperty(t,"fl",{enumerable:true,get:function(){return v.InterceptingCall}});n={enumerable:true,get:function(){return v.InterceptorConfigurationError}};var y=r(9975);n={enumerable:true,get:function(){return y.getChannelzServiceDefinition}};n={enumerable:true,get:function(){return y.getChannelzHandlers}};var b=r(8258);n={enumerable:true,get:function(){return b.addAdminServicesToServer}};var S=r(998);Object.defineProperty(t,"e1",{enumerable:true,get:function(){return S.ServerListenerBuilder}});n={enumerable:true,get:function(){return S.ResponderBuilder}};Object.defineProperty(t,"wg",{enumerable:true,get:function(){return S.ServerInterceptingCall}});const _=r(7626);n=_;const w=r(4886);const C=r(5252);const E=r(7902);const T=r(8977);const R=r(2787);const k=r(6828);const O=r(9975);(()=>{w.setup();C.setup();E.setup();T.setup();R.setup();k.setup();O.setup()})()},9672:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.InternalChannel=void 0;const n=r(4030);const i=r(9192);const s=r(9780);const a=r(1611);const o=r(634);const l=r(6450);const c=r(7616);const u=r(1594);const d=r(5993);const f=r(659);const h=r(4e3);const p=r(5974);const g=r(878);const m=r(9975);const v=r(776);const y=r(511);const b=r(9909);const S=r(380);const _=r(9129);const w=r(8159);const C=r(2258);const E=2147483647;const T=1e3;const R=30*60*1e3;const k=new Map;const O=1<<24;const M=1<<20;class ChannelSubchannelWrapper extends C.BaseSubchannelWrapper{constructor(e,t){super(e);this.channel=t;this.refCount=0;this.subchannelStateListener=(e,r,n,i)=>{t.throttleKeepalive(i)};e.addConnectivityStateListener(this.subchannelStateListener)}ref(){this.child.ref();this.refCount+=1}unref(){this.child.unref();this.refCount-=1;if(this.refCount<=0){this.child.removeConnectivityStateListener(this.subchannelStateListener);this.channel.removeWrappedSubchannel(this)}}}class InternalChannel{constructor(e,t,r){var v,y,b,S,C,x,A,P;this.credentials=t;this.options=r;this.connectivityState=g.ConnectivityState.IDLE;this.currentPicker=new a.UnavailablePicker;this.configSelectionQueue=[];this.pickQueue=[];this.connectivityStateWatchers=[];this.configSelector=null;this.currentResolutionError=null;this.wrappedSubchannels=new Set;this.callCount=0;this.idleTimer=null;this.channelzEnabled=true;this.callTracker=new m.ChannelzCallTracker;this.childrenTracker=new m.ChannelzChildrenTracker;this.randomChannelId=Math.floor(Math.random()*Number.MAX_SAFE_INTEGER);if(typeof e!=="string"){throw new TypeError("Channel target must be a string")}if(!(t instanceof n.ChannelCredentials)){throw new TypeError("Channel credentials must be a ChannelCredentials object")}if(r){if(typeof r!=="object"){throw new TypeError("Channel options must be an object")}}this.originalTarget=e;const N=(0,p.parseUri)(e);if(N===null){throw new Error(`Could not parse target name "${e}"`)}const I=(0,u.mapUriDefaultScheme)(N);if(I===null){throw new Error(`Could not find a default scheme for target name "${e}"`)}this.callRefTimer=setInterval((()=>{}),E);(y=(v=this.callRefTimer).unref)===null||y===void 0?void 0:y.call(v);if(this.options["grpc.enable_channelz"]===0){this.channelzEnabled=false}this.channelzTrace=new m.ChannelzTrace;this.channelzRef=(0,m.registerChannelzChannel)(e,(()=>this.getChannelzInfo()),this.channelzEnabled);if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Channel created")}if(this.options["grpc.default_authority"]){this.defaultAuthority=this.options["grpc.default_authority"]}else{this.defaultAuthority=(0,u.getDefaultAuthority)(I)}const D=(0,h.mapProxyName)(I,r);this.target=D.target;this.options=Object.assign({},this.options,D.extraOptions);this.subchannelPool=(0,s.getSubchannelPool)(((b=r["grpc.use_local_subchannel_pool"])!==null&&b!==void 0?b:0)===0);this.retryBufferTracker=new w.MessageBufferTracker((S=r["grpc.retry_buffer_size"])!==null&&S!==void 0?S:O,(C=r["grpc.per_rpc_retry_buffer_size"])!==null&&C!==void 0?C:M);this.keepaliveTime=(x=r["grpc.keepalive_time_ms"])!==null&&x!==void 0?x:-1;this.idleTimeoutMs=Math.max((A=r["grpc.client_idle_timeout_ms"])!==null&&A!==void 0?A:R,T);const L={createSubchannel:(e,t)=>{const r=this.subchannelPool.getOrCreateSubchannel(this.target,e,Object.assign({},this.options,t),this.credentials);r.throttleKeepalive(this.keepaliveTime);if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Created subchannel or used existing subchannel",r.getChannelzRef())}const n=new ChannelSubchannelWrapper(r,this);this.wrappedSubchannels.add(n);return n},updateState:(e,t)=>{this.currentPicker=t;const r=this.pickQueue.slice();this.pickQueue=[];if(r.length>0){this.callRefTimerUnref()}for(const e of r){e.doPick()}this.updateState(e)},requestReresolution:()=>{throw new Error("Resolving load balancer should never call requestReresolution")},addChannelzChild:e=>{if(this.channelzEnabled){this.childrenTracker.refChild(e)}},removeChannelzChild:e=>{if(this.channelzEnabled){this.childrenTracker.unrefChild(e)}}};this.resolvingLoadBalancer=new i.ResolvingLoadBalancer(this.target,L,r,((e,t)=>{if(e.retryThrottling){k.set(this.getTarget(),new w.RetryThrottler(e.retryThrottling.maxTokens,e.retryThrottling.tokenRatio,k.get(this.getTarget())))}else{k.delete(this.getTarget())}if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Address resolution succeeded")}this.configSelector=t;this.currentResolutionError=null;process.nextTick((()=>{const e=this.configSelectionQueue;this.configSelectionQueue=[];if(e.length>0){this.callRefTimerUnref()}for(const t of e){t.getConfig()}}))}),(e=>{if(this.channelzEnabled){this.channelzTrace.addTrace("CT_WARNING","Address resolution failed with code "+e.code+' and details "'+e.details+'"')}if(this.configSelectionQueue.length>0){this.trace("Name resolution failed with calls queued for config selection")}if(this.configSelector===null){this.currentResolutionError=Object.assign(Object.assign({},(0,_.restrictControlPlaneStatusCode)(e.code,e.details)),{metadata:e.metadata})}const t=this.configSelectionQueue;this.configSelectionQueue=[];if(t.length>0){this.callRefTimerUnref()}for(const r of t){r.reportResolverError(e)}}));this.filterStackFactory=new l.FilterStackFactory([new f.MaxMessageSizeFilterFactory(this.options),new c.CompressionFilterFactory(this,this.options)]);this.trace("Channel constructed with options "+JSON.stringify(r,undefined,2));const j=new Error;(0,d.trace)(o.LogVerbosity.DEBUG,"channel_stacktrace","("+this.channelzRef.id+") "+"Channel constructed \n"+((P=j.stack)===null||P===void 0?void 0:P.substring(j.stack.indexOf("\n")+1)));this.lastActivityTimestamp=new Date}getChannelzInfo(){return{target:this.originalTarget,state:this.connectivityState,trace:this.channelzTrace,callTracker:this.callTracker,children:this.childrenTracker.getChildLists()}}trace(e,t){(0,d.trace)(t!==null&&t!==void 0?t:o.LogVerbosity.DEBUG,"channel","("+this.channelzRef.id+") "+(0,p.uriToString)(this.target)+" "+e)}callRefTimerRef(){var e,t,r,n;if(!((t=(e=this.callRefTimer).hasRef)===null||t===void 0?void 0:t.call(e))){this.trace("callRefTimer.ref | configSelectionQueue.length="+this.configSelectionQueue.length+" pickQueue.length="+this.pickQueue.length);(n=(r=this.callRefTimer).ref)===null||n===void 0?void 0:n.call(r)}}callRefTimerUnref(){var e,t;if(!this.callRefTimer.hasRef||this.callRefTimer.hasRef()){this.trace("callRefTimer.unref | configSelectionQueue.length="+this.configSelectionQueue.length+" pickQueue.length="+this.pickQueue.length);(t=(e=this.callRefTimer).unref)===null||t===void 0?void 0:t.call(e)}}removeConnectivityStateWatcher(e){const t=this.connectivityStateWatchers.findIndex((t=>t===e));if(t>=0){this.connectivityStateWatchers.splice(t,1)}}updateState(e){(0,d.trace)(o.LogVerbosity.DEBUG,"connectivity_state","("+this.channelzRef.id+") "+(0,p.uriToString)(this.target)+" "+g.ConnectivityState[this.connectivityState]+" -> "+g.ConnectivityState[e]);if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Connectivity state change to "+g.ConnectivityState[e])}this.connectivityState=e;const t=this.connectivityStateWatchers.slice();for(const r of t){if(e!==r.currentState){if(r.timer){clearTimeout(r.timer)}this.removeConnectivityStateWatcher(r);r.callback()}}if(e!==g.ConnectivityState.TRANSIENT_FAILURE){this.currentResolutionError=null}}throttleKeepalive(e){if(e>this.keepaliveTime){this.keepaliveTime=e;for(const t of this.wrappedSubchannels){t.throttleKeepalive(e)}}}removeWrappedSubchannel(e){this.wrappedSubchannels.delete(e)}doPick(e,t){return this.currentPicker.pick({metadata:e,extraPickInfo:t})}queueCallForPick(e){this.pickQueue.push(e);this.callRefTimerRef()}getConfig(e,t){this.resolvingLoadBalancer.exitIdle();if(this.configSelector){return{type:"SUCCESS",config:this.configSelector(e,t,this.randomChannelId)}}else{if(this.currentResolutionError){return{type:"ERROR",error:this.currentResolutionError}}else{return{type:"NONE"}}}}queueCallForConfig(e){this.configSelectionQueue.push(e);this.callRefTimerRef()}enterIdle(){this.resolvingLoadBalancer.destroy();this.updateState(g.ConnectivityState.IDLE);this.currentPicker=new a.QueuePicker(this.resolvingLoadBalancer);if(this.idleTimer){clearTimeout(this.idleTimer);this.idleTimer=null}}startIdleTimeout(e){var t,r;this.idleTimer=setTimeout((()=>{if(this.callCount>0){this.startIdleTimeout(this.idleTimeoutMs);return}const e=new Date;const t=e.valueOf()-this.lastActivityTimestamp.valueOf();if(t>=this.idleTimeoutMs){this.trace("Idle timer triggered after "+this.idleTimeoutMs+"ms of inactivity");this.enterIdle()}else{this.startIdleTimeout(this.idleTimeoutMs-t)}}),e);(r=(t=this.idleTimer).unref)===null||r===void 0?void 0:r.call(t)}maybeStartIdleTimer(){if(this.connectivityState!==g.ConnectivityState.SHUTDOWN&&!this.idleTimer){this.startIdleTimeout(this.idleTimeoutMs)}}onCallStart(){if(this.channelzEnabled){this.callTracker.addCallStarted()}this.callCount+=1}onCallEnd(e){if(this.channelzEnabled){if(e.code===o.Status.OK){this.callTracker.addCallSucceeded()}else{this.callTracker.addCallFailed()}}this.callCount-=1;this.lastActivityTimestamp=new Date;this.maybeStartIdleTimer()}createLoadBalancingCall(e,t,r,n,i){const s=(0,S.getNextCallNumber)();this.trace("createLoadBalancingCall ["+s+'] method="'+t+'"');return new v.LoadBalancingCall(this,e,t,r,n,i,s)}createRetryingCall(e,t,r,n,i){const s=(0,S.getNextCallNumber)();this.trace("createRetryingCall ["+s+'] method="'+t+'"');return new w.RetryingCall(this,e,t,r,n,i,s,this.retryBufferTracker,k.get(this.getTarget()))}createInnerCall(e,t,r,n,i){if(this.options["grpc.enable_retries"]===0){return this.createLoadBalancingCall(e,t,r,n,i)}else{return this.createRetryingCall(e,t,r,n,i)}}createResolvingCall(e,t,r,n,i){const s=(0,S.getNextCallNumber)();this.trace("createResolvingCall ["+s+'] method="'+e+'", deadline='+(0,y.deadlineToString)(t));const a={deadline:t,flags:i!==null&&i!==void 0?i:o.Propagate.DEFAULTS,host:r!==null&&r!==void 0?r:this.defaultAuthority,parentCall:n};const l=new b.ResolvingCall(this,e,a,this.filterStackFactory.clone(),this.credentials._getCallCredentials(),s);this.onCallStart();l.addStatusWatcher((e=>{this.onCallEnd(e)}));return l}close(){this.resolvingLoadBalancer.destroy();this.updateState(g.ConnectivityState.SHUTDOWN);clearInterval(this.callRefTimer);if(this.idleTimer){clearTimeout(this.idleTimer)}if(this.channelzEnabled){(0,m.unregisterChannelzRef)(this.channelzRef)}this.subchannelPool.unrefUnusedSubchannels()}getTarget(){return(0,p.uriToString)(this.target)}getConnectivityState(e){const t=this.connectivityState;if(e){this.resolvingLoadBalancer.exitIdle();this.lastActivityTimestamp=new Date;this.maybeStartIdleTimer()}return t}watchConnectivityState(e,t,r){if(this.connectivityState===g.ConnectivityState.SHUTDOWN){throw new Error("Channel has been shut down")}let n=null;if(t!==Infinity){const e=t instanceof Date?t:new Date(t);const s=new Date;if(t===-Infinity||e<=s){process.nextTick(r,new Error("Deadline passed without connectivity state change"));return}n=setTimeout((()=>{this.removeConnectivityStateWatcher(i);r(new Error("Deadline passed without connectivity state change"))}),e.getTime()-s.getTime())}const i={currentState:e,callback:r,timer:n};this.connectivityStateWatchers.push(i)}getChannelzRef(){return this.channelzRef}createCall(e,t,r,n,i){if(typeof e!=="string"){throw new TypeError("Channel#createCall: method must be a string")}if(!(typeof t==="number"||t instanceof Date)){throw new TypeError("Channel#createCall: deadline must be a number or Date")}if(this.connectivityState===g.ConnectivityState.SHUTDOWN){throw new Error("Channel has been shut down")}return this.createResolvingCall(e,t,r,n,i)}}t.InternalChannel=InternalChannel},7559:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ChildLoadBalancerHandler=void 0;const n=r(2680);const i=r(878);const s="child_load_balancer_helper";class ChildLoadBalancerHandler{constructor(e,t){this.channelControlHelper=e;this.options=t;this.currentChild=null;this.pendingChild=null;this.latestConfig=null;this.ChildPolicyHelper=class{constructor(e){this.parent=e;this.child=null}createSubchannel(e,t){return this.parent.channelControlHelper.createSubchannel(e,t)}updateState(e,t){var r;if(this.calledByPendingChild()){if(e===i.ConnectivityState.CONNECTING){return}(r=this.parent.currentChild)===null||r===void 0?void 0:r.destroy();this.parent.currentChild=this.parent.pendingChild;this.parent.pendingChild=null}else if(!this.calledByCurrentChild()){return}this.parent.channelControlHelper.updateState(e,t)}requestReresolution(){var e;const t=(e=this.parent.pendingChild)!==null&&e!==void 0?e:this.parent.currentChild;if(this.child===t){this.parent.channelControlHelper.requestReresolution()}}setChild(e){this.child=e}addChannelzChild(e){this.parent.channelControlHelper.addChannelzChild(e)}removeChannelzChild(e){this.parent.channelControlHelper.removeChannelzChild(e)}calledByPendingChild(){return this.child===this.parent.pendingChild}calledByCurrentChild(){return this.child===this.parent.currentChild}}}configUpdateRequiresNewPolicyInstance(e,t){return e.getLoadBalancerName()!==t.getLoadBalancerName()}updateAddressList(e,t,r){let i;if(this.currentChild===null||this.latestConfig===null||this.configUpdateRequiresNewPolicyInstance(this.latestConfig,t)){const e=new this.ChildPolicyHelper(this);const r=(0,n.createLoadBalancer)(t,e,this.options);e.setChild(r);if(this.currentChild===null){this.currentChild=r;i=this.currentChild}else{if(this.pendingChild){this.pendingChild.destroy()}this.pendingChild=r;i=this.pendingChild}}else{if(this.pendingChild===null){i=this.currentChild}else{i=this.pendingChild}}this.latestConfig=t;i.updateAddressList(e,t,r)}exitIdle(){if(this.currentChild){this.currentChild.exitIdle();if(this.pendingChild){this.pendingChild.exitIdle()}}}resetBackoff(){if(this.currentChild){this.currentChild.resetBackoff();if(this.pendingChild){this.pendingChild.resetBackoff()}}}destroy(){if(this.currentChild){this.currentChild.destroy();this.currentChild=null}if(this.pendingChild){this.pendingChild.destroy();this.pendingChild=null}}getTypeName(){return s}}t.ChildLoadBalancerHandler=ChildLoadBalancerHandler},6828:(e,t,r)=>{var n;Object.defineProperty(t,"__esModule",{value:true});t.setup=t.OutlierDetectionLoadBalancer=t.OutlierDetectionLoadBalancingConfig=void 0;const i=r(878);const s=r(634);const a=r(2668);const o=r(7626);const l=r(2680);const c=r(7559);const u=r(1611);const d=r(9905);const f=r(2258);const h=r(5993);const p="outlier_detection";function trace(e){h.trace(s.LogVerbosity.DEBUG,p,e)}const g="outlier_detection";const m=((n=process.env.GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION)!==null&&n!==void 0?n:"true")==="true";const v={stdev_factor:1900,enforcement_percentage:100,minimum_hosts:5,request_volume:100};const y={threshold:85,enforcement_percentage:100,minimum_hosts:5,request_volume:50};function validateFieldType(e,t,r,n){if(t in e&&e[t]!==undefined&&typeof e[t]!==r){const i=n?`${n}.${t}`:t;throw new Error(`outlier detection config ${i} parse error: expected ${r}, got ${typeof e[t]}`)}}function validatePositiveDuration(e,t,r){const n=r?`${r}.${t}`:t;if(t in e&&e[t]!==undefined){if(!(0,a.isDuration)(e[t])){throw new Error(`outlier detection config ${n} parse error: expected Duration, got ${typeof e[t]}`)}if(!(e[t].seconds>=0&&e[t].seconds<=315576e6&&e[t].nanos>=0&&e[t].nanos<=999999999)){throw new Error(`outlier detection config ${n} parse error: values out of range for non-negative Duaration`)}}}function validatePercentage(e,t,r){const n=r?`${r}.${t}`:t;validateFieldType(e,t,"number",r);if(t in e&&e[t]!==undefined&&!(e[t]>=0&&e[t]<=100)){throw new Error(`outlier detection config ${n} parse error: value out of range for percentage (0-100)`)}}class OutlierDetectionLoadBalancingConfig{constructor(e,t,r,n,i,s,a){this.childPolicy=a;if(a.getLoadBalancerName()==="pick_first"){throw new Error("outlier_detection LB policy cannot have a pick_first child policy")}this.intervalMs=e!==null&&e!==void 0?e:1e4;this.baseEjectionTimeMs=t!==null&&t!==void 0?t:3e4;this.maxEjectionTimeMs=r!==null&&r!==void 0?r:3e5;this.maxEjectionPercent=n!==null&&n!==void 0?n:10;this.successRateEjection=i?Object.assign(Object.assign({},v),i):null;this.failurePercentageEjection=s?Object.assign(Object.assign({},y),s):null}getLoadBalancerName(){return g}toJsonObject(){var e,t;return{outlier_detection:{interval:(0,a.msToDuration)(this.intervalMs),base_ejection_time:(0,a.msToDuration)(this.baseEjectionTimeMs),max_ejection_time:(0,a.msToDuration)(this.maxEjectionTimeMs),max_ejection_percent:this.maxEjectionPercent,success_rate_ejection:(e=this.successRateEjection)!==null&&e!==void 0?e:undefined,failure_percentage_ejection:(t=this.failurePercentageEjection)!==null&&t!==void 0?t:undefined,child_policy:[this.childPolicy.toJsonObject()]}}}getIntervalMs(){return this.intervalMs}getBaseEjectionTimeMs(){return this.baseEjectionTimeMs}getMaxEjectionTimeMs(){return this.maxEjectionTimeMs}getMaxEjectionPercent(){return this.maxEjectionPercent}getSuccessRateEjectionConfig(){return this.successRateEjection}getFailurePercentageEjectionConfig(){return this.failurePercentageEjection}getChildPolicy(){return this.childPolicy}static createFromJson(e){var t;validatePositiveDuration(e,"interval");validatePositiveDuration(e,"base_ejection_time");validatePositiveDuration(e,"max_ejection_time");validatePercentage(e,"max_ejection_percent");if("success_rate_ejection"in e&&e.success_rate_ejection!==undefined){if(typeof e.success_rate_ejection!=="object"){throw new Error("outlier detection config success_rate_ejection must be an object")}validateFieldType(e.success_rate_ejection,"stdev_factor","number","success_rate_ejection");validatePercentage(e.success_rate_ejection,"enforcement_percentage","success_rate_ejection");validateFieldType(e.success_rate_ejection,"minimum_hosts","number","success_rate_ejection");validateFieldType(e.success_rate_ejection,"request_volume","number","success_rate_ejection")}if("failure_percentage_ejection"in e&&e.failure_percentage_ejection!==undefined){if(typeof e.failure_percentage_ejection!=="object"){throw new Error("outlier detection config failure_percentage_ejection must be an object")}validatePercentage(e.failure_percentage_ejection,"threshold","failure_percentage_ejection");validatePercentage(e.failure_percentage_ejection,"enforcement_percentage","failure_percentage_ejection");validateFieldType(e.failure_percentage_ejection,"minimum_hosts","number","failure_percentage_ejection");validateFieldType(e.failure_percentage_ejection,"request_volume","number","failure_percentage_ejection")}if(!("child_policy"in e)||!Array.isArray(e.child_policy)){throw new Error("outlier detection config child_policy must be an array")}const r=(0,l.selectLbConfigFromList)(e.child_policy);if(!r){throw new Error("outlier detection config child_policy: no valid recognized policy found")}return new OutlierDetectionLoadBalancingConfig(e.interval?(0,a.durationToMs)(e.interval):null,e.base_ejection_time?(0,a.durationToMs)(e.base_ejection_time):null,e.max_ejection_time?(0,a.durationToMs)(e.max_ejection_time):null,(t=e.max_ejection_percent)!==null&&t!==void 0?t:null,e.success_rate_ejection,e.failure_percentage_ejection,r)}}t.OutlierDetectionLoadBalancingConfig=OutlierDetectionLoadBalancingConfig;class OutlierDetectionSubchannelWrapper extends f.BaseSubchannelWrapper{constructor(e,t){super(e);this.mapEntry=t;this.refCount=0}ref(){this.child.ref();this.refCount+=1}unref(){this.child.unref();this.refCount-=1;if(this.refCount<=0){if(this.mapEntry){const e=this.mapEntry.subchannelWrappers.indexOf(this);if(e>=0){this.mapEntry.subchannelWrappers.splice(e,1)}}}}eject(){this.setHealthy(false)}uneject(){this.setHealthy(true)}getMapEntry(){return this.mapEntry}getWrappedSubchannel(){return this.child}}function createEmptyBucket(){return{success:0,failure:0}}class CallCounter{constructor(){this.activeBucket=createEmptyBucket();this.inactiveBucket=createEmptyBucket()}addSuccess(){this.activeBucket.success+=1}addFailure(){this.activeBucket.failure+=1}switchBuckets(){this.inactiveBucket=this.activeBucket;this.activeBucket=createEmptyBucket()}getLastSuccesses(){return this.inactiveBucket.success}getLastFailures(){return this.inactiveBucket.failure}}class OutlierDetectionPicker{constructor(e,t){this.wrappedPicker=e;this.countCalls=t}pick(e){const t=this.wrappedPicker.pick(e);if(t.pickResultType===u.PickResultType.COMPLETE){const e=t.subchannel;const r=e.getMapEntry();if(r){let n=t.onCallEnded;if(this.countCalls){n=e=>{var n;if(e===s.Status.OK){r.counter.addSuccess()}else{r.counter.addFailure()}(n=t.onCallEnded)===null||n===void 0?void 0:n.call(t,e)}}return Object.assign(Object.assign({},t),{subchannel:e.getWrappedSubchannel(),onCallEnded:n})}else{return Object.assign(Object.assign({},t),{subchannel:e.getWrappedSubchannel()})}}else{return t}}}class OutlierDetectionLoadBalancer{constructor(e,t){this.entryMap=new d.EndpointMap;this.latestConfig=null;this.timerStartTime=null;this.childBalancer=new c.ChildLoadBalancerHandler((0,o.createChildChannelControlHelper)(e,{createSubchannel:(t,r)=>{const n=e.createSubchannel(t,r);const i=this.entryMap.getForSubchannelAddress(t);const s=new OutlierDetectionSubchannelWrapper(n,i);if((i===null||i===void 0?void 0:i.currentEjectionTimestamp)!==null){s.eject()}i===null||i===void 0?void 0:i.subchannelWrappers.push(s);return s},updateState:(t,r)=>{if(t===i.ConnectivityState.READY){e.updateState(t,new OutlierDetectionPicker(r,this.isCountingEnabled()))}else{e.updateState(t,r)}}}),t);this.ejectionTimer=setInterval((()=>{}),0);clearInterval(this.ejectionTimer)}isCountingEnabled(){return this.latestConfig!==null&&(this.latestConfig.getSuccessRateEjectionConfig()!==null||this.latestConfig.getFailurePercentageEjectionConfig()!==null)}getCurrentEjectionPercent(){let e=0;for(const t of this.entryMap.values()){if(t.currentEjectionTimestamp!==null){e+=1}}return e*100/this.entryMap.size}runSuccessRateCheck(e){if(!this.latestConfig){return}const t=this.latestConfig.getSuccessRateEjectionConfig();if(!t){return}trace("Running success rate check");const r=t.request_volume;let n=0;const i=[];for(const[e,t]of this.entryMap.entries()){const s=t.counter.getLastSuccesses();const a=t.counter.getLastFailures();trace("Stats for "+(0,d.endpointToString)(e)+": successes="+s+" failures="+a+" targetRequestVolume="+r);if(s+a>=r){n+=1;i.push(s/(s+a))}}trace("Found "+n+" success rate candidates; currentEjectionPercent="+this.getCurrentEjectionPercent()+" successRates=["+i+"]");if(ne+t))/i.length;let a=0;for(const e of i){const t=e-s;a+=t*t}const o=a/i.length;const l=Math.sqrt(o);const c=s-l*(t.stdev_factor/1e3);trace("stdev="+l+" ejectionThreshold="+c);for(const[n,i]of this.entryMap.entries()){if(this.getCurrentEjectionPercent()>=this.latestConfig.getMaxEjectionPercent()){break}const s=i.counter.getLastSuccesses();const a=i.counter.getLastFailures();if(s+athis.runChecks()),e);(r=(t=this.ejectionTimer).unref)===null||r===void 0?void 0:r.call(t)}runChecks(){const e=new Date;trace("Ejection timer running");this.switchAllBuckets();if(!this.latestConfig){return}this.timerStartTime=e;this.startTimer(this.latestConfig.getIntervalMs());this.runSuccessRateCheck(e);this.runFailurePercentageCheck(e);for(const[e,t]of this.entryMap.entries()){if(t.currentEjectionTimestamp===null){if(t.ejectionTimeMultiplier>0){t.ejectionTimeMultiplier-=1}}else{const r=this.latestConfig.getBaseEjectionTimeMs();const n=this.latestConfig.getMaxEjectionTimeMs();const i=new Date(t.currentEjectionTimestamp.getTime());i.setMilliseconds(i.getMilliseconds()+Math.min(r*t.ejectionTimeMultiplier,Math.max(r,n)));if(i{Object.defineProperty(t,"__esModule",{value:true});t.setup=t.LeafLoadBalancer=t.PickFirstLoadBalancer=t.shuffled=t.PickFirstLoadBalancingConfig=void 0;const n=r(2680);const i=r(878);const s=r(1611);const a=r(5993);const o=r(634);const l=r(9905);const c=r(1808);const u="pick_first";function trace(e){a.trace(o.LogVerbosity.DEBUG,u,e)}const d="pick_first";const f=250;class PickFirstLoadBalancingConfig{constructor(e){this.shuffleAddressList=e}getLoadBalancerName(){return d}toJsonObject(){return{[d]:{shuffleAddressList:this.shuffleAddressList}}}getShuffleAddressList(){return this.shuffleAddressList}static createFromJson(e){if("shuffleAddressList"in e&&!(typeof e.shuffleAddressList==="boolean")){throw new Error("pick_first config field shuffleAddressList must be a boolean if provided")}return new PickFirstLoadBalancingConfig(e.shuffleAddressList===true)}}t.PickFirstLoadBalancingConfig=PickFirstLoadBalancingConfig;class PickFirstPicker{constructor(e){this.subchannel=e}pick(e){return{pickResultType:s.PickResultType.COMPLETE,subchannel:this.subchannel,status:null,onCallStarted:null,onCallEnded:null}}}function shuffled(e){const t=e.slice();for(let e=t.length-1;e>1;e--){const r=Math.floor(Math.random()*(e+1));const n=t[e];t[e]=t[r];t[r]=n}return t}t.shuffled=shuffled;function interleaveAddressFamilies(e){const t=[];const r=[];const n=[];const i=(0,l.isTcpSubchannelAddress)(e[0])&&(0,c.isIPv6)(e[0].host);for(const t of e){if((0,l.isTcpSubchannelAddress)(t)&&(0,c.isIPv6)(t.host)){r.push(t)}else{n.push(t)}}const s=i?r:n;const a=i?n:r;for(let e=0;e{this.onSubchannelStateUpdate(e,t,r,i)};this.pickedSubchannelHealthListener=()=>this.calculateAndReportNewState();this.triedAllSubchannels=false;this.stickyTransientFailureMode=false;this.requestedResolutionSinceLastUpdate=false;this.lastError=null;this.latestAddressList=null;this.connectionDelayTimeout=setTimeout((()=>{}),0);clearTimeout(this.connectionDelayTimeout);this.reportHealthStatus=t[h]}allChildrenHaveReportedTF(){return this.children.every((e=>e.hasReportedTransientFailure))}calculateAndReportNewState(){if(this.currentPick){if(this.reportHealthStatus&&!this.currentPick.isHealthy()){this.updateState(i.ConnectivityState.TRANSIENT_FAILURE,new s.UnavailablePicker({details:`Picked subchannel ${this.currentPick.getAddress()} is unhealthy`}))}else{this.updateState(i.ConnectivityState.READY,new PickFirstPicker(this.currentPick))}}else if(this.children.length===0){this.updateState(i.ConnectivityState.IDLE,new s.QueuePicker(this))}else{if(this.stickyTransientFailureMode){this.updateState(i.ConnectivityState.TRANSIENT_FAILURE,new s.UnavailablePicker({details:`No connection established. Last error: ${this.lastError}`}))}else{this.updateState(i.ConnectivityState.CONNECTING,new s.QueuePicker(this))}}}requestReresolution(){this.requestedResolutionSinceLastUpdate=true;this.channelControlHelper.requestReresolution()}maybeEnterStickyTransientFailureMode(){if(!this.allChildrenHaveReportedTF()){return}if(!this.requestedResolutionSinceLastUpdate){this.requestReresolution()}if(this.stickyTransientFailureMode){return}this.stickyTransientFailureMode=true;for(const{subchannel:e}of this.children){e.startConnecting()}this.calculateAndReportNewState()}removeCurrentPick(){if(this.currentPick!==null){const e=this.currentPick;this.currentPick=null;e.unref();e.removeConnectivityStateListener(this.subchannelStateListener);this.channelControlHelper.removeChannelzChild(e.getChannelzRef());if(this.reportHealthStatus){e.removeHealthStateWatcher(this.pickedSubchannelHealthListener)}}}onSubchannelStateUpdate(e,t,r,n){var s;if((s=this.currentPick)===null||s===void 0?void 0:s.realSubchannelEquals(e)){if(r!==i.ConnectivityState.READY){this.removeCurrentPick();this.calculateAndReportNewState();this.requestReresolution()}return}for(const[t,s]of this.children.entries()){if(e.realSubchannelEquals(s.subchannel)){if(r===i.ConnectivityState.READY){this.pickSubchannel(s.subchannel)}if(r===i.ConnectivityState.TRANSIENT_FAILURE){s.hasReportedTransientFailure=true;if(n){this.lastError=n}this.maybeEnterStickyTransientFailureMode();if(t===this.currentSubchannelIndex){this.startNextSubchannelConnecting(t+1)}}s.subchannel.startConnecting();return}}}startNextSubchannelConnecting(e){clearTimeout(this.connectionDelayTimeout);if(this.triedAllSubchannels){return}for(const[t,r]of this.children.entries()){if(t>=e){const e=r.subchannel.getConnectivityState();if(e===i.ConnectivityState.IDLE||e===i.ConnectivityState.CONNECTING){this.startConnecting(t);return}}}this.triedAllSubchannels=true;this.maybeEnterStickyTransientFailureMode()}startConnecting(e){var t,r;clearTimeout(this.connectionDelayTimeout);this.currentSubchannelIndex=e;if(this.children[e].subchannel.getConnectivityState()===i.ConnectivityState.IDLE){trace("Start connecting to subchannel with address "+this.children[e].subchannel.getAddress());process.nextTick((()=>{var t;(t=this.children[e])===null||t===void 0?void 0:t.subchannel.startConnecting()}))}this.connectionDelayTimeout=(r=(t=setTimeout((()=>{this.startNextSubchannelConnecting(e+1)}),f)).unref)===null||r===void 0?void 0:r.call(t)}pickSubchannel(e){if(this.currentPick&&e.realSubchannelEquals(this.currentPick)){return}trace("Pick subchannel with address "+e.getAddress());this.stickyTransientFailureMode=false;this.removeCurrentPick();this.currentPick=e;e.ref();if(this.reportHealthStatus){e.addHealthStateWatcher(this.pickedSubchannelHealthListener)}this.channelControlHelper.addChannelzChild(e.getChannelzRef());this.resetSubchannelList();clearTimeout(this.connectionDelayTimeout);this.calculateAndReportNewState()}updateState(e,t){trace(i.ConnectivityState[this.currentState]+" -> "+i.ConnectivityState[e]);this.currentState=e;this.channelControlHelper.updateState(e,t)}resetSubchannelList(){for(const e of this.children){if(!(this.currentPick&&e.subchannel.realSubchannelEquals(this.currentPick))){e.subchannel.removeConnectivityStateListener(this.subchannelStateListener)}e.subchannel.unref();this.channelControlHelper.removeChannelzChild(e.subchannel.getChannelzRef())}this.currentSubchannelIndex=0;this.children=[];this.triedAllSubchannels=false;this.requestedResolutionSinceLastUpdate=false}connectToAddressList(e){const t=e.map((e=>({subchannel:this.channelControlHelper.createSubchannel(e,{}),hasReportedTransientFailure:false})));for(const{subchannel:e}of t){e.ref();this.channelControlHelper.addChannelzChild(e.getChannelzRef())}this.resetSubchannelList();this.children=t;for(const{subchannel:e}of this.children){e.addConnectivityStateListener(this.subchannelStateListener);if(e.getConnectivityState()===i.ConnectivityState.READY){this.pickSubchannel(e);return}}for(const e of this.children){if(e.subchannel.getConnectivityState()===i.ConnectivityState.TRANSIENT_FAILURE){e.hasReportedTransientFailure=true}}this.startNextSubchannelConnecting(0);this.calculateAndReportNewState()}updateAddressList(e,t){if(!(t instanceof PickFirstLoadBalancingConfig)){return}if(t.getShuffleAddressList()){e=shuffled(e)}const r=[].concat(...e.map((e=>e.addresses)));if(r.length===0){throw new Error("No addresses in endpoint list passed to pick_first")}const n=interleaveAddressFamilies(r);this.latestAddressList=n;this.connectToAddressList(n)}exitIdle(){if(this.currentState===i.ConnectivityState.IDLE&&this.latestAddressList){this.connectToAddressList(this.latestAddressList)}}resetBackoff(){}destroy(){this.resetSubchannelList();this.removeCurrentPick()}getTypeName(){return d}}t.PickFirstLoadBalancer=PickFirstLoadBalancer;const p=new PickFirstLoadBalancingConfig(false);class LeafLoadBalancer{constructor(e,t,r){this.endpoint=e;this.latestState=i.ConnectivityState.IDLE;const a=(0,n.createChildChannelControlHelper)(t,{updateState:(e,r)=>{this.latestState=e;this.latestPicker=r;t.updateState(e,r)}});this.pickFirstBalancer=new PickFirstLoadBalancer(a,Object.assign(Object.assign({},r),{[h]:true}));this.latestPicker=new s.QueuePicker(this.pickFirstBalancer)}startConnecting(){this.pickFirstBalancer.updateAddressList([this.endpoint],p)}updateEndpoint(e){this.endpoint=e;if(this.latestState!==i.ConnectivityState.IDLE){this.startConnecting()}}getConnectivityState(){return this.latestState}getPicker(){return this.latestPicker}getEndpoint(){return this.endpoint}exitIdle(){this.pickFirstBalancer.exitIdle()}destroy(){this.pickFirstBalancer.destroy()}}t.LeafLoadBalancer=LeafLoadBalancer;function setup(){(0,n.registerLoadBalancerType)(d,PickFirstLoadBalancer,PickFirstLoadBalancingConfig);(0,n.registerDefaultLoadBalancerType)(d)}t.setup=setup},2787:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.setup=t.RoundRobinLoadBalancer=void 0;const n=r(2680);const i=r(878);const s=r(1611);const a=r(5993);const o=r(634);const l=r(9905);const c=r(8977);const u="round_robin";function trace(e){a.trace(o.LogVerbosity.DEBUG,u,e)}const d="round_robin";class RoundRobinLoadBalancingConfig{getLoadBalancerName(){return d}constructor(){}toJsonObject(){return{[d]:{}}}static createFromJson(e){return new RoundRobinLoadBalancingConfig}}class RoundRobinPicker{constructor(e,t=0){this.children=e;this.nextIndex=t}pick(e){const t=this.children[this.nextIndex].picker;this.nextIndex=(this.nextIndex+1)%this.children.length;return t.pick(e)}peekNextEndpoint(){return this.children[this.nextIndex].endpoint}}class RoundRobinLoadBalancer{constructor(e,t){this.channelControlHelper=e;this.options=t;this.children=[];this.currentState=i.ConnectivityState.IDLE;this.currentReadyPicker=null;this.updatesPaused=false;this.lastError=null;this.childChannelControlHelper=(0,n.createChildChannelControlHelper)(e,{updateState:(e,t)=>{this.calculateAndUpdateState()}})}countChildrenWithState(e){return this.children.filter((t=>t.getConnectivityState()===e)).length}calculateAndUpdateState(){if(this.updatesPaused){return}if(this.countChildrenWithState(i.ConnectivityState.READY)>0){const e=this.children.filter((e=>e.getConnectivityState()===i.ConnectivityState.READY));let t=0;if(this.currentReadyPicker!==null){const r=this.currentReadyPicker.peekNextEndpoint();t=e.findIndex((e=>(0,l.endpointEqual)(e.getEndpoint(),r)));if(t<0){t=0}}this.updateState(i.ConnectivityState.READY,new RoundRobinPicker(e.map((e=>({endpoint:e.getEndpoint(),picker:e.getPicker()}))),t))}else if(this.countChildrenWithState(i.ConnectivityState.CONNECTING)>0){this.updateState(i.ConnectivityState.CONNECTING,new s.QueuePicker(this))}else if(this.countChildrenWithState(i.ConnectivityState.TRANSIENT_FAILURE)>0){this.updateState(i.ConnectivityState.TRANSIENT_FAILURE,new s.UnavailablePicker({details:`No connection established. Last error: ${this.lastError}`}))}else{this.updateState(i.ConnectivityState.IDLE,new s.QueuePicker(this))}for(const e of this.children){if(e.getConnectivityState()===i.ConnectivityState.IDLE){e.exitIdle()}}}updateState(e,t){trace(i.ConnectivityState[this.currentState]+" -> "+i.ConnectivityState[e]);if(e===i.ConnectivityState.READY){this.currentReadyPicker=t}else{this.currentReadyPicker=null}this.currentState=e;this.channelControlHelper.updateState(e,t)}resetSubchannelList(){for(const e of this.children){e.destroy()}}updateAddressList(e,t){this.resetSubchannelList();trace("Connect to endpoint list "+e.map(l.endpointToString));this.updatesPaused=true;this.children=e.map((e=>new c.LeafLoadBalancer(e,this.childChannelControlHelper,this.options)));for(const e of this.children){e.startConnecting()}this.updatesPaused=false;this.calculateAndUpdateState()}exitIdle(){}resetBackoff(){}destroy(){this.resetSubchannelList()}getTypeName(){return d}}t.RoundRobinLoadBalancer=RoundRobinLoadBalancer;function setup(){(0,n.registerLoadBalancerType)(d,RoundRobinLoadBalancer,RoundRobinLoadBalancingConfig)}t.setup=setup},2680:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.selectLbConfigFromList=t.getDefaultConfig=t.parseLoadBalancingConfig=t.isLoadBalancerNameRegistered=t.createLoadBalancer=t.registerDefaultLoadBalancerType=t.registerLoadBalancerType=t.createChildChannelControlHelper=void 0;const n=r(5993);const i=r(634);function createChildChannelControlHelper(e,t){var r,n,i,s,a,o,l,c,u,d;return{createSubchannel:(n=(r=t.createSubchannel)===null||r===void 0?void 0:r.bind(t))!==null&&n!==void 0?n:e.createSubchannel.bind(e),updateState:(s=(i=t.updateState)===null||i===void 0?void 0:i.bind(t))!==null&&s!==void 0?s:e.updateState.bind(e),requestReresolution:(o=(a=t.requestReresolution)===null||a===void 0?void 0:a.bind(t))!==null&&o!==void 0?o:e.requestReresolution.bind(e),addChannelzChild:(c=(l=t.addChannelzChild)===null||l===void 0?void 0:l.bind(t))!==null&&c!==void 0?c:e.addChannelzChild.bind(e),removeChannelzChild:(d=(u=t.removeChannelzChild)===null||u===void 0?void 0:u.bind(t))!==null&&d!==void 0?d:e.removeChannelzChild.bind(e)}}t.createChildChannelControlHelper=createChildChannelControlHelper;const s={};let a=null;function registerLoadBalancerType(e,t,r){s[e]={LoadBalancer:t,LoadBalancingConfig:r}}t.registerLoadBalancerType=registerLoadBalancerType;function registerDefaultLoadBalancerType(e){a=e}t.registerDefaultLoadBalancerType=registerDefaultLoadBalancerType;function createLoadBalancer(e,t,r){const n=e.getLoadBalancerName();if(n in s){return new s[n].LoadBalancer(t,r)}else{return null}}t.createLoadBalancer=createLoadBalancer;function isLoadBalancerNameRegistered(e){return e in s}t.isLoadBalancerNameRegistered=isLoadBalancerNameRegistered;function parseLoadBalancingConfig(e){const t=Object.keys(e);if(t.length!==1){throw new Error("Provided load balancing config has multiple conflicting entries")}const r=t[0];if(r in s){try{return s[r].LoadBalancingConfig.createFromJson(e[r])}catch(e){throw new Error(`${r}: ${e.message}`)}}else{throw new Error(`Unrecognized load balancing config name ${r}`)}}t.parseLoadBalancingConfig=parseLoadBalancingConfig;function getDefaultConfig(){if(!a){throw new Error("No default load balancer type registered")}return new s[a].LoadBalancingConfig}t.getDefaultConfig=getDefaultConfig;function selectLbConfigFromList(e,t=false){for(const t of e){try{return parseLoadBalancingConfig(t)}catch(e){(0,n.log)(i.LogVerbosity.DEBUG,"Config parsing failed with error",e.message);continue}}if(t){if(a){return new s[a].LoadBalancingConfig}else{return null}}else{return null}}t.selectLbConfigFromList=selectLbConfigFromList},776:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.LoadBalancingCall=void 0;const n=r(878);const i=r(634);const s=r(511);const a=r(3665);const o=r(1611);const l=r(5974);const c=r(5993);const u=r(9129);const d=r(5158);const f="load_balancing_call";class LoadBalancingCall{constructor(e,t,r,n,i,s,a){var o,c;this.channel=e;this.callConfig=t;this.methodName=r;this.host=n;this.credentials=i;this.deadline=s;this.callNumber=a;this.child=null;this.readPending=false;this.pendingMessage=null;this.pendingHalfClose=false;this.ended=false;this.metadata=null;this.listener=null;this.onCallEnded=null;const u=this.methodName.split("/");let d="";if(u.length>=2){d=u[1]}const f=(c=(o=(0,l.splitHostPort)(this.host))===null||o===void 0?void 0:o.host)!==null&&c!==void 0?c:"localhost";this.serviceUrl=`https://${f}/${d}`}trace(e){c.trace(i.LogVerbosity.DEBUG,f,"["+this.callNumber+"] "+e)}outputStatus(e,t){var r,n;if(!this.ended){this.ended=true;this.trace("ended with status: code="+e.code+' details="'+e.details+'"');const i=Object.assign(Object.assign({},e),{progress:t});(r=this.listener)===null||r===void 0?void 0:r.onReceiveStatus(i);(n=this.onCallEnded)===null||n===void 0?void 0:n.call(this,i.code)}}doPick(){var e,t;if(this.ended){return}if(!this.metadata){throw new Error("doPick called before start")}this.trace("Pick called");const r=this.metadata.clone();const l=this.channel.doPick(r,this.callConfig.pickInformation);const c=l.subchannel?"("+l.subchannel.getChannelzRef().id+") "+l.subchannel.getAddress():""+l.subchannel;this.trace("Pick result: "+o.PickResultType[l.pickResultType]+" subchannel: "+c+" status: "+((e=l.status)===null||e===void 0?void 0:e.code)+" "+((t=l.status)===null||t===void 0?void 0:t.details));switch(l.pickResultType){case o.PickResultType.COMPLETE:this.credentials.generateMetadata({service_url:this.serviceUrl}).then((e=>{var t,o,u;if(this.ended){this.trace("Credentials metadata generation finished after call ended");return}r.merge(e);if(r.get("authorization").length>1){this.outputStatus({code:i.Status.INTERNAL,details:'"authorization" metadata cannot have multiple values',metadata:new a.Metadata},"PROCESSED")}if(l.subchannel.getConnectivityState()!==n.ConnectivityState.READY){this.trace("Picked subchannel "+c+" has state "+n.ConnectivityState[l.subchannel.getConnectivityState()]+" after getting credentials metadata. Retrying pick");this.doPick();return}if(this.deadline!==Infinity){r.set("grpc-timeout",(0,s.getDeadlineTimeoutString)(this.deadline))}try{this.child=l.subchannel.getRealSubchannel().createCall(r,this.host,this.methodName,{onReceiveMetadata:e=>{this.trace("Received metadata");this.listener.onReceiveMetadata(e)},onReceiveMessage:e=>{this.trace("Received message");this.listener.onReceiveMessage(e)},onReceiveStatus:e=>{this.trace("Received status");if(e.rstCode===d.constants.NGHTTP2_REFUSED_STREAM){this.outputStatus(e,"REFUSED")}else{this.outputStatus(e,"PROCESSED")}}})}catch(e){this.trace("Failed to start call on picked subchannel "+c+" with error "+e.message);this.outputStatus({code:i.Status.INTERNAL,details:"Failed to start HTTP/2 stream with error "+e.message,metadata:new a.Metadata},"NOT_STARTED");return}(o=(t=this.callConfig).onCommitted)===null||o===void 0?void 0:o.call(t);(u=l.onCallStarted)===null||u===void 0?void 0:u.call(l);this.onCallEnded=l.onCallEnded;this.trace("Created child call ["+this.child.getCallNumber()+"]");if(this.readPending){this.child.startRead()}if(this.pendingMessage){this.child.sendMessageWithContext(this.pendingMessage.context,this.pendingMessage.message)}if(this.pendingHalfClose){this.child.halfClose()}}),(e=>{const{code:t,details:r}=(0,u.restrictControlPlaneStatusCode)(typeof e.code==="number"?e.code:i.Status.UNKNOWN,`Getting metadata from plugin failed with error: ${e.message}`);this.outputStatus({code:t,details:r,metadata:new a.Metadata},"PROCESSED")}));break;case o.PickResultType.DROP:const{code:e,details:t}=(0,u.restrictControlPlaneStatusCode)(l.status.code,l.status.details);setImmediate((()=>{this.outputStatus({code:e,details:t,metadata:l.status.metadata},"DROP")}));break;case o.PickResultType.TRANSIENT_FAILURE:if(this.metadata.getOptions().waitForReady){this.channel.queueCallForPick(this)}else{const{code:e,details:t}=(0,u.restrictControlPlaneStatusCode)(l.status.code,l.status.details);setImmediate((()=>{this.outputStatus({code:e,details:t,metadata:l.status.metadata},"PROCESSED")}))}break;case o.PickResultType.QUEUE:this.channel.queueCallForPick(this)}}cancelWithStatus(e,t){var r;this.trace("cancelWithStatus code: "+e+' details: "'+t+'"');(r=this.child)===null||r===void 0?void 0:r.cancelWithStatus(e,t);this.outputStatus({code:e,details:t,metadata:new a.Metadata},"PROCESSED")}getPeer(){var e,t;return(t=(e=this.child)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:this.channel.getTarget()}start(e,t){this.trace("start called");this.listener=t;this.metadata=e;this.doPick()}sendMessageWithContext(e,t){this.trace("write() called with message of length "+t.length);if(this.child){this.child.sendMessageWithContext(e,t)}else{this.pendingMessage={context:e,message:t}}}startRead(){this.trace("startRead called");if(this.child){this.child.startRead()}else{this.readPending=true}}halfClose(){this.trace("halfClose called");if(this.child){this.child.halfClose()}else{this.pendingHalfClose=true}}setCredentials(e){throw new Error("Method not implemented.")}getCallNumber(){return this.callNumber}}t.LoadBalancingCall=LoadBalancingCall},5993:(e,t,r)=>{var n,i,s,a;Object.defineProperty(t,"__esModule",{value:true});t.isTracerEnabled=t.trace=t.log=t.setLoggerVerbosity=t.setLogger=t.getLogger=void 0;const o=r(634);const l=r(7282);const c=r(6569).i8;const u={error:(e,...t)=>{console.error("E "+e,...t)},info:(e,...t)=>{console.error("I "+e,...t)},debug:(e,...t)=>{console.error("D "+e,...t)}};let d=u;let f=o.LogVerbosity.ERROR;const h=(i=(n=process.env.GRPC_NODE_VERBOSITY)!==null&&n!==void 0?n:process.env.GRPC_VERBOSITY)!==null&&i!==void 0?i:"";switch(h.toUpperCase()){case"DEBUG":f=o.LogVerbosity.DEBUG;break;case"INFO":f=o.LogVerbosity.INFO;break;case"ERROR":f=o.LogVerbosity.ERROR;break;case"NONE":f=o.LogVerbosity.NONE;break;default:}const getLogger=()=>d;t.getLogger=getLogger;const setLogger=e=>{d=e};t.setLogger=setLogger;const setLoggerVerbosity=e=>{f=e};t.setLoggerVerbosity=setLoggerVerbosity;const log=(e,...t)=>{let r;if(e>=f){switch(e){case o.LogVerbosity.DEBUG:r=d.debug;break;case o.LogVerbosity.INFO:r=d.info;break;case o.LogVerbosity.ERROR:r=d.error;break}if(!r){r=d.error}if(r){r.bind(d)(...t)}}};t.log=log;const p=(a=(s=process.env.GRPC_NODE_TRACE)!==null&&s!==void 0?s:process.env.GRPC_TRACE)!==null&&a!==void 0?a:"";const g=new Set;const m=new Set;for(const e of p.split(",")){if(e.startsWith("-")){m.add(e.substring(1))}else{g.add(e)}}const v=g.has("all");function trace(e,r,n){if(isTracerEnabled(r)){(0,t.log)(e,(new Date).toISOString()+" | v"+c+" "+l.pid+" | "+r+" | "+n)}}t.trace=trace;function isTracerEnabled(e){return!m.has(e)&&(v||g.has(e))}t.isTracerEnabled=isTracerEnabled},8541:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.loadPackageDefinition=t.makeClientConstructor=void 0;const n=r(7172);const i={unary:n.Client.prototype.makeUnaryRequest,server_stream:n.Client.prototype.makeServerStreamRequest,client_stream:n.Client.prototype.makeClientStreamRequest,bidi:n.Client.prototype.makeBidiStreamRequest};function isPrototypePolluted(e){return["__proto__","prototype","constructor"].includes(e)}function makeClientConstructor(e,t,r){if(!r){r={}}class ServiceClientImpl extends n.Client{}Object.keys(e).forEach((t=>{if(isPrototypePolluted(t)){return}const r=e[t];let n;if(typeof t==="string"&&t.charAt(0)==="$"){throw new Error("Method names cannot start with $")}if(r.requestStream){if(r.responseStream){n="bidi"}else{n="client_stream"}}else{if(r.responseStream){n="server_stream"}else{n="unary"}}const s=r.requestSerialize;const a=r.responseDeserialize;const o=partial(i[n],r.path,s,a);ServiceClientImpl.prototype[t]=o;Object.assign(ServiceClientImpl.prototype[t],r);if(r.originalName&&!isPrototypePolluted(r.originalName)){ServiceClientImpl.prototype[r.originalName]=ServiceClientImpl.prototype[t]}}));ServiceClientImpl.service=e;ServiceClientImpl.serviceName=t;return ServiceClientImpl}t.makeClientConstructor=makeClientConstructor;function partial(e,t,r,n){return function(...i){return e.call(this,t,r,n,...i)}}function isProtobufTypeDefinition(e){return"format"in e}function loadPackageDefinition(e){const t={};for(const r in e){if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r];const i=r.split(".");if(i.some((e=>isPrototypePolluted(e)))){continue}const s=i[i.length-1];let a=t;for(const e of i.slice(0,-1)){if(!a[e]){a[e]={}}a=a[e]}if(isProtobufTypeDefinition(n)){a[s]=n}else{a[s]=makeClientConstructor(n,s,{})}}}return t}t.loadPackageDefinition=loadPackageDefinition},659:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.MaxMessageSizeFilterFactory=t.MaxMessageSizeFilter=void 0;const n=r(3392);const i=r(634);const s=r(3665);class MaxMessageSizeFilter extends n.BaseFilter{constructor(e){super();this.maxSendMessageSize=i.DEFAULT_MAX_SEND_MESSAGE_LENGTH;this.maxReceiveMessageSize=i.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;if("grpc.max_send_message_length"in e){this.maxSendMessageSize=e["grpc.max_send_message_length"]}if("grpc.max_receive_message_length"in e){this.maxReceiveMessageSize=e["grpc.max_receive_message_length"]}}async sendMessage(e){if(this.maxSendMessageSize===-1){return e}else{const t=await e;if(t.message.length>this.maxSendMessageSize){throw{code:i.Status.RESOURCE_EXHAUSTED,details:`Sent message larger than max (${t.message.length} vs. ${this.maxSendMessageSize})`,metadata:new s.Metadata}}else{return t}}}async receiveMessage(e){if(this.maxReceiveMessageSize===-1){return e}else{const t=await e;if(t.length>this.maxReceiveMessageSize){throw{code:i.Status.RESOURCE_EXHAUSTED,details:`Received message larger than max (${t.length} vs. ${this.maxReceiveMessageSize})`,metadata:new s.Metadata}}else{return t}}}}t.MaxMessageSizeFilter=MaxMessageSizeFilter;class MaxMessageSizeFilterFactory{constructor(e){this.options=e}createFilter(){return new MaxMessageSizeFilter(this.options)}}t.MaxMessageSizeFilterFactory=MaxMessageSizeFilterFactory},3665:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.Metadata=void 0;const n=r(5993);const i=r(634);const s=r(2336);const a=/^[0-9a-z_.-]+$/;const o=/^[ -~]*$/;function isLegalKey(e){return a.test(e)}function isLegalNonBinaryValue(e){return o.test(e)}function isBinaryKey(e){return e.endsWith("-bin")}function isCustomMetadata(e){return!e.startsWith("grpc-")}function normalizeKey(e){return e.toLowerCase()}function validate(e,t){if(!isLegalKey(e)){throw new Error('Metadata key "'+e+'" contains illegal characters')}if(t!==null&&t!==undefined){if(isBinaryKey(e)){if(!Buffer.isBuffer(t)){throw new Error("keys that end with '-bin' must have Buffer values")}}else{if(Buffer.isBuffer(t)){throw new Error("keys that don't end with '-bin' must have String values")}if(!isLegalNonBinaryValue(t)){throw new Error('Metadata string value "'+t+'" contains illegal characters')}}}}class Metadata{constructor(e={}){this.internalRepr=new Map;this.options=e}set(e,t){e=normalizeKey(e);validate(e,t);this.internalRepr.set(e,[t])}add(e,t){e=normalizeKey(e);validate(e,t);const r=this.internalRepr.get(e);if(r===undefined){this.internalRepr.set(e,[t])}else{r.push(t)}}remove(e){e=normalizeKey(e);this.internalRepr.delete(e)}get(e){e=normalizeKey(e);return this.internalRepr.get(e)||[]}getMap(){const e={};for(const[t,r]of this.internalRepr){if(r.length>0){const n=r[0];e[t]=Buffer.isBuffer(n)?Buffer.from(n):n}}return e}clone(){const e=new Metadata(this.options);const t=e.internalRepr;for(const[e,r]of this.internalRepr){const n=r.map((e=>{if(Buffer.isBuffer(e)){return Buffer.from(e)}else{return e}}));t.set(e,n)}return e}merge(e){for(const[t,r]of e.internalRepr){const e=(this.internalRepr.get(t)||[]).concat(r);this.internalRepr.set(t,e)}}setOptions(e){this.options=e}getOptions(){return this.options}toHttp2Headers(){const e={};for(const[t,r]of this.internalRepr){e[t]=r.map(bufToString)}return e}toJSON(){const e={};for(const[t,r]of this.internalRepr){e[t]=r}return e}static fromHttp2Headers(e){const t=new Metadata;for(const r of Object.keys(e)){if(r.charAt(0)===":"){continue}const a=e[r];try{if(isBinaryKey(r)){if(Array.isArray(a)){a.forEach((e=>{t.add(r,Buffer.from(e,"base64"))}))}else if(a!==undefined){if(isCustomMetadata(r)){a.split(",").forEach((e=>{t.add(r,Buffer.from(e.trim(),"base64"))}))}else{t.add(r,Buffer.from(a,"base64"))}}}else{if(Array.isArray(a)){a.forEach((e=>{t.add(r,e)}))}else if(a!==undefined){t.add(r,a)}}}catch(e){const t=`Failed to add metadata entry ${r}: ${a}. ${(0,s.getErrorMessage)(e)}. For more information see https://github.com/grpc/grpc-node/issues/1173`;(0,n.log)(i.LogVerbosity.ERROR,t)}}return t}}t.Metadata=Metadata;const bufToString=e=>Buffer.isBuffer(e)?e.toString("base64"):e},1611:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.QueuePicker=t.UnavailablePicker=t.PickResultType=void 0;const n=r(3665);const i=r(634);var s;(function(e){e[e["COMPLETE"]=0]="COMPLETE";e[e["QUEUE"]=1]="QUEUE";e[e["TRANSIENT_FAILURE"]=2]="TRANSIENT_FAILURE";e[e["DROP"]=3]="DROP"})(s||(t.PickResultType=s={}));class UnavailablePicker{constructor(e){this.status=Object.assign({code:i.Status.UNAVAILABLE,details:"No connection established",metadata:new n.Metadata},e)}pick(e){return{pickResultType:s.TRANSIENT_FAILURE,subchannel:null,status:this.status,onCallStarted:null,onCallEnded:null}}}t.UnavailablePicker=UnavailablePicker;class QueuePicker{constructor(e,t){this.loadBalancer=e;this.childPicker=t;this.calledExitIdle=false}pick(e){if(!this.calledExitIdle){process.nextTick((()=>{this.loadBalancer.exitIdle()}));this.calledExitIdle=true}if(this.childPicker){return this.childPicker.pick(e)}else{return{pickResultType:s.QUEUE,subchannel:null,status:null,onCallStarted:null,onCallEnded:null}}}}t.QueuePicker=QueuePicker},4886:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.setup=t.DEFAULT_PORT=void 0;const n=r(1594);const i=r(9523);const s=r(3837);const a=r(1761);const o=r(634);const l=r(3665);const c=r(5993);const u=r(634);const d=r(5974);const f=r(1808);const h=r(4186);const p="dns_resolver";function trace(e){c.trace(u.LogVerbosity.DEBUG,p,e)}t.DEFAULT_PORT=443;const g=3e4;const m=s.promisify(i.resolveTxt);const v=s.promisify(i.lookup);class DnsResolver{constructor(e,r,n){var i,s,a;this.target=e;this.listener=r;this.pendingLookupPromise=null;this.pendingTxtPromise=null;this.latestLookupResult=null;this.latestServiceConfig=null;this.latestServiceConfigError=null;this.continueResolving=false;this.isNextResolutionTimerRunning=false;this.isServiceConfigEnabled=true;this.returnedIpResult=false;trace("Resolver constructed for target "+(0,d.uriToString)(e));const c=(0,d.splitHostPort)(e.path);if(c===null){this.ipResult=null;this.dnsHostname=null;this.port=null}else{if((0,f.isIPv4)(c.host)||(0,f.isIPv6)(c.host)){this.ipResult=[{addresses:[{host:c.host,port:(i=c.port)!==null&&i!==void 0?i:t.DEFAULT_PORT}]}];this.dnsHostname=null;this.port=null}else{this.ipResult=null;this.dnsHostname=c.host;this.port=(s=c.port)!==null&&s!==void 0?s:t.DEFAULT_PORT}}this.percentage=Math.random()*100;if(n["grpc.service_config_disable_resolution"]===1){this.isServiceConfigEnabled=false}this.defaultResolutionError={code:o.Status.UNAVAILABLE,details:`Name resolution failed for target ${(0,d.uriToString)(this.target)}`,metadata:new l.Metadata};const u={initialDelay:n["grpc.initial_reconnect_backoff_ms"],maxDelay:n["grpc.max_reconnect_backoff_ms"]};this.backoff=new h.BackoffTimeout((()=>{if(this.continueResolving){this.startResolutionWithBackoff()}}),u);this.backoff.unref();this.minTimeBetweenResolutionsMs=(a=n["grpc.dns_min_time_between_resolutions_ms"])!==null&&a!==void 0?a:g;this.nextResolutionTimer=setTimeout((()=>{}),0);clearTimeout(this.nextResolutionTimer)}startResolution(){if(this.ipResult!==null){if(!this.returnedIpResult){trace("Returning IP address for target "+(0,d.uriToString)(this.target));setImmediate((()=>{this.listener.onSuccessfulResolution(this.ipResult,null,null,null,{})}));this.returnedIpResult=true}this.backoff.stop();this.backoff.reset();this.stopNextResolutionTimer();return}if(this.dnsHostname===null){trace("Failed to parse DNS address "+(0,d.uriToString)(this.target));setImmediate((()=>{this.listener.onError({code:o.Status.UNAVAILABLE,details:`Failed to parse DNS address ${(0,d.uriToString)(this.target)}`,metadata:new l.Metadata})}));this.stopNextResolutionTimer()}else{if(this.pendingLookupPromise!==null){return}trace("Looking up DNS hostname "+this.dnsHostname);this.latestLookupResult=null;const e=this.dnsHostname;this.pendingLookupPromise=v(e,{all:true});this.pendingLookupPromise.then((e=>{if(this.pendingLookupPromise===null){return}this.pendingLookupPromise=null;this.backoff.reset();this.backoff.stop();const t=e.map((e=>({host:e.address,port:+this.port})));this.latestLookupResult=t.map((e=>({addresses:[e]})));const r="["+t.map((e=>e.host+":"+e.port)).join(",")+"]";trace("Resolved addresses for target "+(0,d.uriToString)(this.target)+": "+r);if(this.latestLookupResult.length===0){this.listener.onError(this.defaultResolutionError);return}this.listener.onSuccessfulResolution(this.latestLookupResult,this.latestServiceConfig,this.latestServiceConfigError,null,{})}),(e=>{if(this.pendingLookupPromise===null){return}trace("Resolution error for target "+(0,d.uriToString)(this.target)+": "+e.message);this.pendingLookupPromise=null;this.stopNextResolutionTimer();this.listener.onError(this.defaultResolutionError)}));if(this.isServiceConfigEnabled&&this.pendingTxtPromise===null){this.pendingTxtPromise=m(e);this.pendingTxtPromise.then((e=>{if(this.pendingTxtPromise===null){return}this.pendingTxtPromise=null;try{this.latestServiceConfig=(0,a.extractAndSelectServiceConfig)(e,this.percentage)}catch(e){this.latestServiceConfigError={code:o.Status.UNAVAILABLE,details:`Parsing service config failed with error ${e.message}`,metadata:new l.Metadata}}if(this.latestLookupResult!==null){this.listener.onSuccessfulResolution(this.latestLookupResult,this.latestServiceConfig,this.latestServiceConfigError,null,{})}}),(e=>{}))}}}startNextResolutionTimer(){var e,t;clearTimeout(this.nextResolutionTimer);this.nextResolutionTimer=(t=(e=setTimeout((()=>{this.stopNextResolutionTimer();if(this.continueResolving){this.startResolutionWithBackoff()}}),this.minTimeBetweenResolutionsMs)).unref)===null||t===void 0?void 0:t.call(e);this.isNextResolutionTimerRunning=true}stopNextResolutionTimer(){clearTimeout(this.nextResolutionTimer);this.isNextResolutionTimerRunning=false}startResolutionWithBackoff(){if(this.pendingLookupPromise===null){this.continueResolving=false;this.backoff.runOnce();this.startNextResolutionTimer();this.startResolution()}}updateResolution(){if(this.pendingLookupPromise===null){if(this.isNextResolutionTimerRunning||this.backoff.isRunning()){if(this.isNextResolutionTimerRunning){trace('resolution update delayed by "min time between resolutions" rate limit')}else{trace("resolution update delayed by backoff timer until "+this.backoff.getEndTime().toISOString())}this.continueResolving=true}else{this.startResolutionWithBackoff()}}}destroy(){this.continueResolving=false;this.backoff.reset();this.backoff.stop();this.stopNextResolutionTimer();this.pendingLookupPromise=null;this.pendingTxtPromise=null;this.latestLookupResult=null;this.latestServiceConfig=null;this.latestServiceConfigError=null;this.returnedIpResult=false}static getDefaultAuthority(e){return e.path}}function setup(){(0,n.registerResolver)("dns",DnsResolver);(0,n.registerDefaultScheme)("dns")}t.setup=setup},7902:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.setup=void 0;const n=r(1808);const i=r(634);const s=r(3665);const a=r(1594);const o=r(5974);const l=r(5993);const c="ip_resolver";function trace(e){l.trace(i.LogVerbosity.DEBUG,c,e)}const u="ipv4";const d="ipv6";const f=443;class IpResolver{constructor(e,t,r){var a;this.listener=t;this.endpoints=[];this.error=null;this.hasReturnedResult=false;trace("Resolver constructed for target "+(0,o.uriToString)(e));const l=[];if(!(e.scheme===u||e.scheme===d)){this.error={code:i.Status.UNAVAILABLE,details:`Unrecognized scheme ${e.scheme} in IP resolver`,metadata:new s.Metadata};return}const c=e.path.split(",");for(const t of c){const r=(0,o.splitHostPort)(t);if(r===null){this.error={code:i.Status.UNAVAILABLE,details:`Failed to parse ${e.scheme} address ${t}`,metadata:new s.Metadata};return}if(e.scheme===u&&!(0,n.isIPv4)(r.host)||e.scheme===d&&!(0,n.isIPv6)(r.host)){this.error={code:i.Status.UNAVAILABLE,details:`Failed to parse ${e.scheme} address ${t}`,metadata:new s.Metadata};return}l.push({host:r.host,port:(a=r.port)!==null&&a!==void 0?a:f})}this.endpoints=l.map((e=>({addresses:[e]})));trace("Parsed "+e.scheme+" address list "+l)}updateResolution(){if(!this.hasReturnedResult){this.hasReturnedResult=true;process.nextTick((()=>{if(this.error){this.listener.onError(this.error)}else{this.listener.onSuccessfulResolution(this.endpoints,null,null,null,{})}}))}}destroy(){this.hasReturnedResult=false}static getDefaultAuthority(e){return e.path.split(",")[0]}}function setup(){(0,a.registerResolver)(u,IpResolver);(0,a.registerResolver)(d,IpResolver)}t.setup=setup},5252:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.setup=void 0;const n=r(1594);class UdsResolver{constructor(e,t,r){this.listener=t;this.hasReturnedResult=false;this.endpoints=[];let n;if(e.authority===""){n="/"+e.path}else{n=e.path}this.endpoints=[{addresses:[{path:n}]}]}updateResolution(){if(!this.hasReturnedResult){this.hasReturnedResult=true;process.nextTick(this.listener.onSuccessfulResolution,this.endpoints,null,null,null,{})}}destroy(){}static getDefaultAuthority(e){return"localhost"}}function setup(){(0,n.registerResolver)("unix",UdsResolver)}t.setup=setup},1594:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.mapUriDefaultScheme=t.getDefaultAuthority=t.createResolver=t.registerDefaultScheme=t.registerResolver=void 0;const n=r(5974);const i={};let s=null;function registerResolver(e,t){i[e]=t}t.registerResolver=registerResolver;function registerDefaultScheme(e){s=e}t.registerDefaultScheme=registerDefaultScheme;function createResolver(e,t,r){if(e.scheme!==undefined&&e.scheme in i){return new i[e.scheme](e,t,r)}else{throw new Error(`No resolver could be created for target ${(0,n.uriToString)(e)}`)}}t.createResolver=createResolver;function getDefaultAuthority(e){if(e.scheme!==undefined&&e.scheme in i){return i[e.scheme].getDefaultAuthority(e)}else{throw new Error(`Invalid target ${(0,n.uriToString)(e)}`)}}t.getDefaultAuthority=getDefaultAuthority;function mapUriDefaultScheme(e){if(e.scheme===undefined||!(e.scheme in i)){if(s!==null){return{scheme:s,authority:undefined,path:(0,n.uriToString)(e)}}else{return null}}return e}t.mapUriDefaultScheme=mapUriDefaultScheme},9909:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ResolvingCall=void 0;const n=r(634);const i=r(511);const s=r(3665);const a=r(5993);const o=r(9129);const l="resolving_call";class ResolvingCall{constructor(e,t,r,s,a,o){this.channel=e;this.method=t;this.filterStackFactory=s;this.credentials=a;this.callNumber=o;this.child=null;this.readPending=false;this.pendingMessage=null;this.pendingHalfClose=false;this.ended=false;this.readFilterPending=false;this.writeFilterPending=false;this.pendingChildStatus=null;this.metadata=null;this.listener=null;this.statusWatchers=[];this.deadlineTimer=setTimeout((()=>{}),0);this.filterStack=null;this.deadline=r.deadline;this.host=r.host;if(r.parentCall){if(r.flags&n.Propagate.CANCELLATION){r.parentCall.on("cancelled",(()=>{this.cancelWithStatus(n.Status.CANCELLED,"Cancelled by parent call")}))}if(r.flags&n.Propagate.DEADLINE){this.trace("Propagating deadline from parent: "+r.parentCall.getDeadline());this.deadline=(0,i.minDeadline)(this.deadline,r.parentCall.getDeadline())}}this.trace("Created");this.runDeadlineTimer()}trace(e){a.trace(n.LogVerbosity.DEBUG,l,"["+this.callNumber+"] "+e)}runDeadlineTimer(){clearTimeout(this.deadlineTimer);this.trace("Deadline: "+(0,i.deadlineToString)(this.deadline));const e=(0,i.getRelativeTimeout)(this.deadline);if(e!==Infinity){this.trace("Deadline will be reached in "+e+"ms");const handleDeadline=()=>{this.cancelWithStatus(n.Status.DEADLINE_EXCEEDED,"Deadline exceeded")};if(e<=0){process.nextTick(handleDeadline)}else{this.deadlineTimer=setTimeout(handleDeadline,e)}}}outputStatus(e){if(!this.ended){this.ended=true;if(!this.filterStack){this.filterStack=this.filterStackFactory.createFilter()}clearTimeout(this.deadlineTimer);const t=this.filterStack.receiveTrailers(e);this.trace("ended with status: code="+t.code+' details="'+t.details+'"');this.statusWatchers.forEach((e=>e(t)));process.nextTick((()=>{var e;(e=this.listener)===null||e===void 0?void 0:e.onReceiveStatus(t)}))}}sendMessageOnChild(e,t){if(!this.child){throw new Error("sendMessageonChild called with child not populated")}const r=this.child;this.writeFilterPending=true;this.filterStack.sendMessage(Promise.resolve({message:t,flags:e.flags})).then((t=>{this.writeFilterPending=false;r.sendMessageWithContext(e,t.message);if(this.pendingHalfClose){r.halfClose()}}),(e=>{this.cancelWithStatus(e.code,e.details)}))}getConfig(){if(this.ended){return}if(!this.metadata||!this.listener){throw new Error("getConfig called before start")}const e=this.channel.getConfig(this.method,this.metadata);if(e.type==="NONE"){this.channel.queueCallForConfig(this);return}else if(e.type==="ERROR"){if(this.metadata.getOptions().waitForReady){this.channel.queueCallForConfig(this)}else{this.outputStatus(e.error)}return}const t=e.config;if(t.status!==n.Status.OK){const{code:e,details:r}=(0,o.restrictControlPlaneStatusCode)(t.status,"Failed to route call to method "+this.method);this.outputStatus({code:e,details:r,metadata:new s.Metadata});return}if(t.methodConfig.timeout){const e=new Date;e.setSeconds(e.getSeconds()+t.methodConfig.timeout.seconds);e.setMilliseconds(e.getMilliseconds()+t.methodConfig.timeout.nanos/1e6);this.deadline=(0,i.minDeadline)(this.deadline,e);this.runDeadlineTimer()}this.filterStackFactory.push(t.dynamicFilterFactories);this.filterStack=this.filterStackFactory.createFilter();this.filterStack.sendMetadata(Promise.resolve(this.metadata)).then((e=>{this.child=this.channel.createInnerCall(t,this.method,this.host,this.credentials,this.deadline);this.trace("Created child ["+this.child.getCallNumber()+"]");this.child.start(e,{onReceiveMetadata:e=>{this.trace("Received metadata");this.listener.onReceiveMetadata(this.filterStack.receiveMetadata(e))},onReceiveMessage:e=>{this.trace("Received message");this.readFilterPending=true;this.filterStack.receiveMessage(e).then((e=>{this.trace("Finished filtering received message");this.readFilterPending=false;this.listener.onReceiveMessage(e);if(this.pendingChildStatus){this.outputStatus(this.pendingChildStatus)}}),(e=>{this.cancelWithStatus(e.code,e.details)}))},onReceiveStatus:e=>{this.trace("Received status");if(this.readFilterPending){this.pendingChildStatus=e}else{this.outputStatus(e)}}});if(this.readPending){this.child.startRead()}if(this.pendingMessage){this.sendMessageOnChild(this.pendingMessage.context,this.pendingMessage.message)}else if(this.pendingHalfClose){this.child.halfClose()}}),(e=>{this.outputStatus(e)}))}reportResolverError(e){var t;if((t=this.metadata)===null||t===void 0?void 0:t.getOptions().waitForReady){this.channel.queueCallForConfig(this)}else{this.outputStatus(e)}}cancelWithStatus(e,t){var r;this.trace("cancelWithStatus code: "+e+' details: "'+t+'"');(r=this.child)===null||r===void 0?void 0:r.cancelWithStatus(e,t);this.outputStatus({code:e,details:t,metadata:new s.Metadata})}getPeer(){var e,t;return(t=(e=this.child)===null||e===void 0?void 0:e.getPeer())!==null&&t!==void 0?t:this.channel.getTarget()}start(e,t){this.trace("start called");this.metadata=e.clone();this.listener=t;this.getConfig()}sendMessageWithContext(e,t){this.trace("write() called with message of length "+t.length);if(this.child){this.sendMessageOnChild(e,t)}else{this.pendingMessage={context:e,message:t}}}startRead(){this.trace("startRead called");if(this.child){this.child.startRead()}else{this.readPending=true}}halfClose(){this.trace("halfClose called");if(this.child&&!this.writeFilterPending){this.child.halfClose()}else{this.pendingHalfClose=true}}setCredentials(e){this.credentials=this.credentials.compose(e)}addStatusWatcher(e){this.statusWatchers.push(e)}getCallNumber(){return this.callNumber}}t.ResolvingCall=ResolvingCall},9192:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ResolvingLoadBalancer=void 0;const n=r(2680);const i=r(1761);const s=r(878);const a=r(1594);const o=r(1611);const l=r(4186);const c=r(634);const u=r(3665);const d=r(5993);const f=r(634);const h=r(5974);const p=r(7559);const g="resolving_load_balancer";function trace(e){d.trace(f.LogVerbosity.DEBUG,g,e)}const m=["SERVICE_AND_METHOD","SERVICE","EMPTY"];function hasMatchingName(e,t,r,n){for(const i of r.name){switch(n){case"EMPTY":if(!i.service&&!i.method){return true}break;case"SERVICE":if(i.service===e&&!i.method){return true}break;case"SERVICE_AND_METHOD":if(i.service===e&&i.method===t){return true}}}return false}function findMatchingConfig(e,t,r,n){for(const i of r){if(hasMatchingName(e,t,i,n)){return i}}return null}function getDefaultConfigSelector(e){return function defaultConfigSelector(t,r){var n,i;const s=t.split("/").filter((e=>e.length>0));const a=(n=s[0])!==null&&n!==void 0?n:"";const o=(i=s[1])!==null&&i!==void 0?i:"";if(e&&e.methodConfig){for(const t of m){const r=findMatchingConfig(a,o,e.methodConfig,t);if(r){return{methodConfig:r,pickInformation:{},status:c.Status.OK,dynamicFilterFactories:[]}}}}return{methodConfig:{name:[]},pickInformation:{},status:c.Status.OK,dynamicFilterFactories:[]}}}class ResolvingLoadBalancer{constructor(e,t,r,d,f){this.target=e;this.channelControlHelper=t;this.onSuccessfulResolution=d;this.onFailedResolution=f;this.latestChildState=s.ConnectivityState.IDLE;this.latestChildPicker=new o.QueuePicker(this);this.currentState=s.ConnectivityState.IDLE;this.previousServiceConfig=null;this.continueResolving=false;if(r["grpc.service_config"]){this.defaultServiceConfig=(0,i.validateServiceConfig)(JSON.parse(r["grpc.service_config"]))}else{this.defaultServiceConfig={loadBalancingConfig:[],methodConfig:[]}}this.updateState(s.ConnectivityState.IDLE,new o.QueuePicker(this));this.childLoadBalancer=new p.ChildLoadBalancerHandler({createSubchannel:t.createSubchannel.bind(t),requestReresolution:()=>{if(this.backoffTimeout.isRunning()){trace("requestReresolution delayed by backoff timer until "+this.backoffTimeout.getEndTime().toISOString());this.continueResolving=true}else{this.updateResolution()}},updateState:(e,t)=>{this.latestChildState=e;this.latestChildPicker=t;this.updateState(e,t)},addChannelzChild:t.addChannelzChild.bind(t),removeChannelzChild:t.removeChannelzChild.bind(t)},r);this.innerResolver=(0,a.createResolver)(e,{onSuccessfulResolution:(e,t,r,i,s)=>{var a;this.backoffTimeout.stop();this.backoffTimeout.reset();let o=null;if(t===null){if(r===null){this.previousServiceConfig=null;o=this.defaultServiceConfig}else{if(this.previousServiceConfig===null){this.handleResolutionFailure(r)}else{o=this.previousServiceConfig}}}else{o=t;this.previousServiceConfig=t}const l=(a=o===null||o===void 0?void 0:o.loadBalancingConfig)!==null&&a!==void 0?a:[];const d=(0,n.selectLbConfigFromList)(l,true);if(d===null){this.handleResolutionFailure({code:c.Status.UNAVAILABLE,details:"All load balancer options in service config are not compatible",metadata:new u.Metadata});return}this.childLoadBalancer.updateAddressList(e,d,s);const f=o!==null&&o!==void 0?o:this.defaultServiceConfig;this.onSuccessfulResolution(f,i!==null&&i!==void 0?i:getDefaultConfigSelector(f))},onError:e=>{this.handleResolutionFailure(e)}},r);const h={initialDelay:r["grpc.initial_reconnect_backoff_ms"],maxDelay:r["grpc.max_reconnect_backoff_ms"]};this.backoffTimeout=new l.BackoffTimeout((()=>{if(this.continueResolving){this.updateResolution();this.continueResolving=false}else{this.updateState(this.latestChildState,this.latestChildPicker)}}),h);this.backoffTimeout.unref()}updateResolution(){this.innerResolver.updateResolution();if(this.currentState===s.ConnectivityState.IDLE){this.updateState(s.ConnectivityState.CONNECTING,this.latestChildPicker)}this.backoffTimeout.runOnce()}updateState(e,t){trace((0,h.uriToString)(this.target)+" "+s.ConnectivityState[this.currentState]+" -> "+s.ConnectivityState[e]);if(e===s.ConnectivityState.IDLE){t=new o.QueuePicker(this,t)}this.currentState=e;this.channelControlHelper.updateState(e,t)}handleResolutionFailure(e){if(this.latestChildState===s.ConnectivityState.IDLE){this.updateState(s.ConnectivityState.TRANSIENT_FAILURE,new o.UnavailablePicker(e));this.onFailedResolution(e)}}exitIdle(){if(this.currentState===s.ConnectivityState.IDLE||this.currentState===s.ConnectivityState.TRANSIENT_FAILURE){if(this.backoffTimeout.isRunning()){this.continueResolving=true}else{this.updateResolution()}}this.childLoadBalancer.exitIdle()}updateAddressList(e,t){throw new Error("updateAddressList not supported on ResolvingLoadBalancer")}resetBackoff(){this.backoffTimeout.reset();this.childLoadBalancer.resetBackoff()}destroy(){this.childLoadBalancer.destroy();this.innerResolver.destroy();this.backoffTimeout.reset();this.backoffTimeout.stop();this.latestChildState=s.ConnectivityState.IDLE;this.latestChildPicker=new o.QueuePicker(this);this.currentState=s.ConnectivityState.IDLE;this.previousServiceConfig=null;this.continueResolving=false}getTypeName(){return"resolving_load_balancer"}}t.ResolvingLoadBalancer=ResolvingLoadBalancer},8159:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.RetryingCall=t.MessageBufferTracker=t.RetryThrottler=void 0;const n=r(634);const i=r(3665);const s=r(5993);const a="retrying_call";class RetryThrottler{constructor(e,t,r){this.maxTokens=e;this.tokenRatio=t;if(r){this.tokens=r.tokens*(e/r.maxTokens)}else{this.tokens=e}}addCallSucceeded(){this.tokens=Math.max(this.tokens+this.tokenRatio,this.maxTokens)}addCallFailed(){this.tokens=Math.min(this.tokens-1,0)}canRetryCall(){return this.tokens>this.maxTokens/2}}t.RetryThrottler=RetryThrottler;class MessageBufferTracker{constructor(e,t){this.totalLimit=e;this.limitPerCall=t;this.totalAllocated=0;this.allocatedPerCall=new Map}allocate(e,t){var r;const n=(r=this.allocatedPerCall.get(t))!==null&&r!==void 0?r:0;if(this.limitPerCall-n total allocated ${this.totalAllocated}`)}this.totalAllocated-=e;const n=(r=this.allocatedPerCall.get(t))!==null&&r!==void 0?r:0;if(n allocated for call ${n}`)}this.allocatedPerCall.set(t,n-e)}freeAll(e){var t;const r=(t=this.allocatedPerCall.get(e))!==null&&t!==void 0?t:0;if(this.totalAllocated total allocated ${this.totalAllocated}`)}this.totalAllocated-=r;this.allocatedPerCall.delete(e)}}t.MessageBufferTracker=MessageBufferTracker;const o="grpc-previous-rpc-attempts";class RetryingCall{constructor(e,t,r,n,i,s,a,o,l){this.channel=e;this.callConfig=t;this.methodName=r;this.host=n;this.credentials=i;this.deadline=s;this.callNumber=a;this.bufferTracker=o;this.retryThrottler=l;this.listener=null;this.initialMetadata=null;this.underlyingCalls=[];this.writeBuffer=[];this.writeBufferOffset=0;this.readStarted=false;this.transparentRetryUsed=false;this.attempts=0;this.hedgingTimer=null;this.committedCallIndex=null;this.initialRetryBackoffSec=0;this.nextRetryBackoffSec=0;if(t.methodConfig.retryPolicy){this.state="RETRY";const e=t.methodConfig.retryPolicy;this.nextRetryBackoffSec=this.initialRetryBackoffSec=Number(e.initialBackoff.substring(0,e.initialBackoff.length-1))}else if(t.methodConfig.hedgingPolicy){this.state="HEDGING"}else{this.state="TRANSPARENT_ONLY"}}getCallNumber(){return this.callNumber}trace(e){s.trace(n.LogVerbosity.DEBUG,a,"["+this.callNumber+"] "+e)}reportStatus(e){this.trace("ended with status: code="+e.code+' details="'+e.details+'"');this.bufferTracker.freeAll(this.callNumber);this.writeBufferOffset=this.writeBufferOffset+this.writeBuffer.length;this.writeBuffer=[];process.nextTick((()=>{var t;(t=this.listener)===null||t===void 0?void 0:t.onReceiveStatus({code:e.code,details:e.details,metadata:e.metadata})}))}cancelWithStatus(e,t){this.trace("cancelWithStatus code: "+e+' details: "'+t+'"');this.reportStatus({code:e,details:t,metadata:new i.Metadata});for(const{call:r}of this.underlyingCalls){r.cancelWithStatus(e,t)}}getPeer(){if(this.committedCallIndex!==null){return this.underlyingCalls[this.committedCallIndex].call.getPeer()}else{return"unknown"}}getBufferEntry(e){var t;return(t=this.writeBuffer[e-this.writeBufferOffset])!==null&&t!==void 0?t:{entryType:"FREED",allocated:false}}getNextBufferIndex(){return this.writeBufferOffset+this.writeBuffer.length}clearSentMessages(){if(this.state!=="COMMITTED"){return}const e=this.underlyingCalls[this.committedCallIndex].nextMessageToSend;for(let t=this.writeBufferOffset;te){e=n.nextMessageToSend;t=r}}if(t===-1){this.state="TRANSPARENT_ONLY"}else{this.commitCall(t)}}isStatusCodeInList(e,t){return e.some((e=>e===t||e.toString().toLowerCase()===n.Status[t].toLowerCase()))}getNextRetryBackoffMs(){var e;const t=(e=this.callConfig)===null||e===void 0?void 0:e.methodConfig.retryPolicy;if(!t){return 0}const r=Math.random()*this.nextRetryBackoffSec*1e3;const n=Number(t.maxBackoff.substring(0,t.maxBackoff.length-1));this.nextRetryBackoffSec=Math.min(this.nextRetryBackoffSec*t.backoffMultiplier,n);return r}maybeRetryCall(e,t){if(this.state!=="RETRY"){t(false);return}const r=this.callConfig.methodConfig.retryPolicy;if(this.attempts>=Math.min(r.maxAttempts,5)){t(false);return}let n;if(e===null){n=this.getNextRetryBackoffMs()}else if(e<0){this.state="TRANSPARENT_ONLY";t(false);return}else{n=e;this.nextRetryBackoffSec=this.initialRetryBackoffSec}setTimeout((()=>{var e,r;if(this.state!=="RETRY"){t(false);return}if((r=(e=this.retryThrottler)===null||e===void 0?void 0:e.canRetryCall())!==null&&r!==void 0?r:true){t(true);this.attempts+=1;this.startNewAttempt()}}),n)}countActiveCalls(){let e=0;for(const t of this.underlyingCalls){if((t===null||t===void 0?void 0:t.state)==="ACTIVE"){e+=1}}return e}handleProcessedStatus(e,t,r){var n,i,s;switch(this.state){case"COMMITTED":case"TRANSPARENT_ONLY":this.commitCall(t);this.reportStatus(e);break;case"HEDGING":if(this.isStatusCodeInList((n=this.callConfig.methodConfig.hedgingPolicy.nonFatalStatusCodes)!==null&&n!==void 0?n:[],e.code)){(i=this.retryThrottler)===null||i===void 0?void 0:i.addCallFailed();let n;if(r===null){n=0}else if(r<0){this.state="TRANSPARENT_ONLY";this.commitCall(t);this.reportStatus(e);return}else{n=r}setTimeout((()=>{this.maybeStartHedgingAttempt();if(this.countActiveCalls()===0){this.commitCall(t);this.reportStatus(e)}}),n)}else{this.commitCall(t);this.reportStatus(e)}break;case"RETRY":if(this.isStatusCodeInList(this.callConfig.methodConfig.retryPolicy.retryableStatusCodes,e.code)){(s=this.retryThrottler)===null||s===void 0?void 0:s.addCallFailed();this.maybeRetryCall(r,(r=>{if(!r){this.commitCall(t);this.reportStatus(e)}}))}else{this.commitCall(t);this.reportStatus(e)}break}}getPushback(e){const t=e.get("grpc-retry-pushback-ms");if(t.length===0){return null}try{return parseInt(t[0])}catch(e){return-1}}handleChildStatus(e,t){var r;if(this.underlyingCalls[t].state==="COMPLETED"){return}this.trace("state="+this.state+" handling status with progress "+e.progress+" from child ["+this.underlyingCalls[t].call.getCallNumber()+"] in state "+this.underlyingCalls[t].state);this.underlyingCalls[t].state="COMPLETED";if(e.code===n.Status.OK){(r=this.retryThrottler)===null||r===void 0?void 0:r.addCallSucceeded();this.commitCall(t);this.reportStatus(e);return}if(this.state==="COMMITTED"){this.reportStatus(e);return}const i=this.getPushback(e.metadata);switch(e.progress){case"NOT_STARTED":this.startNewAttempt();break;case"REFUSED":if(this.transparentRetryUsed){this.handleProcessedStatus(e,t,i)}else{this.transparentRetryUsed=true;this.startNewAttempt()}break;case"DROP":this.commitCall(t);this.reportStatus(e);break;case"PROCESSED":this.handleProcessedStatus(e,t,i);break}}maybeStartHedgingAttempt(){if(this.state!=="HEDGING"){return}if(!this.callConfig.methodConfig.hedgingPolicy){return}const e=this.callConfig.methodConfig.hedgingPolicy;if(this.attempts>=Math.min(e.maxAttempts,5)){return}this.attempts+=1;this.startNewAttempt();this.maybeStartHedgingTimer()}maybeStartHedgingTimer(){var e,t,r;if(this.hedgingTimer){clearTimeout(this.hedgingTimer)}if(this.state!=="HEDGING"){return}if(!this.callConfig.methodConfig.hedgingPolicy){return}const n=this.callConfig.methodConfig.hedgingPolicy;if(this.attempts>=Math.min(n.maxAttempts,5)){return}const i=(e=n.hedgingDelay)!==null&&e!==void 0?e:"0s";const s=Number(i.substring(0,i.length-1));this.hedgingTimer=setTimeout((()=>{this.maybeStartHedgingAttempt()}),s*1e3);(r=(t=this.hedgingTimer).unref)===null||r===void 0?void 0:r.call(t)}startNewAttempt(){const e=this.channel.createLoadBalancingCall(this.callConfig,this.methodName,this.host,this.credentials,this.deadline);this.trace("Created child call ["+e.getCallNumber()+"] for attempt "+this.attempts);const t=this.underlyingCalls.length;this.underlyingCalls.push({state:"ACTIVE",call:e,nextMessageToSend:0});const r=this.attempts-1;const n=this.initialMetadata.clone();if(r>0){n.set(o,`${r}`)}let i=false;e.start(n,{onReceiveMetadata:n=>{this.trace("Received metadata from child ["+e.getCallNumber()+"]");this.commitCall(t);i=true;if(r>0){n.set(o,`${r}`)}if(this.underlyingCalls[t].state==="ACTIVE"){this.listener.onReceiveMetadata(n)}},onReceiveMessage:r=>{this.trace("Received message from child ["+e.getCallNumber()+"]");this.commitCall(t);if(this.underlyingCalls[t].state==="ACTIVE"){this.listener.onReceiveMessage(r)}},onReceiveStatus:n=>{this.trace("Received status from child ["+e.getCallNumber()+"]");if(!i&&r>0){n.metadata.set(o,`${r}`)}this.handleChildStatus(n,t)}});this.sendNextChildMessage(t);if(this.readStarted){e.startRead()}}start(e,t){this.trace("start called");this.listener=t;this.initialMetadata=e;this.attempts+=1;this.startNewAttempt();this.maybeStartHedgingTimer()}handleChildWriteCompleted(e){var t,r;const n=this.underlyingCalls[e];const i=n.nextMessageToSend;(r=(t=this.getBufferEntry(i)).callback)===null||r===void 0?void 0:r.call(t);this.clearSentMessages();n.nextMessageToSend+=1;this.sendNextChildMessage(e)}sendNextChildMessage(e){const t=this.underlyingCalls[e];if(t.state==="COMPLETED"){return}if(this.getBufferEntry(t.nextMessageToSend)){const r=this.getBufferEntry(t.nextMessageToSend);switch(r.entryType){case"MESSAGE":t.call.sendMessageWithContext({callback:t=>{this.handleChildWriteCompleted(e)}},r.message.message);break;case"HALF_CLOSE":t.nextMessageToSend+=1;t.call.halfClose();break;case"FREED":break}}}sendMessageWithContext(e,t){var r;this.trace("write() called with message of length "+t.length);const n={message:t,flags:e.flags};const i=this.getNextBufferIndex();const s={entryType:"MESSAGE",message:n,allocated:this.bufferTracker.allocate(t.length,this.callNumber)};this.writeBuffer.push(s);if(s.allocated){(r=e.callback)===null||r===void 0?void 0:r.call(e);for(const[e,r]of this.underlyingCalls.entries()){if(r.state==="ACTIVE"&&r.nextMessageToSend===i){r.call.sendMessageWithContext({callback:t=>{this.handleChildWriteCompleted(e)}},t)}}}else{this.commitCallWithMostMessages();if(this.committedCallIndex===null){return}const r=this.underlyingCalls[this.committedCallIndex];s.callback=e.callback;if(r.state==="ACTIVE"&&r.nextMessageToSend===i){r.call.sendMessageWithContext({callback:e=>{this.handleChildWriteCompleted(this.committedCallIndex)}},t)}}}startRead(){this.trace("startRead called");this.readStarted=true;for(const e of this.underlyingCalls){if((e===null||e===void 0?void 0:e.state)==="ACTIVE"){e.call.startRead()}}}halfClose(){this.trace("halfClose called");const e=this.getNextBufferIndex();this.writeBuffer.push({entryType:"HALF_CLOSE",allocated:false});for(const t of this.underlyingCalls){if((t===null||t===void 0?void 0:t.state)==="ACTIVE"&&t.nextMessageToSend===e){t.nextMessageToSend+=1;t.call.halfClose()}}}setCredentials(e){throw new Error("Method not implemented.")}getMethod(){return this.methodName}getHost(){return this.host}}t.RetryingCall=RetryingCall},2533:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ServerDuplexStreamImpl=t.ServerWritableStreamImpl=t.ServerReadableStreamImpl=t.ServerUnaryCallImpl=t.serverErrorToStatus=void 0;const n=r(2361);const i=r(2781);const s=r(634);const a=r(3665);function serverErrorToStatus(e,t){var r;const n={code:s.Status.UNKNOWN,details:"message"in e?e.message:"Unknown Error",metadata:(r=t!==null&&t!==void 0?t:e.metadata)!==null&&r!==void 0?r:null};if("code"in e&&typeof e.code==="number"&&Number.isInteger(e.code)){n.code=e.code;if("details"in e&&typeof e.details==="string"){n.details=e.details}}return n}t.serverErrorToStatus=serverErrorToStatus;class ServerUnaryCallImpl extends n.EventEmitter{constructor(e,t,r,n){super();this.path=e;this.call=t;this.metadata=r;this.request=n;this.cancelled=false}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}}t.ServerUnaryCallImpl=ServerUnaryCallImpl;class ServerReadableStreamImpl extends i.Readable{constructor(e,t,r){super({objectMode:true});this.path=e;this.call=t;this.metadata=r;this.cancelled=false}_read(e){this.call.startRead()}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}}t.ServerReadableStreamImpl=ServerReadableStreamImpl;class ServerWritableStreamImpl extends i.Writable{constructor(e,t,r,n){super({objectMode:true});this.path=e;this.call=t;this.metadata=r;this.request=n;this.pendingStatus={code:s.Status.OK,details:"OK"};this.cancelled=false;this.trailingMetadata=new a.Metadata;this.on("error",(e=>{this.pendingStatus=serverErrorToStatus(e);this.end()}))}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}_write(e,t,r){this.call.sendMessage(e,r)}_final(e){var t;this.call.sendStatus(Object.assign(Object.assign({},this.pendingStatus),{metadata:(t=this.pendingStatus.metadata)!==null&&t!==void 0?t:this.trailingMetadata}));e(null)}end(e){if(e){this.trailingMetadata=e}return super.end()}}t.ServerWritableStreamImpl=ServerWritableStreamImpl;class ServerDuplexStreamImpl extends i.Duplex{constructor(e,t,r){super({objectMode:true});this.path=e;this.call=t;this.metadata=r;this.pendingStatus={code:s.Status.OK,details:"OK"};this.cancelled=false;this.trailingMetadata=new a.Metadata;this.on("error",(e=>{this.pendingStatus=serverErrorToStatus(e);this.end()}))}getPeer(){return this.call.getPeer()}sendMetadata(e){this.call.sendMetadata(e)}getDeadline(){return this.call.getDeadline()}getPath(){return this.path}_read(e){this.call.startRead()}_write(e,t,r){this.call.sendMessage(e,r)}_final(e){var t;this.call.sendStatus(Object.assign(Object.assign({},this.pendingStatus),{metadata:(t=this.pendingStatus.metadata)!==null&&t!==void 0?t:this.trailingMetadata}));e(null)}end(e){if(e){this.trailingMetadata=e}return super.end()}}t.ServerDuplexStreamImpl=ServerDuplexStreamImpl},3828:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.ServerCredentials=void 0;const n=r(6581);class ServerCredentials{static createInsecure(){return new InsecureServerCredentials}static createSsl(e,t,r=false){var i;if(e!==null&&!Buffer.isBuffer(e)){throw new TypeError("rootCerts must be null or a Buffer")}if(!Array.isArray(t)){throw new TypeError("keyCertPairs must be an array")}if(typeof r!=="boolean"){throw new TypeError("checkClientCertificate must be a boolean")}const s=[];const a=[];for(let e=0;e{Object.defineProperty(t,"__esModule",{value:true});t.getServerInterceptingCall=t.BaseServerInterceptingCall=t.ServerInterceptingCall=t.ResponderBuilder=t.isInterceptingServerListener=t.ServerListenerBuilder=void 0;const n=r(3665);const i=r(634);const s=r(5158);const a=r(2336);const o=r(9796);const l=r(3837);const c=r(6575);const u=r(5993);const d=(0,l.promisify)(o.unzip);const f=(0,l.promisify)(o.inflate);const h="server_call";function trace(e){u.trace(i.LogVerbosity.DEBUG,h,e)}class ServerListenerBuilder{constructor(){this.metadata=undefined;this.message=undefined;this.halfClose=undefined;this.cancel=undefined}withOnReceiveMetadata(e){this.metadata=e;return this}withOnReceiveMessage(e){this.message=e;return this}withOnReceiveHalfClose(e){this.halfClose=e;return this}withOnCancel(e){this.cancel=e;return this}build(){return{onReceiveMetadata:this.metadata,onReceiveMessage:this.message,onReceiveHalfClose:this.halfClose,onCancel:this.cancel}}}t.ServerListenerBuilder=ServerListenerBuilder;function isInterceptingServerListener(e){return e.onReceiveMetadata!==undefined&&e.onReceiveMetadata.length===1}t.isInterceptingServerListener=isInterceptingServerListener;class InterceptingServerListenerImpl{constructor(e,t){this.listener=e;this.nextListener=t;this.cancelled=false;this.processingMetadata=false;this.hasPendingMessage=false;this.pendingMessage=null;this.processingMessage=false;this.hasPendingHalfClose=false}processPendingMessage(){if(this.hasPendingMessage){this.nextListener.onReceiveMessage(this.pendingMessage);this.pendingMessage=null;this.hasPendingMessage=false}}processPendingHalfClose(){if(this.hasPendingHalfClose){this.nextListener.onReceiveHalfClose();this.hasPendingHalfClose=false}}onReceiveMetadata(e){if(this.cancelled){return}this.processingMetadata=true;this.listener.onReceiveMetadata(e,(e=>{this.processingMetadata=false;if(this.cancelled){return}this.nextListener.onReceiveMetadata(e);this.processPendingMessage();this.processPendingHalfClose()}))}onReceiveMessage(e){if(this.cancelled){return}this.processingMessage=true;this.listener.onReceiveMessage(e,(e=>{this.processingMessage=false;if(this.cancelled){return}if(this.processingMetadata){this.pendingMessage=e;this.hasPendingMessage=true}else{this.nextListener.onReceiveMessage(e);this.processPendingHalfClose()}}))}onReceiveHalfClose(){if(this.cancelled){return}this.listener.onReceiveHalfClose((()=>{if(this.cancelled){return}if(this.processingMetadata||this.processingMessage){this.hasPendingHalfClose=true}else{this.nextListener.onReceiveHalfClose()}}))}onCancel(){this.cancelled=true;this.listener.onCancel();this.nextListener.onCancel()}}class ResponderBuilder{constructor(){this.start=undefined;this.metadata=undefined;this.message=undefined;this.status=undefined}withStart(e){this.start=e;return this}withSendMetadata(e){this.metadata=e;return this}withSendMessage(e){this.message=e;return this}withSendStatus(e){this.status=e;return this}build(){return{start:this.start,sendMetadata:this.metadata,sendMessage:this.message,sendStatus:this.status}}}t.ResponderBuilder=ResponderBuilder;const p={onReceiveMetadata:(e,t)=>{t(e)},onReceiveMessage:(e,t)=>{t(e)},onReceiveHalfClose:e=>{e()},onCancel:()=>{}};const g={start:e=>{e()},sendMetadata:(e,t)=>{t(e)},sendMessage:(e,t)=>{t(e)},sendStatus:(e,t)=>{t(e)}};class ServerInterceptingCall{constructor(e,t){this.nextCall=e;this.processingMetadata=false;this.processingMessage=false;this.pendingMessage=null;this.pendingMessageCallback=null;this.pendingStatus=null;this.responder=Object.assign(Object.assign({},g),t)}processPendingMessage(){if(this.pendingMessageCallback){this.nextCall.sendMessage(this.pendingMessage,this.pendingMessageCallback);this.pendingMessage=null;this.pendingMessageCallback=null}}processPendingStatus(){if(this.pendingStatus){this.nextCall.sendStatus(this.pendingStatus);this.pendingStatus=null}}start(e){this.responder.start((t=>{const r=Object.assign(Object.assign({},p),t);const n=new InterceptingServerListenerImpl(r,e);this.nextCall.start(n)}))}sendMetadata(e){this.processingMetadata=true;this.responder.sendMetadata(e,(e=>{this.processingMetadata=false;this.nextCall.sendMetadata(e);this.processPendingMessage();this.processPendingStatus()}))}sendMessage(e,t){this.processingMessage=true;this.responder.sendMessage(e,(e=>{this.processingMessage=false;if(this.processingMetadata){this.pendingMessage=e;this.pendingMessageCallback=t}else{this.nextCall.sendMessage(e,t)}}))}sendStatus(e){this.responder.sendStatus(e,(e=>{if(this.processingMetadata||this.processingMessage){this.pendingStatus=e}else{this.nextCall.sendStatus(e)}}))}startRead(){this.nextCall.startRead()}getPeer(){return this.nextCall.getPeer()}getDeadline(){return this.nextCall.getDeadline()}}t.ServerInterceptingCall=ServerInterceptingCall;const m="grpc-accept-encoding";const v="grpc-encoding";const y="grpc-message";const b="grpc-status";const S="grpc-timeout";const _=/(\d{1,8})\s*([HMSmun])/;const w={H:36e5,M:6e4,S:1e3,m:1,u:.001,n:1e-6};const C={[m]:"identity,deflate,gzip",[v]:"identity"};const E={[s.constants.HTTP2_HEADER_STATUS]:s.constants.HTTP_STATUS_OK,[s.constants.HTTP2_HEADER_CONTENT_TYPE]:"application/grpc+proto"};const T={waitForTrailers:true};class BaseServerInterceptingCall{constructor(e,t,r,a,o){this.stream=e;this.callEventTracker=r;this.handler=a;this.listener=null;this.deadlineTimer=null;this.deadline=Infinity;this.maxSendMessageSize=i.DEFAULT_MAX_SEND_MESSAGE_LENGTH;this.maxReceiveMessageSize=i.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;this.cancelled=false;this.metadataSent=false;this.wantTrailers=false;this.cancelNotified=false;this.incomingEncoding="identity";this.decoder=new c.StreamDecoder;this.readQueue=[];this.isReadPending=false;this.receivedHalfClose=false;this.streamEnded=false;this.stream.once("error",(e=>{}));this.stream.once("close",(()=>{var e;trace("Request to method "+((e=this.handler)===null||e===void 0?void 0:e.path)+" stream closed with rstCode "+this.stream.rstCode);if(this.callEventTracker&&!this.streamEnded){this.streamEnded=true;this.callEventTracker.onStreamEnd(false);this.callEventTracker.onCallEnd({code:i.Status.CANCELLED,details:"Stream closed before sending status",metadata:null})}this.notifyOnCancel()}));this.stream.on("data",(e=>{this.handleDataFrame(e)}));this.stream.pause();this.stream.on("end",(()=>{this.handleEndEvent()}));if("grpc.max_send_message_length"in o){this.maxSendMessageSize=o["grpc.max_send_message_length"]}if("grpc.max_receive_message_length"in o){this.maxReceiveMessageSize=o["grpc.max_receive_message_length"]}const l=n.Metadata.fromHttp2Headers(t);if(u.isTracerEnabled(h)){trace("Request to "+this.handler.path+" received headers "+JSON.stringify(l.toJSON()))}const d=l.get(S);if(d.length>0){this.handleTimeoutHeader(d[0])}const f=l.get(v);if(f.length>0){this.incomingEncoding=f[0]}l.remove(S);l.remove(v);l.remove(m);l.remove(s.constants.HTTP2_HEADER_ACCEPT_ENCODING);l.remove(s.constants.HTTP2_HEADER_TE);l.remove(s.constants.HTTP2_HEADER_CONTENT_TYPE);this.metadata=l}handleTimeoutHeader(e){const t=e.toString().match(_);if(t===null){const t={code:i.Status.INTERNAL,details:`Invalid ${S} value "${e}"`,metadata:null};process.nextTick((()=>{this.sendStatus(t)}));return}const r=+t[1]*w[t[2]]|0;const n=new Date;this.deadline=n.setMilliseconds(n.getMilliseconds()+r);this.deadlineTimer=setTimeout((()=>{const e={code:i.Status.DEADLINE_EXCEEDED,details:"Deadline exceeded",metadata:null};this.sendStatus(e)}),r)}checkCancelled(){if(!this.cancelled&&(this.stream.destroyed||this.stream.closed)){this.notifyOnCancel();this.cancelled=true}return this.cancelled}notifyOnCancel(){if(this.cancelNotified){return}this.cancelNotified=true;this.cancelled=true;process.nextTick((()=>{var e;(e=this.listener)===null||e===void 0?void 0:e.onCancel()}));if(this.deadlineTimer){clearTimeout(this.deadlineTimer)}this.stream.resume()}maybeSendMetadata(){if(!this.metadataSent){this.sendMetadata(new n.Metadata)}}serializeMessage(e){const t=this.handler.serialize(e);const r=t.byteLength;const n=Buffer.allocUnsafe(r+5);n.writeUInt8(0,0);n.writeUInt32BE(r,1);t.copy(n,5);return n}decompressMessage(e,t){switch(t){case"deflate":return f(e.subarray(5));case"gzip":return d(e.subarray(5));case"identity":return e.subarray(5);default:return Promise.reject({code:i.Status.UNIMPLEMENTED,details:`Received message compressed with unsupported encoding "${t}"`})}}async decompressAndMaybePush(e){if(e.type!=="COMPRESSED"){throw new Error(`Invalid queue entry type: ${e.type}`)}const t=e.compressedMessage.readUInt8(0)===1;const r=t?this.incomingEncoding:"identity";const n=await this.decompressMessage(e.compressedMessage,r);try{e.parsedMessage=this.handler.deserialize(n)}catch(e){this.sendStatus({code:i.Status.INTERNAL,details:`Error deserializing request: ${e.message}`});return}e.type="READABLE";this.maybePushNextMessage()}maybePushNextMessage(){if(this.listener&&this.isReadPending&&this.readQueue.length>0&&this.readQueue[0].type!=="COMPRESSED"){this.isReadPending=false;const e=this.readQueue.shift();if(e.type==="READABLE"){this.listener.onReceiveMessage(e.parsedMessage)}else{this.listener.onReceiveHalfClose()}}}handleDataFrame(e){var t;if(this.checkCancelled()){return}trace("Request to "+this.handler.path+" received data frame of size "+e.length);const r=this.decoder.write(e);for(const e of r){this.stream.pause();if(this.maxReceiveMessageSize!==-1&&e.length-5>this.maxReceiveMessageSize){this.sendStatus({code:i.Status.RESOURCE_EXHAUSTED,details:`Received message larger than max (${e.length-5} vs. ${this.maxReceiveMessageSize})`,metadata:null});return}const r={type:"COMPRESSED",compressedMessage:e,parsedMessage:null};this.readQueue.push(r);this.decompressAndMaybePush(r);(t=this.callEventTracker)===null||t===void 0?void 0:t.addMessageReceived()}}handleEndEvent(){this.readQueue.push({type:"HALF_CLOSE",compressedMessage:null,parsedMessage:null});this.receivedHalfClose=true;this.maybePushNextMessage()}start(e){trace("Request to "+this.handler.path+" start called");if(this.checkCancelled()){return}this.listener=e;e.onReceiveMetadata(this.metadata)}sendMetadata(e){if(this.checkCancelled()){return}if(this.metadataSent){return}this.metadataSent=true;const t=e?e.toHttp2Headers():null;const r=Object.assign(Object.assign(Object.assign({},E),C),t);this.stream.respond(r,T)}sendMessage(e,t){if(this.checkCancelled()){return}let r;try{r=this.serializeMessage(e)}catch(e){this.sendStatus({code:i.Status.INTERNAL,details:`Error serializing response: ${(0,a.getErrorMessage)(e)}`,metadata:null});return}if(this.maxSendMessageSize!==-1&&r.length-5>this.maxSendMessageSize){this.sendStatus({code:i.Status.RESOURCE_EXHAUSTED,details:`Sent message larger than max (${r.length} vs. ${this.maxSendMessageSize})`,metadata:null});return}this.maybeSendMetadata();trace("Request to "+this.handler.path+" sent data frame of size "+r.length);this.stream.write(r,(e=>{var r;if(e){this.sendStatus({code:i.Status.INTERNAL,details:`Error writing message: ${(0,a.getErrorMessage)(e)}`,metadata:null});return}(r=this.callEventTracker)===null||r===void 0?void 0:r.addMessageSent();t()}))}sendStatus(e){var t,r;if(this.checkCancelled()){return}this.notifyOnCancel();trace("Request to method "+((t=this.handler)===null||t===void 0?void 0:t.path)+" ended with status code: "+i.Status[e.code]+" details: "+e.details);if(this.stream.headersSent){if(!this.wantTrailers){this.wantTrailers=true;this.stream.once("wantTrailers",(()=>{var t;if(this.callEventTracker&&!this.streamEnded){this.streamEnded=true;this.callEventTracker.onStreamEnd(true);this.callEventTracker.onCallEnd(e)}const r=Object.assign({[b]:e.code,[y]:encodeURI(e.details)},(t=e.metadata)===null||t===void 0?void 0:t.toHttp2Headers());this.stream.sendTrailers(r)}));this.stream.end()}}else{if(this.callEventTracker&&!this.streamEnded){this.streamEnded=true;this.callEventTracker.onStreamEnd(true);this.callEventTracker.onCallEnd(e)}const t=Object.assign(Object.assign({[b]:e.code,[y]:encodeURI(e.details)},E),(r=e.metadata)===null||r===void 0?void 0:r.toHttp2Headers());this.stream.respond(t,{endStream:true})}}startRead(){trace("Request to "+this.handler.path+" startRead called");if(this.checkCancelled()){return}this.isReadPending=true;if(this.readQueue.length===0){if(!this.receivedHalfClose){this.stream.resume()}}else{this.maybePushNextMessage()}}getPeer(){var e;const t=(e=this.stream.session)===null||e===void 0?void 0:e.socket;if(t===null||t===void 0?void 0:t.remoteAddress){if(t.remotePort){return`${t.remoteAddress}:${t.remotePort}`}else{return t.remoteAddress}}else{return"unknown"}}getDeadline(){return this.deadline}}t.BaseServerInterceptingCall=BaseServerInterceptingCall;function getServerInterceptingCall(e,t,r,n,i,s){const a={path:i.path,requestStream:i.type==="clientStream"||i.type==="bidi",responseStream:i.type==="serverStream"||i.type==="bidi",requestDeserialize:i.deserialize,responseSerialize:i.serialize};const o=new BaseServerInterceptingCall(t,r,n,i,s);return e.reduce(((e,t)=>t(a,e)),o)}t.getServerInterceptingCall=getServerInterceptingCall},3389:function(e,t,r){var n=this&&this.__runInitializers||function(e,t,r){var n=arguments.length>2;for(var i=0;i=0;f--){var h={};for(var p in n)h[p]=p==="access"?{}:n[p];for(var p in n.access)h.access[p]=n.access[p];h.addInitializer=function(e){if(d)throw new TypeError("Cannot add initializers after decoration has completed");s.push(accept(e||null))};var g=(0,r[f])(a==="accessor"?{get:c.get,set:c.set}:c[o],h);if(a==="accessor"){if(g===void 0)continue;if(g===null||typeof g!=="object")throw new TypeError("Object expected");if(u=accept(g.get))c.get=u;if(u=accept(g.set))c.set=u;if(u=accept(g.init))i.unshift(u)}else if(u=accept(g)){if(a==="field")i.unshift(u);else c[o]=u}}if(l)Object.defineProperty(l,n.name,c);d=true};Object.defineProperty(t,"__esModule",{value:true});t.Server=void 0;const s=r(5158);const a=r(3837);const o=r(634);const l=r(2533);const c=r(3828);const u=r(1594);const d=r(5993);const f=r(9905);const h=r(5974);const p=r(9975);const g=r(998);const m=~(1<<31);const v=~(1<<31);const y=2e4;const{HTTP2_HEADER_PATH:b}=s.constants;const S="server";function noop(){}function deprecate(e){return function(t,r){return a.deprecate(t,e)}}function getUnimplementedStatusResponse(e){return{code:o.Status.UNIMPLEMENTED,details:`The server does not implement the method ${e}`}}function getDefaultHandler(e,t){const r=getUnimplementedStatusResponse(t);switch(e){case"unary":return(e,t)=>{t(r,null)};case"clientStream":return(e,t)=>{t(r,null)};case"serverStream":return e=>{e.emit("error",r)};case"bidi":return e=>{e.emit("error",r)};default:throw new Error(`Invalid handlerType ${e}`)}}let _=(()=>{var e;let t=[];let r;return e=class Server{constructor(e){var r,i,s,a,o;this.boundPorts=(n(this,t),new Map);this.http2Servers=new Map;this.handlers=new Map;this.sessions=new Map;this.started=false;this.shutdown=false;this.serverAddressString="null";this.channelzEnabled=true;this.channelzTrace=new p.ChannelzTrace;this.callTracker=new p.ChannelzCallTracker;this.listenerChildrenTracker=new p.ChannelzChildrenTracker;this.sessionChildrenTracker=new p.ChannelzChildrenTracker;this.options=e!==null&&e!==void 0?e:{};if(this.options["grpc.enable_channelz"]===0){this.channelzEnabled=false}this.channelzRef=(0,p.registerChannelzServer)((()=>this.getChannelzInfo()),this.channelzEnabled);if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Server created")}this.maxConnectionAgeMs=(r=this.options["grpc.max_connection_age_ms"])!==null&&r!==void 0?r:m;this.maxConnectionAgeGraceMs=(i=this.options["grpc.max_connection_age_grace_ms"])!==null&&i!==void 0?i:m;this.keepaliveTimeMs=(s=this.options["grpc.keepalive_time_ms"])!==null&&s!==void 0?s:v;this.keepaliveTimeoutMs=(a=this.options["grpc.keepalive_timeout_ms"])!==null&&a!==void 0?a:y;this.commonServerOptions={maxSendHeaderBlockLength:Number.MAX_SAFE_INTEGER};if("grpc-node.max_session_memory"in this.options){this.commonServerOptions.maxSessionMemory=this.options["grpc-node.max_session_memory"]}else{this.commonServerOptions.maxSessionMemory=Number.MAX_SAFE_INTEGER}if("grpc.max_concurrent_streams"in this.options){this.commonServerOptions.settings={maxConcurrentStreams:this.options["grpc.max_concurrent_streams"]}}this.interceptors=(o=this.options.interceptors)!==null&&o!==void 0?o:[];this.trace("Server constructed")}getChannelzInfo(){return{trace:this.channelzTrace,callTracker:this.callTracker,listenerChildren:this.listenerChildrenTracker.getChildLists(),sessionChildren:this.sessionChildrenTracker.getChildLists()}}getChannelzSessionInfoGetter(e){return()=>{var t,r,n;const i=this.sessions.get(e);const s=e.socket;const a=s.remoteAddress?(0,f.stringToSubchannelAddress)(s.remoteAddress,s.remotePort):null;const o=s.localAddress?(0,f.stringToSubchannelAddress)(s.localAddress,s.localPort):null;let l;if(e.encrypted){const e=s;const r=e.getCipher();const n=e.getCertificate();const i=e.getPeerCertificate();l={cipherSuiteStandardName:(t=r.standardName)!==null&&t!==void 0?t:null,cipherSuiteOtherName:r.standardName?null:r.name,localCertificate:n&&"raw"in n?n.raw:null,remoteCertificate:i&&"raw"in i?i.raw:null}}else{l=null}const c={remoteAddress:a,localAddress:o,security:l,remoteName:null,streamsStarted:i.streamTracker.callsStarted,streamsSucceeded:i.streamTracker.callsSucceeded,streamsFailed:i.streamTracker.callsFailed,messagesSent:i.messagesSent,messagesReceived:i.messagesReceived,keepAlivesSent:0,lastLocalStreamCreatedTimestamp:null,lastRemoteStreamCreatedTimestamp:i.streamTracker.lastCallStartedTimestamp,lastMessageSentTimestamp:i.lastMessageSentTimestamp,lastMessageReceivedTimestamp:i.lastMessageReceivedTimestamp,localFlowControlWindow:(r=e.state.localWindowSize)!==null&&r!==void 0?r:null,remoteFlowControlWindow:(n=e.state.remoteWindowSize)!==null&&n!==void 0?n:null};return c}}trace(e){d.trace(o.LogVerbosity.DEBUG,S,"("+this.channelzRef.id+") "+e)}addProtoService(){throw new Error("Not implemented. Use addService() instead")}addService(e,t){if(e===null||typeof e!=="object"||t===null||typeof t!=="object"){throw new Error("addService() requires two objects as arguments")}const r=Object.keys(e);if(r.length===0){throw new Error("Cannot add an empty service to a server")}r.forEach((r=>{const n=e[r];let i;if(n.requestStream){if(n.responseStream){i="bidi"}else{i="clientStream"}}else{if(n.responseStream){i="serverStream"}else{i="unary"}}let s=t[r];let a;if(s===undefined&&typeof n.originalName==="string"){s=t[n.originalName]}if(s!==undefined){a=s.bind(t)}else{a=getDefaultHandler(i,r)}const o=this.register(n.path,a,n.responseSerialize,n.requestDeserialize,i);if(o===false){throw new Error(`Method handler for ${n.path} already provided.`)}}))}removeService(e){if(e===null||typeof e!=="object"){throw new Error("removeService() requires object as argument")}const t=Object.keys(e);t.forEach((t=>{const r=e[t];this.unregister(r.path)}))}bind(e,t){throw new Error("Not implemented. Use bindAsync() instead")}registerListenerToChannelz(e){return(0,p.registerChannelzSocket)((0,f.subchannelAddressToString)(e),(()=>({localAddress:e,remoteAddress:null,security:null,remoteName:null,streamsStarted:0,streamsSucceeded:0,streamsFailed:0,messagesSent:0,messagesReceived:0,keepAlivesSent:0,lastLocalStreamCreatedTimestamp:null,lastRemoteStreamCreatedTimestamp:null,lastMessageSentTimestamp:null,lastMessageReceivedTimestamp:null,localFlowControlWindow:null,remoteFlowControlWindow:null})),this.channelzEnabled)}createHttp2Server(e){let t;if(e._isSecure()){const r=Object.assign(this.commonServerOptions,e._getSettings());r.enableTrace=this.options["grpc-node.tls_enable_trace"]===1;t=s.createSecureServer(r);t.on("secureConnection",(e=>{e.on("error",(e=>{this.trace("An incoming TLS connection closed with error: "+e.message)}))}))}else{t=s.createServer(this.commonServerOptions)}t.setTimeout(0,noop);this._setupHandlers(t);return t}bindOneAddress(e,t){this.trace("Attempting to bind "+(0,f.subchannelAddressToString)(e));const r=this.createHttp2Server(t.credentials);return new Promise(((n,i)=>{const onError=t=>{this.trace("Failed to bind "+(0,f.subchannelAddressToString)(e)+" with error "+t.message);n({port:"port"in e?e.port:1,error:t.message})};r.once("error",onError);r.listen(e,(()=>{const e=r.address();let i;if(typeof e==="string"){i={path:e}}else{i={host:e.address,port:e.port}}const s=this.registerListenerToChannelz(i);if(this.channelzEnabled){this.listenerChildrenTracker.refChild(s)}this.http2Servers.set(r,{channelzRef:s,sessions:new Set});t.listeningServers.add(r);this.trace("Successfully bound "+(0,f.subchannelAddressToString)(i));n({port:"port"in i?i.port:1});r.removeListener("error",onError)}))}))}async bindManyPorts(e,t){if(e.length===0){return{count:0,port:0,errors:[]}}if((0,f.isTcpSubchannelAddress)(e[0])&&e[0].port===0){const r=await this.bindOneAddress(e[0],t);if(r.error){const n=await this.bindManyPorts(e.slice(1),t);return Object.assign(Object.assign({},n),{errors:[r.error,...n.errors]})}else{const n=e.slice(1).map((e=>(0,f.isTcpSubchannelAddress)(e)?{host:e.host,port:r.port}:e));const i=await Promise.all(n.map((e=>this.bindOneAddress(e,t))));const s=[r,...i];return{count:s.filter((e=>e.error===undefined)).length,port:r.port,errors:s.filter((e=>e.error)).map((e=>e.error))}}}else{const r=await Promise.all(e.map((e=>this.bindOneAddress(e,t))));return{count:r.filter((e=>e.error===undefined)).length,port:r[0].port,errors:r.filter((e=>e.error)).map((e=>e.error))}}}async bindAddressList(e,t){let r;try{r=await this.bindManyPorts(e,t)}catch(e){throw e}if(r.count>0){if(r.count{const n={onSuccessfulResolution:(i,s,a)=>{n.onSuccessfulResolution=()=>{};const o=[].concat(...i.map((e=>e.addresses)));if(o.length===0){r(new Error(`No addresses resolved for port ${e}`));return}t(o)},onError:e=>{r(new Error(e.details))}};const i=(0,u.createResolver)(e,n,this.options);i.updateResolution()}))}async bindPort(e,t){const r=await this.resolvePort(e);if(t.cancelled){this.completeUnbind(t);throw new Error("bindAsync operation cancelled by unbind call")}const n=await this.bindAddressList(r,t);if(t.cancelled){this.completeUnbind(t);throw new Error("bindAsync operation cancelled by unbind call")}return n}normalizePort(e){const t=(0,h.parseUri)(e);if(t===null){throw new Error(`Could not parse port "${e}"`)}const r=(0,u.mapUriDefaultScheme)(t);if(r===null){throw new Error(`Could not get a default scheme for port "${e}"`)}return r}bindAsync(e,t,r){if(this.shutdown){throw new Error("bindAsync called after shutdown")}if(typeof e!=="string"){throw new TypeError("port must be a string")}if(t===null||!(t instanceof c.ServerCredentials)){throw new TypeError("creds must be a ServerCredentials object")}if(typeof r!=="function"){throw new TypeError("callback must be a function")}this.trace("bindAsync port="+e);const n=this.normalizePort(e);const deferredCallback=(e,t)=>{process.nextTick((()=>r(e,t)))};let i=this.boundPorts.get((0,h.uriToString)(n));if(i){if(!t._equals(i.credentials)){deferredCallback(new Error(`${e} already bound with incompatible credentials`),0);return}i.cancelled=false;if(i.completionPromise){i.completionPromise.then((e=>r(null,e)),(e=>r(e,0)))}else{deferredCallback(null,i.portNumber)}return}i={mapKey:(0,h.uriToString)(n),originalUri:n,completionPromise:null,cancelled:false,portNumber:0,credentials:t,listeningServers:new Set};const s=(0,h.splitHostPort)(n.path);const a=this.bindPort(n,i);i.completionPromise=a;if((s===null||s===void 0?void 0:s.port)===0){a.then((e=>{const t={scheme:n.scheme,authority:n.authority,path:(0,h.combineHostPort)({host:s.host,port:e})};i.mapKey=(0,h.uriToString)(t);i.completionPromise=null;i.portNumber=e;this.boundPorts.set(i.mapKey,i);r(null,e)}),(e=>{r(e,0)}))}else{this.boundPorts.set(i.mapKey,i);a.then((e=>{i.completionPromise=null;i.portNumber=e;r(null,e)}),(e=>{r(e,0)}))}}closeServer(e,t){this.trace("Closing server with address "+JSON.stringify(e.address()));const r=this.http2Servers.get(e);e.close((()=>{if(this.channelzEnabled&&r){this.listenerChildrenTracker.unrefChild(r.channelzRef);(0,p.unregisterChannelzRef)(r.channelzRef)}this.http2Servers.delete(e);t===null||t===void 0?void 0:t()}))}closeSession(e,t){var r;this.trace("Closing session initiated by "+((r=e.socket)===null||r===void 0?void 0:r.remoteAddress));const n=this.sessions.get(e);const closeCallback=()=>{if(this.channelzEnabled&&n){this.sessionChildrenTracker.unrefChild(n.ref);(0,p.unregisterChannelzRef)(n.ref)}this.sessions.delete(e);t===null||t===void 0?void 0:t()};if(e.closed){process.nextTick(closeCallback)}else{e.close(closeCallback)}}completeUnbind(e){for(const t of e.listeningServers){const r=this.http2Servers.get(t);this.closeServer(t,(()=>{e.listeningServers.delete(t)}));if(r){for(const e of r.sessions){this.closeSession(e)}}}this.boundPorts.delete(e.mapKey)}unbind(e){this.trace("unbind port="+e);const t=this.normalizePort(e);const r=(0,h.splitHostPort)(t.path);if((r===null||r===void 0?void 0:r.port)===0){throw new Error("Cannot unbind port 0")}const n=this.boundPorts.get((0,h.uriToString)(t));if(n){this.trace("unbinding "+n.mapKey+" originally bound as "+(0,h.uriToString)(n.originalUri));if(n.completionPromise){n.cancelled=true}else{this.completeUnbind(n)}}}drain(e,t){var r,n;this.trace("drain port="+e+" graceTimeMs="+t);const i=this.normalizePort(e);const a=(0,h.splitHostPort)(i.path);if((a===null||a===void 0?void 0:a.port)===0){throw new Error("Cannot drain port 0")}const o=this.boundPorts.get((0,h.uriToString)(i));if(!o){return}const l=new Set;for(const e of o.listeningServers){const t=this.http2Servers.get(e);if(!t){continue}for(const e of t.sessions){l.add(e);this.closeSession(e,(()=>{l.delete(e)}))}}(n=(r=setTimeout((()=>{for(const e of l){e.destroy(s.constants.NGHTTP2_CANCEL)}}),t)).unref)===null||n===void 0?void 0:n.call(r)}forceShutdown(){for(const e of this.boundPorts.values()){e.cancelled=true}this.boundPorts.clear();for(const e of this.http2Servers.keys()){this.closeServer(e)}this.sessions.forEach(((e,t)=>{this.closeSession(t);t.destroy(s.constants.NGHTTP2_CANCEL)}));this.sessions.clear();if(this.channelzEnabled){(0,p.unregisterChannelzRef)(this.channelzRef)}this.shutdown=true}register(e,t,r,n,i){if(this.handlers.has(e)){return false}this.handlers.set(e,{func:t,serialize:r,deserialize:n,type:i,path:e});return true}unregister(e){return this.handlers.delete(e)}start(){if(this.http2Servers.size===0||[...this.http2Servers.keys()].every((e=>!e.listening))){throw new Error("server must be bound in order to start")}if(this.started===true){throw new Error("server is already started")}this.started=true}tryShutdown(e){var t;const wrappedCallback=t=>{if(this.channelzEnabled){(0,p.unregisterChannelzRef)(this.channelzRef)}e(t)};let r=0;function maybeCallback(){r--;if(r===0){wrappedCallback()}}this.shutdown=true;for(const e of this.http2Servers.keys()){r++;const t=this.http2Servers.get(e).channelzRef.name;this.trace("Waiting for server "+t+" to close");this.closeServer(e,(()=>{this.trace("Server "+t+" finished closing");maybeCallback()}))}for(const e of this.sessions.keys()){r++;const n=(t=e.socket)===null||t===void 0?void 0:t.remoteAddress;this.trace("Waiting for session "+n+" to close");this.closeSession(e,(()=>{this.trace("Session "+n+" finished closing");maybeCallback()}))}if(r===0){wrappedCallback()}}addHttp2Port(){throw new Error("Not yet implemented")}getChannelzRef(){return this.channelzRef}_verifyContentType(e,t){const r=t[s.constants.HTTP2_HEADER_CONTENT_TYPE];if(typeof r!=="string"||!r.startsWith("application/grpc")){e.respond({[s.constants.HTTP2_HEADER_STATUS]:s.constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE},{endStream:true});return false}return true}_retrieveHandler(e){this.trace("Received call to method "+e+" at address "+this.serverAddressString);const t=this.handlers.get(e);if(t===undefined){this.trace("No handler registered for method "+e+". Sending UNIMPLEMENTED status.");return null}return t}_respondWithError(e,t,r=null){var n,i;const a=Object.assign({"grpc-status":(n=e.code)!==null&&n!==void 0?n:o.Status.INTERNAL,"grpc-message":e.details,[s.constants.HTTP2_HEADER_STATUS]:s.constants.HTTP_STATUS_OK,[s.constants.HTTP2_HEADER_CONTENT_TYPE]:"application/grpc+proto"},(i=e.metadata)===null||i===void 0?void 0:i.toHttp2Headers());t.respond(a,{endStream:true});if(this.channelzEnabled){this.callTracker.addCallFailed();r===null||r===void 0?void 0:r.streamTracker.addCallFailed()}}_channelzHandler(e,t){const r=this.sessions.get(e.session);this.callTracker.addCallStarted();r===null||r===void 0?void 0:r.streamTracker.addCallStarted();if(!this._verifyContentType(e,t)){this.callTracker.addCallFailed();r===null||r===void 0?void 0:r.streamTracker.addCallFailed();return}const n=t[b];const i=this._retrieveHandler(n);if(!i){this._respondWithError(getUnimplementedStatusResponse(n),e,r);return}let s={addMessageSent:()=>{if(r){r.messagesSent+=1;r.lastMessageSentTimestamp=new Date}},addMessageReceived:()=>{if(r){r.messagesReceived+=1;r.lastMessageReceivedTimestamp=new Date}},onCallEnd:e=>{if(e.code===o.Status.OK){this.callTracker.addCallSucceeded()}else{this.callTracker.addCallFailed()}},onStreamEnd:e=>{if(r){if(e){r.streamTracker.addCallSucceeded()}else{r.streamTracker.addCallFailed()}}}};const a=(0,g.getServerInterceptingCall)(this.interceptors,e,t,s,i,this.options);if(!this._runHandlerForCall(a,i)){this.callTracker.addCallFailed();r===null||r===void 0?void 0:r.streamTracker.addCallFailed();a.sendStatus({code:o.Status.INTERNAL,details:`Unknown handler type: ${i.type}`})}}_streamHandler(e,t){if(this._verifyContentType(e,t)!==true){return}const r=t[b];const n=this._retrieveHandler(r);if(!n){this._respondWithError(getUnimplementedStatusResponse(r),e,null);return}const i=(0,g.getServerInterceptingCall)(this.interceptors,e,t,null,n,this.options);if(!this._runHandlerForCall(i,n)){i.sendStatus({code:o.Status.INTERNAL,details:`Unknown handler type: ${n.type}`})}}_runHandlerForCall(e,t){const{type:r}=t;if(r==="unary"){handleUnary(e,t)}else if(r==="clientStream"){handleClientStreaming(e,t)}else if(r==="serverStream"){handleServerStreaming(e,t)}else if(r==="bidi"){handleBidiStreaming(e,t)}else{return false}return true}_setupHandlers(e){if(e===null){return}const t=e.address();let r="null";if(t){if(typeof t==="string"){r=t}else{r=t.address+":"+t.port}}this.serverAddressString=r;const n=this.channelzEnabled?this._channelzHandler:this._streamHandler;e.on("stream",n.bind(this));e.on("session",(t=>{var r,n,i,a,o,l;const c=(0,p.registerChannelzSocket)((r=t.socket.remoteAddress)!==null&&r!==void 0?r:"unknown",this.getChannelzSessionInfoGetter(t),this.channelzEnabled);const u={ref:c,streamTracker:new p.ChannelzCallTracker,messagesSent:0,messagesReceived:0,lastMessageSentTimestamp:null,lastMessageReceivedTimestamp:null};(n=this.http2Servers.get(e))===null||n===void 0?void 0:n.sessions.add(t);this.sessions.set(t,u);const d=t.socket.remoteAddress;if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Connection established by client "+d);this.sessionChildrenTracker.refChild(c)}let f=null;let h=null;let g=false;if(this.maxConnectionAgeMs!==m){const e=this.maxConnectionAgeMs/10;const r=Math.random()*e*2-e;f=(a=(i=setTimeout((()=>{var e,r;g=true;if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Connection dropped by max connection age from "+d)}try{t.goaway(s.constants.NGHTTP2_NO_ERROR,~(1<<31),Buffer.from("max_age"))}catch(e){t.destroy();return}t.close();if(this.maxConnectionAgeGraceMs!==m){h=(r=(e=setTimeout((()=>{t.destroy()}),this.maxConnectionAgeGraceMs)).unref)===null||r===void 0?void 0:r.call(e)}}),this.maxConnectionAgeMs+r)).unref)===null||a===void 0?void 0:a.call(i)}const v=(l=(o=setInterval((()=>{var e,r;const n=(r=(e=setTimeout((()=>{g=true;if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Connection dropped by keepalive timeout from "+d)}t.close()}),this.keepaliveTimeoutMs)).unref)===null||r===void 0?void 0:r.call(e);try{t.ping(((e,t,r)=>{clearTimeout(n)}))}catch(e){t.destroy()}}),this.keepaliveTimeMs)).unref)===null||l===void 0?void 0:l.call(o);t.on("close",(()=>{var r;if(this.channelzEnabled){if(!g){this.channelzTrace.addTrace("CT_INFO","Connection dropped by client "+d)}this.sessionChildrenTracker.unrefChild(c);(0,p.unregisterChannelzRef)(c)}if(f){clearTimeout(f)}if(h){clearTimeout(h)}if(v){clearTimeout(v)}(r=this.http2Servers.get(e))===null||r===void 0?void 0:r.sessions.delete(t);this.sessions.delete(t)}))}))}},(()=>{const n=typeof Symbol==="function"&&Symbol.metadata?Object.create(null):void 0;r=[deprecate("Calling start() is no longer necessary. It can be safely omitted.")];i(e,null,r,{kind:"method",name:"start",static:false,private:false,access:{has:e=>"start"in e,get:e=>e.start},metadata:n},null,t);if(n)Object.defineProperty(e,Symbol.metadata,{enumerable:true,configurable:true,writable:true,value:n})})(),e})();t.Server=_;async function handleUnary(e,t){let r;function respond(t,r,n,i){if(t){e.sendStatus((0,l.serverErrorToStatus)(t,n));return}e.sendMessage(r,(()=>{e.sendStatus({code:o.Status.OK,details:"OK",metadata:n!==null&&n!==void 0?n:null})}))}let n;let i=null;e.start({onReceiveMetadata(t){n=t;e.startRead()},onReceiveMessage(r){if(i){e.sendStatus({code:o.Status.UNIMPLEMENTED,details:`Received a second request message for server streaming method ${t.path}`,metadata:null});return}i=r;e.startRead()},onReceiveHalfClose(){if(!i){e.sendStatus({code:o.Status.UNIMPLEMENTED,details:`Received no request message for server streaming method ${t.path}`,metadata:null});return}r=new l.ServerWritableStreamImpl(t.path,e,n,i);try{t.func(r,respond)}catch(t){e.sendStatus({code:o.Status.UNKNOWN,details:`Server method handler threw error ${t.message}`,metadata:null})}},onCancel(){if(r){r.cancelled=true;r.emit("cancelled","cancelled")}}})}function handleClientStreaming(e,t){let r;function respond(t,r,n,i){if(t){e.sendStatus((0,l.serverErrorToStatus)(t,n));return}e.sendMessage(r,(()=>{e.sendStatus({code:o.Status.OK,details:"OK",metadata:n!==null&&n!==void 0?n:null})}))}e.start({onReceiveMetadata(n){r=new l.ServerDuplexStreamImpl(t.path,e,n);try{t.func(r,respond)}catch(t){e.sendStatus({code:o.Status.UNKNOWN,details:`Server method handler threw error ${t.message}`,metadata:null})}},onReceiveMessage(e){r.push(e)},onReceiveHalfClose(){r.push(null)},onCancel(){if(r){r.cancelled=true;r.emit("cancelled","cancelled");r.destroy()}}})}function handleServerStreaming(e,t){let r;let n;let i=null;e.start({onReceiveMetadata(t){n=t;e.startRead()},onReceiveMessage(r){if(i){e.sendStatus({code:o.Status.UNIMPLEMENTED,details:`Received a second request message for server streaming method ${t.path}`,metadata:null});return}i=r;e.startRead()},onReceiveHalfClose(){if(!i){e.sendStatus({code:o.Status.UNIMPLEMENTED,details:`Received no request message for server streaming method ${t.path}`,metadata:null});return}r=new l.ServerWritableStreamImpl(t.path,e,n,i);try{t.func(r)}catch(t){e.sendStatus({code:o.Status.UNKNOWN,details:`Server method handler threw error ${t.message}`,metadata:null})}},onCancel(){if(r){r.cancelled=true;r.emit("cancelled","cancelled");r.destroy()}}})}function handleBidiStreaming(e,t){let r;e.start({onReceiveMetadata(n){r=new l.ServerDuplexStreamImpl(t.path,e,n);try{t.func(r)}catch(t){e.sendStatus({code:o.Status.UNKNOWN,details:`Server method handler threw error ${t.message}`,metadata:null})}},onReceiveMessage(e){r.push(e)},onReceiveHalfClose(){r.push(null)},onCancel(){if(r){r.cancelled=true;r.emit("cancelled","cancelled");r.destroy()}}})}},1761:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.extractAndSelectServiceConfig=t.validateServiceConfig=t.validateRetryThrottling=void 0;const n=r(2037);const i=r(634);const s=/^\d+(\.\d{1,9})?s$/;const a="node";function validateName(e){if("service"in e&&e.service!==""){if(typeof e.service!=="string"){throw new Error(`Invalid method config name: invalid service: expected type string, got ${typeof e.service}`)}if("method"in e&&e.method!==""){if(typeof e.method!=="string"){throw new Error(`Invalid method config name: invalid method: expected type string, got ${typeof e.service}`)}return{service:e.service,method:e.method}}else{return{service:e.service}}}else{if("method"in e&&e.method!==undefined){throw new Error(`Invalid method config name: method set with empty or unset service`)}return{}}}function validateRetryPolicy(e){if(!("maxAttempts"in e)||!Number.isInteger(e.maxAttempts)||e.maxAttempts<2){throw new Error("Invalid method config retry policy: maxAttempts must be an integer at least 2")}if(!("initialBackoff"in e)||typeof e.initialBackoff!=="string"||!s.test(e.initialBackoff)){throw new Error("Invalid method config retry policy: initialBackoff must be a string consisting of a positive integer followed by s")}if(!("maxBackoff"in e)||typeof e.maxBackoff!=="string"||!s.test(e.maxBackoff)){throw new Error("Invalid method config retry policy: maxBackoff must be a string consisting of a positive integer followed by s")}if(!("backoffMultiplier"in e)||typeof e.backoffMultiplier!=="number"||e.backoffMultiplier<=0){throw new Error("Invalid method config retry policy: backoffMultiplier must be a number greater than 0")}if(!("retryableStatusCodes"in e&&Array.isArray(e.retryableStatusCodes))){throw new Error("Invalid method config retry policy: retryableStatusCodes is required")}if(e.retryableStatusCodes.length===0){throw new Error("Invalid method config retry policy: retryableStatusCodes must be non-empty")}for(const t of e.retryableStatusCodes){if(typeof t==="number"){if(!Object.values(i.Status).includes(t)){throw new Error("Invalid method config retry policy: retryableStatusCodes value not in status code range")}}else if(typeof t==="string"){if(!Object.values(i.Status).includes(t.toUpperCase())){throw new Error("Invalid method config retry policy: retryableStatusCodes value not a status code name")}}else{throw new Error("Invalid method config retry policy: retryableStatusCodes value must be a string or number")}}return{maxAttempts:e.maxAttempts,initialBackoff:e.initialBackoff,maxBackoff:e.maxBackoff,backoffMultiplier:e.backoffMultiplier,retryableStatusCodes:e.retryableStatusCodes}}function validateHedgingPolicy(e){if(!("maxAttempts"in e)||!Number.isInteger(e.maxAttempts)||e.maxAttempts<2){throw new Error("Invalid method config hedging policy: maxAttempts must be an integer at least 2")}if("hedgingDelay"in e&&(typeof e.hedgingDelay!=="string"||!s.test(e.hedgingDelay))){throw new Error("Invalid method config hedging policy: hedgingDelay must be a string consisting of a positive integer followed by s")}if("nonFatalStatusCodes"in e&&Array.isArray(e.nonFatalStatusCodes)){for(const t of e.nonFatalStatusCodes){if(typeof t==="number"){if(!Object.values(i.Status).includes(t)){throw new Error("Invlid method config hedging policy: nonFatalStatusCodes value not in status code range")}}else if(typeof t==="string"){if(!Object.values(i.Status).includes(t.toUpperCase())){throw new Error("Invlid method config hedging policy: nonFatalStatusCodes value not a status code name")}}else{throw new Error("Invlid method config hedging policy: nonFatalStatusCodes value must be a string or number")}}}const t={maxAttempts:e.maxAttempts};if(e.hedgingDelay){t.hedgingDelay=e.hedgingDelay}if(e.nonFatalStatusCodes){t.nonFatalStatusCodes=e.nonFatalStatusCodes}return t}function validateMethodConfig(e){var t;const r={name:[]};if(!("name"in e)||!Array.isArray(e.name)){throw new Error("Invalid method config: invalid name array")}for(const t of e.name){r.name.push(validateName(t))}if("waitForReady"in e){if(typeof e.waitForReady!=="boolean"){throw new Error("Invalid method config: invalid waitForReady")}r.waitForReady=e.waitForReady}if("timeout"in e){if(typeof e.timeout==="object"){if(!("seconds"in e.timeout)||!(typeof e.timeout.seconds==="number")){throw new Error("Invalid method config: invalid timeout.seconds")}if(!("nanos"in e.timeout)||!(typeof e.timeout.nanos==="number")){throw new Error("Invalid method config: invalid timeout.nanos")}r.timeout=e.timeout}else if(typeof e.timeout==="string"&&s.test(e.timeout)){const n=e.timeout.substring(0,e.timeout.length-1).split(".");r.timeout={seconds:n[0]|0,nanos:((t=n[1])!==null&&t!==void 0?t:0)|0}}else{throw new Error("Invalid method config: invalid timeout")}}if("maxRequestBytes"in e){if(typeof e.maxRequestBytes!=="number"){throw new Error("Invalid method config: invalid maxRequestBytes")}r.maxRequestBytes=e.maxRequestBytes}if("maxResponseBytes"in e){if(typeof e.maxResponseBytes!=="number"){throw new Error("Invalid method config: invalid maxRequestBytes")}r.maxResponseBytes=e.maxResponseBytes}if("retryPolicy"in e){if("hedgingPolicy"in e){throw new Error("Invalid method config: retryPolicy and hedgingPolicy cannot both be specified")}else{r.retryPolicy=validateRetryPolicy(e.retryPolicy)}}else if("hedgingPolicy"in e){r.hedgingPolicy=validateHedgingPolicy(e.hedgingPolicy)}return r}function validateRetryThrottling(e){if(!("maxTokens"in e)||typeof e.maxTokens!=="number"||e.maxTokens<=0||e.maxTokens>1e3){throw new Error("Invalid retryThrottling: maxTokens must be a number in (0, 1000]")}if(!("tokenRatio"in e)||typeof e.tokenRatio!=="number"||e.tokenRatio<=0){throw new Error("Invalid retryThrottling: tokenRatio must be a number greater than 0")}return{maxTokens:+e.maxTokens.toFixed(3),tokenRatio:+e.tokenRatio.toFixed(3)}}t.validateRetryThrottling=validateRetryThrottling;function validateLoadBalancingConfig(e){if(!(typeof e==="object"&&e!==null)){throw new Error(`Invalid loadBalancingConfig: unexpected type ${typeof e}`)}const t=Object.keys(e);if(t.length>1){throw new Error(`Invalid loadBalancingConfig: unexpected multiple keys ${t}`)}if(t.length===0){throw new Error("Invalid loadBalancingConfig: load balancing policy name required")}return{[t[0]]:e[t[0]]}}function validateServiceConfig(e){const t={loadBalancingConfig:[],methodConfig:[]};if("loadBalancingPolicy"in e){if(typeof e.loadBalancingPolicy==="string"){t.loadBalancingPolicy=e.loadBalancingPolicy}else{throw new Error("Invalid service config: invalid loadBalancingPolicy")}}if("loadBalancingConfig"in e){if(Array.isArray(e.loadBalancingConfig)){for(const r of e.loadBalancingConfig){t.loadBalancingConfig.push(validateLoadBalancingConfig(r))}}else{throw new Error("Invalid service config: invalid loadBalancingConfig")}}if("methodConfig"in e){if(Array.isArray(e.methodConfig)){for(const r of e.methodConfig){t.methodConfig.push(validateMethodConfig(r))}}}if("retryThrottling"in e){t.retryThrottling=validateRetryThrottling(e.retryThrottling)}const r=[];for(const e of t.methodConfig){for(const t of e.name){for(const e of r){if(t.service===e.service&&t.method===e.method){throw new Error(`Invalid service config: duplicate name ${t.service}/${t.method}`)}}r.push(t)}}return t}t.validateServiceConfig=validateServiceConfig;function validateCanaryConfig(e){if(!("serviceConfig"in e)){throw new Error("Invalid service config choice: missing service config")}const t={serviceConfig:validateServiceConfig(e.serviceConfig)};if("clientLanguage"in e){if(Array.isArray(e.clientLanguage)){t.clientLanguage=[];for(const r of e.clientLanguage){if(typeof r==="string"){t.clientLanguage.push(r)}else{throw new Error("Invalid service config choice: invalid clientLanguage")}}}else{throw new Error("Invalid service config choice: invalid clientLanguage")}}if("clientHostname"in e){if(Array.isArray(e.clientHostname)){t.clientHostname=[];for(const r of e.clientHostname){if(typeof r==="string"){t.clientHostname.push(r)}else{throw new Error("Invalid service config choice: invalid clientHostname")}}}else{throw new Error("Invalid service config choice: invalid clientHostname")}}if("percentage"in e){if(typeof e.percentage==="number"&&0<=e.percentage&&e.percentage<=100){t.percentage=e.percentage}else{throw new Error("Invalid service config choice: invalid percentage")}}const r=["clientLanguage","percentage","clientHostname","serviceConfig"];for(const t in e){if(!r.includes(t)){throw new Error(`Invalid service config choice: unexpected field ${t}`)}}return t}function validateAndSelectCanaryConfig(e,t){if(!Array.isArray(e)){throw new Error("Invalid service config list")}for(const r of e){const e=validateCanaryConfig(r);if(typeof e.percentage==="number"&&t>e.percentage){continue}if(Array.isArray(e.clientHostname)){let t=false;for(const r of e.clientHostname){if(r===n.hostname()){t=true}}if(!t){continue}}if(Array.isArray(e.clientLanguage)){let t=false;for(const r of e.clientLanguage){if(r===a){t=true}}if(!t){continue}}return e.serviceConfig}throw new Error("No matching service config found")}function extractAndSelectServiceConfig(e,t){for(const r of e){if(r.length>0&&r[0].startsWith("grpc_config=")){const e=r.join("").substring("grpc_config=".length);const n=JSON.parse(e);return validateAndSelectCanaryConfig(n,t)}}return null}t.extractAndSelectServiceConfig=extractAndSelectServiceConfig},3155:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.StatusBuilder=void 0;class StatusBuilder{constructor(){this.code=null;this.details=null;this.metadata=null}withCode(e){this.code=e;return this}withDetails(e){this.details=e;return this}withMetadata(e){this.metadata=e;return this}build(){const e={};if(this.code!==null){e.code=this.code}if(this.details!==null){e.details=this.details}if(this.metadata!==null){e.metadata=this.metadata}return e}}t.StatusBuilder=StatusBuilder},6575:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.StreamDecoder=void 0;var r;(function(e){e[e["NO_DATA"]=0]="NO_DATA";e[e["READING_SIZE"]=1]="READING_SIZE";e[e["READING_MESSAGE"]=2]="READING_MESSAGE"})(r||(r={}));class StreamDecoder{constructor(){this.readState=r.NO_DATA;this.readCompressFlag=Buffer.alloc(1);this.readPartialSize=Buffer.alloc(4);this.readSizeRemaining=4;this.readMessageSize=0;this.readPartialMessage=[];this.readMessageRemaining=0}write(e){let t=0;let n;const i=[];while(t0){this.readState=r.READING_MESSAGE}else{const e=Buffer.concat([this.readCompressFlag,this.readPartialSize],5);this.readState=r.NO_DATA;i.push(e)}}break;case r.READING_MESSAGE:n=Math.min(e.length-t,this.readMessageRemaining);this.readPartialMessage.push(e.slice(t,t+n));this.readMessageRemaining-=n;t+=n;if(this.readMessageRemaining===0){const e=[this.readCompressFlag,this.readPartialSize].concat(this.readPartialMessage);const t=Buffer.concat(e,this.readMessageSize+5);this.readState=r.NO_DATA;i.push(t)}break;default:throw new Error("Unexpected read state")}}return i}}t.StreamDecoder=StreamDecoder},9905:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.EndpointMap=t.endpointHasAddress=t.endpointToString=t.endpointEqual=t.stringToSubchannelAddress=t.subchannelAddressToString=t.subchannelAddressEqual=t.isTcpSubchannelAddress=void 0;const n=r(1808);function isTcpSubchannelAddress(e){return"port"in e}t.isTcpSubchannelAddress=isTcpSubchannelAddress;function subchannelAddressEqual(e,t){if(!e&&!t){return true}if(!e||!t){return false}if(isTcpSubchannelAddress(e)){return isTcpSubchannelAddress(t)&&e.host===t.host&&e.port===t.port}else{return!isTcpSubchannelAddress(t)&&e.path===t.path}}t.subchannelAddressEqual=subchannelAddressEqual;function subchannelAddressToString(e){if(isTcpSubchannelAddress(e)){return e.host+":"+e.port}else{return e.path}}t.subchannelAddressToString=subchannelAddressToString;const i=443;function stringToSubchannelAddress(e,t){if((0,n.isIP)(e)){return{host:e,port:t!==null&&t!==void 0?t:i}}else{return{path:e}}}t.stringToSubchannelAddress=stringToSubchannelAddress;function endpointEqual(e,t){if(e.addresses.length!==t.addresses.length){return false}for(let r=0;r{Object.defineProperty(t,"__esModule",{value:true});t.Http2SubchannelCall=void 0;const n=r(5158);const i=r(2037);const s=r(634);const a=r(3665);const o=r(6575);const l=r(5993);const c=r(634);const u="subchannel_call";function getSystemErrorName(e){for(const[t,r]of Object.entries(i.constants.errno)){if(r===e){return t}}return"Unknown system error "+e}class Http2SubchannelCall{constructor(e,t,r,i,l){this.http2Stream=e;this.callEventTracker=t;this.listener=r;this.transport=i;this.callId=l;this.decoder=new o.StreamDecoder;this.isReadFilterPending=false;this.isPushPending=false;this.canPush=false;this.readsClosed=false;this.statusOutput=false;this.unpushedReadMessages=[];this.mappedStatusCode=s.Status.UNKNOWN;this.finalStatus=null;this.internalError=null;e.on("response",((e,t)=>{let r="";for(const t of Object.keys(e)){r+="\t\t"+t+": "+e[t]+"\n"}this.trace("Received server headers:\n"+r);switch(e[":status"]){case 400:this.mappedStatusCode=s.Status.INTERNAL;break;case 401:this.mappedStatusCode=s.Status.UNAUTHENTICATED;break;case 403:this.mappedStatusCode=s.Status.PERMISSION_DENIED;break;case 404:this.mappedStatusCode=s.Status.UNIMPLEMENTED;break;case 429:case 502:case 503:case 504:this.mappedStatusCode=s.Status.UNAVAILABLE;break;default:this.mappedStatusCode=s.Status.UNKNOWN}if(t&n.constants.NGHTTP2_FLAG_END_STREAM){this.handleTrailers(e)}else{let t;try{t=a.Metadata.fromHttp2Headers(e)}catch(e){this.endCall({code:s.Status.UNKNOWN,details:e.message,metadata:new a.Metadata});return}this.listener.onReceiveMetadata(t)}}));e.on("trailers",(e=>{this.handleTrailers(e)}));e.on("data",(e=>{if(this.statusOutput){return}this.trace("receive HTTP/2 data frame of length "+e.length);const t=this.decoder.write(e);for(const e of t){this.trace("parsed message of length "+e.length);this.callEventTracker.addMessageReceived();this.tryPush(e)}}));e.on("end",(()=>{this.readsClosed=true;this.maybeOutputStatus()}));e.on("close",(()=>{process.nextTick((()=>{var t;this.trace("HTTP/2 stream closed with code "+e.rstCode);if(((t=this.finalStatus)===null||t===void 0?void 0:t.code)===s.Status.OK){return}let r;let i="";switch(e.rstCode){case n.constants.NGHTTP2_NO_ERROR:if(this.finalStatus!==null){return}r=s.Status.INTERNAL;i=`Received RST_STREAM with code ${e.rstCode}`;break;case n.constants.NGHTTP2_REFUSED_STREAM:r=s.Status.UNAVAILABLE;i="Stream refused by server";break;case n.constants.NGHTTP2_CANCEL:r=s.Status.CANCELLED;i="Call cancelled";break;case n.constants.NGHTTP2_ENHANCE_YOUR_CALM:r=s.Status.RESOURCE_EXHAUSTED;i="Bandwidth exhausted or memory limit exceeded";break;case n.constants.NGHTTP2_INADEQUATE_SECURITY:r=s.Status.PERMISSION_DENIED;i="Protocol not secure enough";break;case n.constants.NGHTTP2_INTERNAL_ERROR:r=s.Status.INTERNAL;if(this.internalError===null){i=`Received RST_STREAM with code ${e.rstCode} (Internal server error)`}else{if(this.internalError.code==="ECONNRESET"||this.internalError.code==="ETIMEDOUT"){r=s.Status.UNAVAILABLE;i=this.internalError.message}else{i=`Received RST_STREAM with code ${e.rstCode} triggered by internal client error: ${this.internalError.message}`}}break;default:r=s.Status.INTERNAL;i=`Received RST_STREAM with code ${e.rstCode}`}this.endCall({code:r,details:i,metadata:new a.Metadata,rstCode:e.rstCode})}))}));e.on("error",(e=>{if(e.code!=="ERR_HTTP2_STREAM_ERROR"){this.trace("Node error event: message="+e.message+" code="+e.code+" errno="+getSystemErrorName(e.errno)+" syscall="+e.syscall);this.internalError=e}this.callEventTracker.onStreamEnd(false)}))}onDisconnect(){this.endCall({code:s.Status.UNAVAILABLE,details:"Connection dropped",metadata:new a.Metadata})}outputStatus(){if(!this.statusOutput){this.statusOutput=true;this.trace("ended with status: code="+this.finalStatus.code+' details="'+this.finalStatus.details+'"');this.callEventTracker.onCallEnd(this.finalStatus);process.nextTick((()=>{this.listener.onReceiveStatus(this.finalStatus)}));this.http2Stream.resume()}}trace(e){l.trace(c.LogVerbosity.DEBUG,u,"["+this.callId+"] "+e)}endCall(e){if(this.finalStatus===null||this.finalStatus.code===s.Status.OK){this.finalStatus=e;this.maybeOutputStatus()}this.destroyHttp2Stream()}maybeOutputStatus(){if(this.finalStatus!==null){if(this.finalStatus.code!==s.Status.OK||this.readsClosed&&this.unpushedReadMessages.length===0&&!this.isReadFilterPending&&!this.isPushPending){this.outputStatus()}}}push(e){this.trace("pushing to reader message of length "+(e instanceof Buffer?e.length:null));this.canPush=false;this.isPushPending=true;process.nextTick((()=>{this.isPushPending=false;if(this.statusOutput){return}this.listener.onReceiveMessage(e);this.maybeOutputStatus()}))}tryPush(e){if(this.canPush){this.http2Stream.pause();this.push(e)}else{this.trace("unpushedReadMessages.push message of length "+e.length);this.unpushedReadMessages.push(e)}}handleTrailers(e){this.callEventTracker.onStreamEnd(true);let t="";for(const r of Object.keys(e)){t+="\t\t"+r+": "+e[r]+"\n"}this.trace("Received server trailers:\n"+t);let r;try{r=a.Metadata.fromHttp2Headers(e)}catch(e){r=new a.Metadata}const n=r.getMap();let i=this.mappedStatusCode;if(i===s.Status.UNKNOWN&&typeof n["grpc-status"]==="string"){const e=Number(n["grpc-status"]);if(e in s.Status){i=e;this.trace("received status code "+e+" from server")}r.remove("grpc-status")}let o="";if(typeof n["grpc-message"]==="string"){try{o=decodeURI(n["grpc-message"])}catch(e){o=n["grpc-message"]}r.remove("grpc-message");this.trace('received status details string "'+o+'" from server')}const l={code:i,details:o,metadata:r};this.endCall(l)}destroyHttp2Stream(){var e;if(!this.http2Stream.destroyed){let t;if(((e=this.finalStatus)===null||e===void 0?void 0:e.code)===s.Status.OK){t=n.constants.NGHTTP2_NO_ERROR}else{t=n.constants.NGHTTP2_CANCEL}this.trace("close http2 stream with code "+t);this.http2Stream.close(t)}}cancelWithStatus(e,t){this.trace("cancelWithStatus code: "+e+' details: "'+t+'"');this.endCall({code:e,details:t,metadata:new a.Metadata})}getStatus(){return this.finalStatus}getPeer(){return this.transport.getPeerName()}getCallNumber(){return this.callId}startRead(){if(this.finalStatus!==null&&this.finalStatus.code!==s.Status.OK){this.readsClosed=true;this.maybeOutputStatus();return}this.canPush=true;if(this.unpushedReadMessages.length>0){const e=this.unpushedReadMessages.shift();this.push(e);return}this.http2Stream.resume()}sendMessageWithContext(e,t){this.trace("write() called with message of length "+t.length);const cb=t=>{process.nextTick((()=>{var r;let n=s.Status.UNAVAILABLE;if((t===null||t===void 0?void 0:t.code)==="ERR_STREAM_WRITE_AFTER_END"){n=s.Status.INTERNAL}if(t){this.cancelWithStatus(n,`Write error: ${t.message}`)}(r=e.callback)===null||r===void 0?void 0:r.call(e)}))};this.trace("sending data chunk of length "+t.length);this.callEventTracker.addMessageSent();try{this.http2Stream.write(t,cb)}catch(e){this.endCall({code:s.Status.UNAVAILABLE,details:`Write failed with error ${e.message}`,metadata:new a.Metadata})}}halfClose(){this.trace("end() called");this.trace("calling end() on HTTP/2 stream");this.http2Stream.end()}}t.Http2SubchannelCall=Http2SubchannelCall},2258:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.BaseSubchannelWrapper=void 0;class BaseSubchannelWrapper{constructor(e){this.child=e;this.healthy=true;this.healthListeners=new Set;e.addHealthStateWatcher((e=>{if(this.healthy){this.updateHealthListeners()}}))}updateHealthListeners(){for(const e of this.healthListeners){e(this.isHealthy())}}getConnectivityState(){return this.child.getConnectivityState()}addConnectivityStateListener(e){this.child.addConnectivityStateListener(e)}removeConnectivityStateListener(e){this.child.removeConnectivityStateListener(e)}startConnecting(){this.child.startConnecting()}getAddress(){return this.child.getAddress()}throttleKeepalive(e){this.child.throttleKeepalive(e)}ref(){this.child.ref()}unref(){this.child.unref()}getChannelzRef(){return this.child.getChannelzRef()}isHealthy(){return this.healthy&&this.child.isHealthy()}addHealthStateWatcher(e){this.healthListeners.add(e)}removeHealthStateWatcher(e){this.healthListeners.delete(e)}setHealthy(e){if(e!==this.healthy){this.healthy=e;if(this.child.isHealthy()){this.updateHealthListeners()}}}getRealSubchannel(){return this.child.getRealSubchannel()}realSubchannelEquals(e){return this.getRealSubchannel()===e.getRealSubchannel()}}t.BaseSubchannelWrapper=BaseSubchannelWrapper},9780:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.getSubchannelPool=t.SubchannelPool=void 0;const n=r(9810);const i=r(4764);const s=r(9905);const a=r(5974);const o=r(6690);const l=1e4;class SubchannelPool{constructor(){this.pool=Object.create(null);this.cleanupTimer=null}unrefUnusedSubchannels(){let e=true;for(const t in this.pool){const r=this.pool[t];const n=r.filter((e=>!e.subchannel.unrefIfOneRef()));if(n.length>0){e=false}this.pool[t]=n}if(e&&this.cleanupTimer!==null){clearInterval(this.cleanupTimer);this.cleanupTimer=null}}ensureCleanupTask(){var e,t;if(this.cleanupTimer===null){this.cleanupTimer=setInterval((()=>{this.unrefUnusedSubchannels()}),l);(t=(e=this.cleanupTimer).unref)===null||t===void 0?void 0:t.call(e)}}getOrCreateSubchannel(e,t,r,l){this.ensureCleanupTask();const c=(0,a.uriToString)(e);if(c in this.pool){const e=this.pool[c];for(const i of e){if((0,s.subchannelAddressEqual)(t,i.subchannelAddress)&&(0,n.channelOptionsEqual)(r,i.channelArguments)&&l._equals(i.channelCredentials)){return i.subchannel}}}const u=new i.Subchannel(e,t,r,l,new o.Http2SubchannelConnector(e));if(!(c in this.pool)){this.pool[c]=[]}this.pool[c].push({subchannelAddress:t,channelArguments:r,channelCredentials:l,subchannel:u});u.ref();return u}}t.SubchannelPool=SubchannelPool;const c=new SubchannelPool;function getSubchannelPool(e){if(e){return c}else{return new SubchannelPool}}t.getSubchannelPool=getSubchannelPool},4764:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.Subchannel=void 0;const n=r(878);const i=r(4186);const s=r(5993);const a=r(634);const o=r(5974);const l=r(9905);const c=r(9975);const u="subchannel";const d=~(1<<31);class Subchannel{constructor(e,t,r,s,a){var o;this.channelTarget=e;this.subchannelAddress=t;this.options=r;this.credentials=s;this.connector=a;this.connectivityState=n.ConnectivityState.IDLE;this.transport=null;this.continueConnecting=false;this.stateListeners=new Set;this.refcount=0;this.channelzEnabled=true;this.callTracker=new c.ChannelzCallTracker;this.childrenTracker=new c.ChannelzChildrenTracker;this.streamTracker=new c.ChannelzCallTracker;const u={initialDelay:r["grpc.initial_reconnect_backoff_ms"],maxDelay:r["grpc.max_reconnect_backoff_ms"]};this.backoffTimeout=new i.BackoffTimeout((()=>{this.handleBackoffTimer()}),u);this.backoffTimeout.unref();this.subchannelAddressString=(0,l.subchannelAddressToString)(t);this.keepaliveTime=(o=r["grpc.keepalive_time_ms"])!==null&&o!==void 0?o:-1;if(r["grpc.enable_channelz"]===0){this.channelzEnabled=false}this.channelzTrace=new c.ChannelzTrace;this.channelzRef=(0,c.registerChannelzSubchannel)(this.subchannelAddressString,(()=>this.getChannelzInfo()),this.channelzEnabled);if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Subchannel created")}this.trace("Subchannel constructed with options "+JSON.stringify(r,undefined,2))}getChannelzInfo(){return{state:this.connectivityState,trace:this.channelzTrace,callTracker:this.callTracker,children:this.childrenTracker.getChildLists(),target:this.subchannelAddressString}}trace(e){s.trace(a.LogVerbosity.DEBUG,u,"("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}refTrace(e){s.trace(a.LogVerbosity.DEBUG,"subchannel_refcount","("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}handleBackoffTimer(){if(this.continueConnecting){this.transitionToState([n.ConnectivityState.TRANSIENT_FAILURE],n.ConnectivityState.CONNECTING)}else{this.transitionToState([n.ConnectivityState.TRANSIENT_FAILURE],n.ConnectivityState.IDLE)}}startBackoff(){this.backoffTimeout.runOnce()}stopBackoff(){this.backoffTimeout.stop();this.backoffTimeout.reset()}startConnectingInternal(){let e=this.options;if(e["grpc.keepalive_time_ms"]){const t=Math.min(this.keepaliveTime,d);e=Object.assign(Object.assign({},e),{"grpc.keepalive_time_ms":t})}this.connector.connect(this.subchannelAddress,this.credentials,e).then((e=>{if(this.transitionToState([n.ConnectivityState.CONNECTING],n.ConnectivityState.READY)){this.transport=e;if(this.channelzEnabled){this.childrenTracker.refChild(e.getChannelzRef())}e.addDisconnectListener((e=>{this.transitionToState([n.ConnectivityState.READY],n.ConnectivityState.IDLE);if(e&&this.keepaliveTime>0){this.keepaliveTime*=2;s.log(a.LogVerbosity.ERROR,`Connection to ${(0,o.uriToString)(this.channelTarget)} at ${this.subchannelAddressString} rejected by server because of excess pings. Increasing ping interval to ${this.keepaliveTime} ms`)}}))}else{e.shutdown()}}),(e=>{this.transitionToState([n.ConnectivityState.CONNECTING],n.ConnectivityState.TRANSIENT_FAILURE,`${e}`)}))}transitionToState(e,t,r){var i,s;if(e.indexOf(this.connectivityState)===-1){return false}this.trace(n.ConnectivityState[this.connectivityState]+" -> "+n.ConnectivityState[t]);if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Connectivity state change to "+n.ConnectivityState[t])}const a=this.connectivityState;this.connectivityState=t;switch(t){case n.ConnectivityState.READY:this.stopBackoff();break;case n.ConnectivityState.CONNECTING:this.startBackoff();this.startConnectingInternal();this.continueConnecting=false;break;case n.ConnectivityState.TRANSIENT_FAILURE:if(this.channelzEnabled&&this.transport){this.childrenTracker.unrefChild(this.transport.getChannelzRef())}(i=this.transport)===null||i===void 0?void 0:i.shutdown();this.transport=null;if(!this.backoffTimeout.isRunning()){process.nextTick((()=>{this.handleBackoffTimer()}))}break;case n.ConnectivityState.IDLE:if(this.channelzEnabled&&this.transport){this.childrenTracker.unrefChild(this.transport.getChannelzRef())}(s=this.transport)===null||s===void 0?void 0:s.shutdown();this.transport=null;break;default:throw new Error(`Invalid state: unknown ConnectivityState ${t}`)}for(const e of this.stateListeners){e(this,a,t,this.keepaliveTime,r)}return true}ref(){this.refTrace("refcount "+this.refcount+" -> "+(this.refcount+1));this.refcount+=1}unref(){this.refTrace("refcount "+this.refcount+" -> "+(this.refcount-1));this.refcount-=1;if(this.refcount===0){if(this.channelzEnabled){this.channelzTrace.addTrace("CT_INFO","Shutting down")}if(this.channelzEnabled){(0,c.unregisterChannelzRef)(this.channelzRef)}process.nextTick((()=>{this.transitionToState([n.ConnectivityState.CONNECTING,n.ConnectivityState.READY],n.ConnectivityState.IDLE)}))}}unrefIfOneRef(){if(this.refcount===1){this.unref();return true}return false}createCall(e,t,r,n){if(!this.transport){throw new Error("Cannot create call, subchannel not READY")}let i;if(this.channelzEnabled){this.callTracker.addCallStarted();this.streamTracker.addCallStarted();i={onCallEnd:e=>{if(e.code===a.Status.OK){this.callTracker.addCallSucceeded()}else{this.callTracker.addCallFailed()}}}}else{i={}}return this.transport.createCall(e,t,r,n,i)}startConnecting(){process.nextTick((()=>{if(!this.transitionToState([n.ConnectivityState.IDLE],n.ConnectivityState.CONNECTING)){if(this.connectivityState===n.ConnectivityState.TRANSIENT_FAILURE){this.continueConnecting=true}}}))}getConnectivityState(){return this.connectivityState}addConnectivityStateListener(e){this.stateListeners.add(e)}removeConnectivityStateListener(e){this.stateListeners.delete(e)}resetBackoff(){process.nextTick((()=>{this.backoffTimeout.reset();this.transitionToState([n.ConnectivityState.TRANSIENT_FAILURE],n.ConnectivityState.CONNECTING)}))}getAddress(){return this.subchannelAddressString}getChannelzRef(){return this.channelzRef}isHealthy(){return true}addHealthStateWatcher(e){}removeHealthStateWatcher(e){}getRealSubchannel(){return this}realSubchannelEquals(e){return e.getRealSubchannel()===this}throttleKeepalive(e){if(e>this.keepaliveTime){this.keepaliveTime=e}}}t.Subchannel=Subchannel},6581:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.getDefaultRootsData=t.CIPHER_SUITES=void 0;const n=r(7147);t.CIPHER_SUITES=process.env.GRPC_SSL_CIPHER_SUITES;const i=process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;let s=null;function getDefaultRootsData(){if(i){if(s===null){s=n.readFileSync(i)}return s}return null}t.getDefaultRootsData=getDefaultRootsData},6690:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.Http2SubchannelConnector=void 0;const n=r(5158);const i=r(4404);const s=r(9975);const a=r(634);const o=r(4e3);const l=r(5993);const c=r(1594);const u=r(9905);const d=r(5974);const f=r(1808);const h=r(6940);const p=r(380);const g="transport";const m="transport_flowctrl";const v=r(6569).i8;const{HTTP2_HEADER_AUTHORITY:y,HTTP2_HEADER_CONTENT_TYPE:b,HTTP2_HEADER_METHOD:S,HTTP2_HEADER_PATH:_,HTTP2_HEADER_TE:w,HTTP2_HEADER_USER_AGENT:C}=n.constants;const E=2e4;const T=Buffer.from("too_many_pings","ascii");class Http2Transport{constructor(e,t,r,i){this.session=e;this.remoteName=i;this.keepaliveTimeMs=-1;this.keepaliveTimeoutMs=E;this.keepaliveTimerId=null;this.pendingSendKeepalivePing=false;this.keepaliveTimeoutId=null;this.keepaliveWithoutCalls=false;this.activeCalls=new Set;this.disconnectListeners=[];this.disconnectHandled=false;this.channelzEnabled=true;this.streamTracker=new s.ChannelzCallTracker;this.keepalivesSent=0;this.messagesSent=0;this.messagesReceived=0;this.lastMessageSentTimestamp=null;this.lastMessageReceivedTimestamp=null;this.subchannelAddressString=(0,u.subchannelAddressToString)(t);if(r["grpc.enable_channelz"]===0){this.channelzEnabled=false}this.channelzRef=(0,s.registerChannelzSocket)(this.subchannelAddressString,(()=>this.getChannelzInfo()),this.channelzEnabled);this.userAgent=[r["grpc.primary_user_agent"],`grpc-node-js/${v}`,r["grpc.secondary_user_agent"]].filter((e=>e)).join(" ");if("grpc.keepalive_time_ms"in r){this.keepaliveTimeMs=r["grpc.keepalive_time_ms"]}if("grpc.keepalive_timeout_ms"in r){this.keepaliveTimeoutMs=r["grpc.keepalive_timeout_ms"]}if("grpc.keepalive_permit_without_calls"in r){this.keepaliveWithoutCalls=r["grpc.keepalive_permit_without_calls"]===1}else{this.keepaliveWithoutCalls=false}e.once("close",(()=>{this.trace("session closed");this.stopKeepalivePings();this.handleDisconnect()}));e.once("goaway",((e,t,r)=>{let i=false;if(e===n.constants.NGHTTP2_ENHANCE_YOUR_CALM&&r&&r.equals(T)){i=true}this.trace("connection closed by GOAWAY with code "+e+" and data "+(r===null||r===void 0?void 0:r.toString()));this.reportDisconnectToOwner(i)}));e.once("error",(e=>{this.trace("connection closed with error "+e.message)}));if(l.isTracerEnabled(g)){e.on("remoteSettings",(t=>{this.trace("new settings received"+(this.session!==e?" on the old connection":"")+": "+JSON.stringify(t))}));e.on("localSettings",(t=>{this.trace("local settings acknowledged by remote"+(this.session!==e?" on the old connection":"")+": "+JSON.stringify(t))}))}if(this.keepaliveWithoutCalls){this.maybeStartKeepalivePingTimer()}}getChannelzInfo(){var e,t,r;const n=this.session.socket;const i=n.remoteAddress?(0,u.stringToSubchannelAddress)(n.remoteAddress,n.remotePort):null;const s=n.localAddress?(0,u.stringToSubchannelAddress)(n.localAddress,n.localPort):null;let a;if(this.session.encrypted){const t=n;const r=t.getCipher();const i=t.getCertificate();const s=t.getPeerCertificate();a={cipherSuiteStandardName:(e=r.standardName)!==null&&e!==void 0?e:null,cipherSuiteOtherName:r.standardName?null:r.name,localCertificate:i&&"raw"in i?i.raw:null,remoteCertificate:s&&"raw"in s?s.raw:null}}else{a=null}const o={remoteAddress:i,localAddress:s,security:a,remoteName:this.remoteName,streamsStarted:this.streamTracker.callsStarted,streamsSucceeded:this.streamTracker.callsSucceeded,streamsFailed:this.streamTracker.callsFailed,messagesSent:this.messagesSent,messagesReceived:this.messagesReceived,keepAlivesSent:this.keepalivesSent,lastLocalStreamCreatedTimestamp:this.streamTracker.lastCallStartedTimestamp,lastRemoteStreamCreatedTimestamp:null,lastMessageSentTimestamp:this.lastMessageSentTimestamp,lastMessageReceivedTimestamp:this.lastMessageReceivedTimestamp,localFlowControlWindow:(t=this.session.state.localWindowSize)!==null&&t!==void 0?t:null,remoteFlowControlWindow:(r=this.session.state.remoteWindowSize)!==null&&r!==void 0?r:null};return o}trace(e){l.trace(a.LogVerbosity.DEBUG,g,"("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}keepaliveTrace(e){l.trace(a.LogVerbosity.DEBUG,"keepalive","("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}flowControlTrace(e){l.trace(a.LogVerbosity.DEBUG,m,"("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}internalsTrace(e){l.trace(a.LogVerbosity.DEBUG,"transport_internals","("+this.channelzRef.id+") "+this.subchannelAddressString+" "+e)}reportDisconnectToOwner(e){if(this.disconnectHandled){return}this.disconnectHandled=true;this.disconnectListeners.forEach((t=>t(e)))}handleDisconnect(){this.reportDisconnectToOwner(false);setImmediate((()=>{for(const e of this.activeCalls){e.onDisconnect()}}))}addDisconnectListener(e){this.disconnectListeners.push(e)}clearKeepaliveTimer(){if(!this.keepaliveTimerId){return}clearTimeout(this.keepaliveTimerId);this.keepaliveTimerId=null}clearKeepaliveTimeout(){if(!this.keepaliveTimeoutId){return}clearTimeout(this.keepaliveTimeoutId);this.keepaliveTimeoutId=null}canSendPing(){return this.keepaliveTimeMs>0&&(this.keepaliveWithoutCalls||this.activeCalls.size>0)}maybeSendPing(){var e,t;this.clearKeepaliveTimer();if(!this.canSendPing()){this.pendingSendKeepalivePing=true;return}if(this.channelzEnabled){this.keepalivesSent+=1}this.keepaliveTrace("Sending ping with timeout "+this.keepaliveTimeoutMs+"ms");if(!this.keepaliveTimeoutId){this.keepaliveTimeoutId=setTimeout((()=>{this.keepaliveTrace("Ping timeout passed without response");this.handleDisconnect()}),this.keepaliveTimeoutMs);(t=(e=this.keepaliveTimeoutId).unref)===null||t===void 0?void 0:t.call(e)}try{this.session.ping(((e,t,r)=>{if(e){this.keepaliveTrace("Ping failed with error "+e.message);this.handleDisconnect()}this.keepaliveTrace("Received ping response");this.clearKeepaliveTimeout();this.maybeStartKeepalivePingTimer()}))}catch(e){this.handleDisconnect()}}maybeStartKeepalivePingTimer(){var e,t;if(!this.canSendPing()){return}if(this.pendingSendKeepalivePing){this.pendingSendKeepalivePing=false;this.maybeSendPing()}else if(!this.keepaliveTimerId&&!this.keepaliveTimeoutId){this.keepaliveTrace("Starting keepalive timer for "+this.keepaliveTimeMs+"ms");this.keepaliveTimerId=(t=(e=setTimeout((()=>{this.maybeSendPing()}),this.keepaliveTimeMs)).unref)===null||t===void 0?void 0:t.call(e)}}stopKeepalivePings(){if(this.keepaliveTimerId){clearTimeout(this.keepaliveTimerId);this.keepaliveTimerId=null}this.clearKeepaliveTimeout()}removeActiveCall(e){this.activeCalls.delete(e);if(this.activeCalls.size===0){this.session.unref()}}addActiveCall(e){this.activeCalls.add(e);if(this.activeCalls.size===1){this.session.ref();if(!this.keepaliveWithoutCalls){this.maybeStartKeepalivePingTimer()}}}createCall(e,t,r,n,i){const s=e.toHttp2Headers();s[y]=t;s[C]=this.userAgent;s[b]="application/grpc";s[S]="POST";s[_]=r;s[w]="trailers";let a;try{a=this.session.request(s)}catch(e){this.handleDisconnect();throw e}this.flowControlTrace("local window size: "+this.session.state.localWindowSize+" remote window size: "+this.session.state.remoteWindowSize);this.internalsTrace("session.closed="+this.session.closed+" session.destroyed="+this.session.destroyed+" session.socket.destroyed="+this.session.socket.destroyed);let o;let l;if(this.channelzEnabled){this.streamTracker.addCallStarted();o={addMessageSent:()=>{var e;this.messagesSent+=1;this.lastMessageSentTimestamp=new Date;(e=i.addMessageSent)===null||e===void 0?void 0:e.call(i)},addMessageReceived:()=>{var e;this.messagesReceived+=1;this.lastMessageReceivedTimestamp=new Date;(e=i.addMessageReceived)===null||e===void 0?void 0:e.call(i)},onCallEnd:e=>{var t;(t=i.onCallEnd)===null||t===void 0?void 0:t.call(i,e);this.removeActiveCall(l)},onStreamEnd:e=>{var t;if(e){this.streamTracker.addCallSucceeded()}else{this.streamTracker.addCallFailed()}(t=i.onStreamEnd)===null||t===void 0?void 0:t.call(i,e)}}}else{o={addMessageSent:()=>{var e;(e=i.addMessageSent)===null||e===void 0?void 0:e.call(i)},addMessageReceived:()=>{var e;(e=i.addMessageReceived)===null||e===void 0?void 0:e.call(i)},onCallEnd:e=>{var t;(t=i.onCallEnd)===null||t===void 0?void 0:t.call(i,e);this.removeActiveCall(l)},onStreamEnd:e=>{var t;(t=i.onStreamEnd)===null||t===void 0?void 0:t.call(i,e)}}}l=new h.Http2SubchannelCall(a,o,n,this,(0,p.getNextCallNumber)());this.addActiveCall(l);return l}getChannelzRef(){return this.channelzRef}getPeerName(){return this.subchannelAddressString}shutdown(){this.session.close();(0,s.unregisterChannelzRef)(this.channelzRef)}}class Http2SubchannelConnector{constructor(e){this.channelTarget=e;this.session=null;this.isShutdown=false}trace(e){l.trace(a.LogVerbosity.DEBUG,g,(0,d.uriToString)(this.channelTarget)+" "+e)}createSession(e,t,r,s){if(this.isShutdown){return Promise.reject()}return new Promise(((a,o)=>{var l,h,p;let g;if(s.realTarget){g=(0,d.uriToString)(s.realTarget);this.trace("creating HTTP/2 session through proxy to "+(0,d.uriToString)(s.realTarget))}else{g=null;this.trace("creating HTTP/2 session to "+(0,u.subchannelAddressToString)(e))}const m=(0,c.getDefaultAuthority)((l=s.realTarget)!==null&&l!==void 0?l:this.channelTarget);let v=t._getConnectionOptions()||{};v.maxSendHeaderBlockLength=Number.MAX_SAFE_INTEGER;if("grpc-node.max_session_memory"in r){v.maxSessionMemory=r["grpc-node.max_session_memory"]}else{v.maxSessionMemory=Number.MAX_SAFE_INTEGER}let y="http://";if("secureContext"in v){y="https://";if(r["grpc.ssl_target_name_override"]){const e=r["grpc.ssl_target_name_override"];v.checkServerIdentity=(t,r)=>(0,i.checkServerIdentity)(e,r);v.servername=e}else{const e=(p=(h=(0,d.splitHostPort)(m))===null||h===void 0?void 0:h.host)!==null&&p!==void 0?p:"localhost";v.servername=e}if(s.socket){v.createConnection=(e,t)=>s.socket}}else{v.createConnection=(t,r)=>{if(s.socket){return s.socket}else{return f.connect(e)}}}v=Object.assign(Object.assign(Object.assign({},v),e),{enableTrace:r["grpc-node.tls_enable_trace"]===1});const b=n.connect(y+m,v);this.session=b;let S="Failed to connect";b.unref();b.once("connect",(()=>{b.removeAllListeners();a(new Http2Transport(b,e,r,g));this.session=null}));b.once("close",(()=>{this.session=null;setImmediate((()=>{o(`${S} (${(new Date).toISOString()})`)}))}));b.once("error",(e=>{S=e.message;this.trace("connection failed with error "+S)}))}))}connect(e,t,r){var n,s;if(this.isShutdown){return Promise.reject()}const a=t._getConnectionOptions()||{};if("secureContext"in a){a.ALPNProtocols=["h2"];if(r["grpc.ssl_target_name_override"]){const e=r["grpc.ssl_target_name_override"];a.checkServerIdentity=(t,r)=>(0,i.checkServerIdentity)(e,r);a.servername=e}else{if("grpc.http_connect_target"in r){const e=(0,c.getDefaultAuthority)((n=(0,d.parseUri)(r["grpc.http_connect_target"]))!==null&&n!==void 0?n:{path:"localhost"});const t=(0,d.splitHostPort)(e);a.servername=(s=t===null||t===void 0?void 0:t.host)!==null&&s!==void 0?s:e}}if(r["grpc-node.tls_enable_trace"]){a.enableTrace=true}}return(0,o.getProxiedConnection)(e,r,a).then((n=>this.createSession(e,t,r,n)))}shutdown(){var e;this.isShutdown=true;(e=this.session)===null||e===void 0?void 0:e.close();this.session=null}}t.Http2SubchannelConnector=Http2SubchannelConnector},5974:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.uriToString=t.combineHostPort=t.splitHostPort=t.parseUri=void 0;const r=/^(?:([A-Za-z0-9+.-]+):)?(?:\/\/([^/]*)\/)?(.+)$/;function parseUri(e){const t=r.exec(e);if(t===null){return null}return{scheme:t[1],authority:t[2],path:t[3]}}t.parseUri=parseUri;const n=/^\d+$/;function splitHostPort(e){if(e.startsWith("[")){const t=e.indexOf("]");if(t===-1){return null}const r=e.substring(1,t);if(r.indexOf(":")===-1){return null}if(e.length>t+1){if(e[t+1]===":"){const i=e.substring(t+2);if(n.test(i)){return{host:r,port:+i}}else{return null}}else{return null}}else{return{host:r}}}else{const t=e.split(":");if(t.length===2){if(n.test(t[1])){return{host:t[0],port:+t[1]}}else{return null}}else{return{host:e}}}}t.splitHostPort=splitHostPort;function combineHostPort(e){if(e.port===undefined){return e.host}else{if(e.host.includes(":")){return`[${e.host}]:${e.port}`}else{return`${e.host}:${e.port}`}}}t.combineHostPort=combineHostPort;function uriToString(e){let t="";if(e.scheme!==undefined){t+=e.scheme+":"}if(e.authority!==undefined){t+="//"+e.authority+"/"}t+=e.path;return t}t.uriToString=uriToString},8171:(e,t,r)=>{var n; +/** + * @license + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */n={value:true};n=n=n=t.J_=n=n=n=void 0;const i=r(7994);const s=r(5881);const a=r(1629);const o=r(3245);const l=r(2694);n=l;function isAnyExtension(e){return"@type"in e&&typeof e["@type"]==="string"}n=isAnyExtension;const c={longs:String,enums:String,bytes:String,defaults:true,oneofs:true,json:true};function joinName(e,t){if(e===""){return t}else{return e+"."+t}}function isHandledReflectionObject(e){return e instanceof s.Service||e instanceof s.Type||e instanceof s.Enum}function isNamespaceBase(e){return e instanceof s.Namespace||e instanceof s.Root}function getAllHandledReflectionObjects(e,t){const r=joinName(t,e.name);if(isHandledReflectionObject(e)){return[[r,e]]}else{if(isNamespaceBase(e)&&typeof e.nested!=="undefined"){return Object.keys(e.nested).map((t=>getAllHandledReflectionObjects(e.nested[t],r))).reduce(((e,t)=>e.concat(t)),[])}}return[]}function createDeserializer(e,t){return function deserialize(r){return e.toObject(e.decode(r),t)}}function createSerializer(e){return function serialize(t){if(Array.isArray(t)){throw new Error(`Failed to serialize message: expected object with ${e.name} structure, got array instead`)}const r=e.fromObject(t);return e.encode(r).finish()}}function createMethodDefinition(e,t,r,n){const s=e.resolvedRequestType;const a=e.resolvedResponseType;return{path:"/"+t+"/"+e.name,requestStream:!!e.requestStream,responseStream:!!e.responseStream,requestSerialize:createSerializer(s),requestDeserialize:createDeserializer(s,r),responseSerialize:createSerializer(a),responseDeserialize:createDeserializer(a,r),originalName:i(e.name),requestType:createMessageDefinition(s,n),responseType:createMessageDefinition(a,n)}}function createServiceDefinition(e,t,r,n){const i={};for(const s of e.methodsArray){i[s.name]=createMethodDefinition(s,t,r,n)}return i}function createMessageDefinition(e,t){const r=e.toDescriptor("proto3");return{format:"Protocol Buffer 3 DescriptorProto",type:r.$type.toObject(r,c),fileDescriptorProtos:t}}function createEnumDefinition(e,t){const r=e.toDescriptor("proto3");return{format:"Protocol Buffer 3 EnumDescriptorProto",type:r.$type.toObject(r,c),fileDescriptorProtos:t}}function createDefinition(e,t,r,n){if(e instanceof s.Service){return createServiceDefinition(e,t,r,n)}else if(e instanceof s.Type){return createMessageDefinition(e,n)}else if(e instanceof s.Enum){return createEnumDefinition(e,n)}else{throw new Error("Type mismatch in reflection object handling")}}function createPackageDefinition(e,t){const r={};e.resolveAll();const n=e.toDescriptor("proto3").file;const i=n.map((e=>Buffer.from(a.FileDescriptorProto.encode(e).finish())));for(const[n,s]of getAllHandledReflectionObjects(e,"")){r[n]=createDefinition(s,n,t,i)}return r}function createPackageDefinitionFromDescriptorSet(e,t){t=t||{};const r=s.Root.fromDescriptor(e);r.resolveAll();return createPackageDefinition(r,t)}function load(e,t){return(0,o.loadProtosWithOptions)(e,t).then((e=>createPackageDefinition(e,t)))}n=load;function loadSync(e,t){const r=(0,o.loadProtosWithOptionsSync)(e,t);return createPackageDefinition(r,t)}t.J_=loadSync;function fromJSON(e,t){t=t||{};const r=s.Root.fromJSON(e);r.resolveAll();return createPackageDefinition(r,t)}n=fromJSON;function loadFileDescriptorSetFromBuffer(e,t){const r=a.FileDescriptorSet.decode(e);return createPackageDefinitionFromDescriptorSet(r,t)}n=loadFileDescriptorSetFromBuffer;function loadFileDescriptorSetFromObject(e,t){const r=a.FileDescriptorSet.fromObject(e);return createPackageDefinitionFromDescriptorSet(r,t)}n=loadFileDescriptorSetFromObject;(0,o.addCommonProtos)()},3245:(e,t,r)=>{ +/** + * @license + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +Object.defineProperty(t,"__esModule",{value:true});t.addCommonProtos=t.loadProtosWithOptionsSync=t.loadProtosWithOptions=void 0;const n=r(7147);const i=r(1017);const s=r(5881);function addIncludePathResolver(e,t){const r=e.resolvePath;e.resolvePath=(e,s)=>{if(i.isAbsolute(s)){return s}for(const e of t){const t=i.join(e,s);try{n.accessSync(t,n.constants.R_OK);return t}catch(e){continue}}process.emitWarning(`${s} not found in any of the include paths ${t}`);return r(e,s)}}async function loadProtosWithOptions(e,t){const r=new s.Root;t=t||{};if(!!t.includeDirs){if(!Array.isArray(t.includeDirs)){return Promise.reject(new Error("The includeDirs option must be an array"))}addIncludePathResolver(r,t.includeDirs)}const n=await r.load(e,t);n.resolveAll();return n}t.loadProtosWithOptions=loadProtosWithOptions;function loadProtosWithOptionsSync(e,t){const r=new s.Root;t=t||{};if(!!t.includeDirs){if(!Array.isArray(t.includeDirs)){throw new Error("The includeDirs option must be an array")}addIncludePathResolver(r,t.includeDirs)}const n=r.loadSync(e,t);n.resolveAll();return n}t.loadProtosWithOptionsSync=loadProtosWithOptionsSync;function addCommonProtos(){const e=r(4784);const t=r(3571);const n=r(3342);const i=r(8783);s.common("api",e.nested.google.nested.protobuf.nested);s.common("descriptor",t.nested.google.nested.protobuf.nested);s.common("source_context",n.nested.google.nested.protobuf.nested);s.common("type",i.nested.google.nested.protobuf.nested)}t.addCommonProtos=addCommonProtos},252:e=>{e.exports=asPromise;function asPromise(e,t){var r=new Array(arguments.length-1),n=0,i=2,s=true;while(i{var r=t;r.length=function length(e){var t=e.length;if(!t)return 0;var r=0;while(--t%4>1&&e.charAt(t)==="=")++r;return Math.ceil(e.length*3)/4-r};var n=new Array(64);var i=new Array(123);for(var s=0;s<64;)i[n[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;r.encode=function encode(e,t,r){var i=null,s=[];var a=0,o=0,l;while(t>2];l=(c&3)<<4;o=1;break;case 1:s[a++]=n[l|c>>4];l=(c&15)<<2;o=2;break;case 2:s[a++]=n[l|c>>6];s[a++]=n[c&63];o=0;break}if(a>8191){(i||(i=[])).push(String.fromCharCode.apply(String,s));a=0}}if(o){s[a++]=n[l];s[a++]=61;if(o===1)s[a++]=61}if(i){if(a)i.push(String.fromCharCode.apply(String,s.slice(0,a)));return i.join("")}return String.fromCharCode.apply(String,s.slice(0,a))};var a="invalid encoding";r.decode=function decode(e,t,r){var n=r;var s=0,o;for(var l=0;l1)break;if((c=i[c])===undefined)throw Error(a);switch(s){case 0:o=c;s=1;break;case 1:t[r++]=o<<2|(c&48)>>4;o=c;s=2;break;case 2:t[r++]=(o&15)<<4|(c&60)>>2;o=c;s=3;break;case 3:t[r++]=(o&3)<<6|c;s=0;break}}if(s===1)throw Error(a);return r-n};r.test=function test(e){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(e)}},8882:e=>{e.exports=codegen;function codegen(e,t){if(typeof e==="string"){t=e;e=undefined}var r=[];function Codegen(e){if(typeof e!=="string"){var t=toString();if(codegen.verbose)console.log("codegen: "+t);t="return "+t;if(e){var n=Object.keys(e),i=new Array(n.length+1),s=new Array(n.length),a=0;while(a{e.exports=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function on(e,t,r){(this._listeners[e]||(this._listeners[e]=[])).push({fn:t,ctx:r||this});return this};EventEmitter.prototype.off=function off(e,t){if(e===undefined)this._listeners={};else{if(t===undefined)this._listeners[e]=[];else{var r=this._listeners[e];for(var n=0;n{e.exports=fetch;var n=r(252),i=r(94);var s=i("fs");function fetch(e,t,r){if(typeof t==="function"){r=t;t={}}else if(!t)t={};if(!r)return n(fetch,this,e,t);if(!t.xhr&&s&&s.readFile)return s.readFile(e,(function fetchReadFileCallback(n,i){return n&&typeof XMLHttpRequest!=="undefined"?fetch.xhr(e,t,r):n?r(n):r(null,t.binary?i:i.toString("utf8"))}));return fetch.xhr(e,t,r)}fetch.xhr=function fetch_xhr(e,t,r){var n=new XMLHttpRequest;n.onreadystatechange=function fetchOnReadyStateChange(){if(n.readyState!==4)return undefined;if(n.status!==0&&n.status!==200)return r(Error("status "+n.status));if(t.binary){var e=n.response;if(!e){e=[];for(var i=0;i{e.exports=factory(factory);function factory(e){if(typeof Float32Array!=="undefined")(function(){var t=new Float32Array([-0]),r=new Uint8Array(t.buffer),n=r[3]===128;function writeFloat_f32_cpy(e,n,i){t[0]=e;n[i]=r[0];n[i+1]=r[1];n[i+2]=r[2];n[i+3]=r[3]}function writeFloat_f32_rev(e,n,i){t[0]=e;n[i]=r[3];n[i+1]=r[2];n[i+2]=r[1];n[i+3]=r[0]}e.writeFloatLE=n?writeFloat_f32_cpy:writeFloat_f32_rev;e.writeFloatBE=n?writeFloat_f32_rev:writeFloat_f32_cpy;function readFloat_f32_cpy(e,n){r[0]=e[n];r[1]=e[n+1];r[2]=e[n+2];r[3]=e[n+3];return t[0]}function readFloat_f32_rev(e,n){r[3]=e[n];r[2]=e[n+1];r[1]=e[n+2];r[0]=e[n+3];return t[0]}e.readFloatLE=n?readFloat_f32_cpy:readFloat_f32_rev;e.readFloatBE=n?readFloat_f32_rev:readFloat_f32_cpy})();else(function(){function writeFloat_ieee754(e,t,r,n){var i=t<0?1:0;if(i)t=-t;if(t===0)e(1/t>0?0:2147483648,r,n);else if(isNaN(t))e(2143289344,r,n);else if(t>34028234663852886e22)e((i<<31|2139095040)>>>0,r,n);else if(t<11754943508222875e-54)e((i<<31|Math.round(t/1401298464324817e-60))>>>0,r,n);else{var s=Math.floor(Math.log(t)/Math.LN2),a=Math.round(t*Math.pow(2,-s)*8388608)&8388607;e((i<<31|s+127<<23|a)>>>0,r,n)}}e.writeFloatLE=writeFloat_ieee754.bind(null,writeUintLE);e.writeFloatBE=writeFloat_ieee754.bind(null,writeUintBE);function readFloat_ieee754(e,t,r){var n=e(t,r),i=(n>>31)*2+1,s=n>>>23&255,a=n&8388607;return s===255?a?NaN:i*Infinity:s===0?i*1401298464324817e-60*a:i*Math.pow(2,s-150)*(a+8388608)}e.readFloatLE=readFloat_ieee754.bind(null,readUintLE);e.readFloatBE=readFloat_ieee754.bind(null,readUintBE)})();if(typeof Float64Array!=="undefined")(function(){var t=new Float64Array([-0]),r=new Uint8Array(t.buffer),n=r[7]===128;function writeDouble_f64_cpy(e,n,i){t[0]=e;n[i]=r[0];n[i+1]=r[1];n[i+2]=r[2];n[i+3]=r[3];n[i+4]=r[4];n[i+5]=r[5];n[i+6]=r[6];n[i+7]=r[7]}function writeDouble_f64_rev(e,n,i){t[0]=e;n[i]=r[7];n[i+1]=r[6];n[i+2]=r[5];n[i+3]=r[4];n[i+4]=r[3];n[i+5]=r[2];n[i+6]=r[1];n[i+7]=r[0]}e.writeDoubleLE=n?writeDouble_f64_cpy:writeDouble_f64_rev;e.writeDoubleBE=n?writeDouble_f64_rev:writeDouble_f64_cpy;function readDouble_f64_cpy(e,n){r[0]=e[n];r[1]=e[n+1];r[2]=e[n+2];r[3]=e[n+3];r[4]=e[n+4];r[5]=e[n+5];r[6]=e[n+6];r[7]=e[n+7];return t[0]}function readDouble_f64_rev(e,n){r[7]=e[n];r[6]=e[n+1];r[5]=e[n+2];r[4]=e[n+3];r[3]=e[n+4];r[2]=e[n+5];r[1]=e[n+6];r[0]=e[n+7];return t[0]}e.readDoubleLE=n?readDouble_f64_cpy:readDouble_f64_rev;e.readDoubleBE=n?readDouble_f64_rev:readDouble_f64_cpy})();else(function(){function writeDouble_ieee754(e,t,r,n,i,s){var a=n<0?1:0;if(a)n=-n;if(n===0){e(0,i,s+t);e(1/n>0?0:2147483648,i,s+r)}else if(isNaN(n)){e(0,i,s+t);e(2146959360,i,s+r)}else if(n>17976931348623157e292){e(0,i,s+t);e((a<<31|2146435072)>>>0,i,s+r)}else{var o;if(n<22250738585072014e-324){o=n/5e-324;e(o>>>0,i,s+t);e((a<<31|o/4294967296)>>>0,i,s+r)}else{var l=Math.floor(Math.log(n)/Math.LN2);if(l===1024)l=1023;o=n*Math.pow(2,-l);e(o*4503599627370496>>>0,i,s+t);e((a<<31|l+1023<<20|o*1048576&1048575)>>>0,i,s+r)}}}e.writeDoubleLE=writeDouble_ieee754.bind(null,writeUintLE,0,4);e.writeDoubleBE=writeDouble_ieee754.bind(null,writeUintBE,4,0);function readDouble_ieee754(e,t,r,n,i){var s=e(n,i+t),a=e(n,i+r);var o=(a>>31)*2+1,l=a>>>20&2047,c=4294967296*(a&1048575)+s;return l===2047?c?NaN:o*Infinity:l===0?o*5e-324*c:o*Math.pow(2,l-1075)*(c+4503599627370496)}e.readDoubleLE=readDouble_ieee754.bind(null,readUintLE,0,4);e.readDoubleBE=readDouble_ieee754.bind(null,readUintBE,4,0)})();return e}function writeUintLE(e,t,r){t[r]=e&255;t[r+1]=e>>>8&255;t[r+2]=e>>>16&255;t[r+3]=e>>>24}function writeUintBE(e,t,r){t[r]=e>>>24;t[r+1]=e>>>16&255;t[r+2]=e>>>8&255;t[r+3]=e&255}function readUintLE(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0}function readUintBE(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}},94:module=>{module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},4761:(e,t)=>{var r=t;var n=r.isAbsolute=function isAbsolute(e){return/^(?:\/|\w+:)/.test(e)};var i=r.normalize=function normalize(e){e=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/");var t=e.split("/"),r=n(e),i="";if(r)i=t.shift()+"/";for(var s=0;s0&&t[s-1]!=="..")t.splice(--s,2);else if(r)t.splice(s,1);else++s}else if(t[s]===".")t.splice(s,1);else++s}return i+t.join("/")};r.resolve=function resolve(e,t,r){if(!r)t=i(t);if(n(t))return t;if(!r)e=i(e);return(e=e.replace(/(?:\/|^)[^/]+$/,"")).length?i(e+"/"+t):t}},7743:e=>{e.exports=pool;function pool(e,t,r){var n=r||8192;var i=n>>>1;var s=null;var a=n;return function pool_alloc(r){if(r<1||r>i)return e(r);if(a+r>n){s=e(n);a=0}var o=t.call(s,a,a+=r);if(a&7)a=(a|7)+1;return o}}},9049:(e,t)=>{var r=t;r.length=function utf8_length(e){var t=0,r=0;for(var n=0;n191&&o<224)s[a++]=(o&31)<<6|e[t++]&63;else if(o>239&&o<365){o=((o&7)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536;s[a++]=55296+(o>>10);s[a++]=56320+(o&1023)}else s[a++]=(o&15)<<12|(e[t++]&63)<<6|e[t++]&63;if(a>8191){(i||(i=[])).push(String.fromCharCode.apply(String,s));a=0}}if(i){if(a)i.push(String.fromCharCode.apply(String,s.slice(0,a)));return i.join("")}return String.fromCharCode.apply(String,s.slice(0,a))};r.write=function utf8_write(e,t,r){var n=r,i,s;for(var a=0;a>6|192;t[r++]=i&63|128}else if((i&64512)===55296&&((s=e.charCodeAt(a+1))&64512)===56320){i=65536+((i&1023)<<10)+(s&1023);++a;t[r++]=i>>18|240;t[r++]=i>>12&63|128;t[r++]=i>>6&63|128;t[r++]=i&63|128}else{t[r++]=i>>12|224;t[r++]=i>>6&63|128;t[r++]=i&63|128}}return r-n}},991:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=asyncify;var n=r(9658);var i=_interopRequireDefault(n);var s=r(729);var a=_interopRequireDefault(s);var o=r(7456);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function asyncify(e){if((0,o.isAsync)(e)){return function(...t){const r=t.pop();const n=e.apply(this,t);return handlePromise(n,r)}}return(0,i.default)((function(t,r){var n;try{n=e.apply(this,t)}catch(e){return r(e)}if(n&&typeof n.then==="function"){return handlePromise(n,r)}else{r(null,n)}}))}function handlePromise(e,t){return e.then((e=>{invokeCallback(t,null,e)}),(e=>{invokeCallback(t,e&&(e instanceof Error||e.message)?e:new Error(e))}))}function invokeCallback(e,t,r){try{e(t,r)}catch(e){(0,a.default)((e=>{throw e}),e)}}e.exports=t.default},5460:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});var n=r(7157);var i=_interopRequireDefault(n);var s=r(8810);var a=_interopRequireDefault(s);var o=r(9342);var l=_interopRequireDefault(o);var c=r(7260);var u=_interopRequireDefault(c);var d=r(1990);var f=_interopRequireDefault(d);var h=r(7456);var p=_interopRequireDefault(h);var g=r(3887);var m=_interopRequireDefault(g);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function eachOfArrayLike(e,t,r){r=(0,u.default)(r);var n=0,i=0,{length:s}=e,o=false;if(s===0){r(null)}function iteratorCallback(e,t){if(e===false){o=true}if(o===true)return;if(e){r(e)}else if(++i===s||t===a.default){r(null)}}for(;n{Object.defineProperty(t,"__esModule",{value:true});var n=r(6658);var i=_interopRequireDefault(n);var s=r(7456);var a=_interopRequireDefault(s);var o=r(3887);var l=_interopRequireDefault(o);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function eachOfLimit(e,t,r,n){return(0,i.default)(t)(e,(0,a.default)(r),n)}t["default"]=(0,l.default)(eachOfLimit,4);e.exports=t.default},1336:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});var n=r(9342);var i=_interopRequireDefault(n);var s=r(3887);var a=_interopRequireDefault(s);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function eachOfSeries(e,t,r){return(0,i.default)(e,1,t,r)}t["default"]=(0,a.default)(eachOfSeries,3);e.exports=t.default},1216:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});var n=r(5460);var i=_interopRequireDefault(n);var s=r(4674);var a=_interopRequireDefault(s);var o=r(7456);var l=_interopRequireDefault(o);var c=r(3887);var u=_interopRequireDefault(c);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function eachLimit(e,t,r){return(0,i.default)(e,(0,a.default)((0,l.default)(t)),r)}t["default"]=(0,u.default)(eachLimit,3);e.exports=t.default},2718:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=asyncEachOfLimit;var n=r(8810);var i=_interopRequireDefault(n);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function asyncEachOfLimit(e,t,r,n){let s=false;let a=false;let o=false;let l=0;let c=0;function replenish(){if(l>=t||o||s)return;o=true;e.next().then((({value:e,done:t})=>{if(a||s)return;o=false;if(t){s=true;if(l<=0){n(null)}return}l++;r(e,c,iterateeCallback);c++;replenish()})).catch(handleError)}function iterateeCallback(e,t){l-=1;if(a)return;if(e)return handleError(e);if(e===false){s=true;a=true;return}if(t===i.default||s&&l<=0){s=true;return n(null)}replenish()}function handleError(e){if(a)return;o=false;s=true;n(e)}replenish()}e.exports=t.default},3887:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=awaitify;function awaitify(e,t){if(!t)t=e.length;if(!t)throw new Error("arity is undefined");function awaitable(...r){if(typeof r[t-1]==="function"){return e.apply(this,r)}return new Promise(((n,i)=>{r[t-1]=(e,...t)=>{if(e)return i(e);n(t.length>1?t:t[0])};e.apply(this,r)}))}return awaitable}e.exports=t.default},8810:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});const r={};t["default"]=r;e.exports=t.default},6658:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});var n=r(7260);var i=_interopRequireDefault(n);var s=r(1420);var a=_interopRequireDefault(s);var o=r(1990);var l=_interopRequireDefault(o);var c=r(7456);var u=r(2718);var d=_interopRequireDefault(u);var f=r(8810);var h=_interopRequireDefault(f);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}t["default"]=e=>(t,r,n)=>{n=(0,i.default)(n);if(e<=0){throw new RangeError("concurrency limit cannot be less than 1")}if(!t){return n(null)}if((0,c.isAsyncGenerator)(t)){return(0,d.default)(t,e,r,n)}if((0,c.isAsyncIterable)(t)){return(0,d.default)(t[Symbol.asyncIterator](),e,r,n)}var s=(0,a.default)(t);var o=false;var u=false;var f=0;var p=false;function iterateeCallback(e,t){if(u)return;f-=1;if(e){o=true;n(e)}else if(e===false){o=true;u=true}else if(t===h.default||o&&f<=0){o=true;return n(null)}else if(!p){replenish()}}function replenish(){p=true;while(f{Object.defineProperty(t,"__esModule",{value:true});t["default"]=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()};e.exports=t.default},9658:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=function(e){return function(...t){var r=t.pop();return e.call(this,t,r)}};e.exports=t.default},7157:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=isArrayLike;function isArrayLike(e){return e&&typeof e.length==="number"&&e.length>=0&&e.length%1===0}e.exports=t.default},1420:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=createIterator;var n=r(7157);var i=_interopRequireDefault(n);var s=r(7645);var a=_interopRequireDefault(s);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createArrayIterator(e){var t=-1;var r=e.length;return function next(){return++t{Object.defineProperty(t,"__esModule",{value:true});t["default"]=once;function once(e){function wrapper(...t){if(e===null)return;var r=e;e=null;r.apply(this,t)}Object.assign(wrapper,e);return wrapper}e.exports=t.default},1990:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=onlyOnce;function onlyOnce(e){return function(...t){if(e===null)throw new Error("Callback was already called.");var r=e;e=null;r.apply(this,t)}}e.exports=t.default},3221:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});var n=r(7157);var i=_interopRequireDefault(n);var s=r(7456);var a=_interopRequireDefault(s);var o=r(3887);var l=_interopRequireDefault(o);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}t["default"]=(0,l.default)(((e,t,r)=>{var n=(0,i.default)(t)?[]:{};e(t,((e,t,r)=>{(0,a.default)(e)(((e,...i)=>{if(i.length<2){[i]=i}n[t]=i;r(e)}))}),(e=>r(e,n)))}),3);e.exports=t.default},729:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.fallback=fallback;t.wrap=wrap;var r=t.hasQueueMicrotask=typeof queueMicrotask==="function"&&queueMicrotask;var n=t.hasSetImmediate=typeof setImmediate==="function"&&setImmediate;var i=t.hasNextTick=typeof process==="object"&&typeof process.nextTick==="function";function fallback(e){setTimeout(e,0)}function wrap(e){return(t,...r)=>e((()=>t(...r)))}var s;if(r){s=queueMicrotask}else if(n){s=setImmediate}else if(i){s=process.nextTick}else{s=fallback}t["default"]=wrap(s)},4674:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=_withoutIndex;function _withoutIndex(e){return(t,r,n)=>e(t,n)}e.exports=t.default},7456:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.isAsyncIterable=t.isAsyncGenerator=t.isAsync=undefined;var n=r(991);var i=_interopRequireDefault(n);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function isAsync(e){return e[Symbol.toStringTag]==="AsyncFunction"}function isAsyncGenerator(e){return e[Symbol.toStringTag]==="AsyncGenerator"}function isAsyncIterable(e){return typeof e[Symbol.asyncIterator]==="function"}function wrapAsync(e){if(typeof e!=="function")throw new Error("expected a function");return isAsync(e)?(0,i.default)(e):e}t["default"]=wrapAsync;t.isAsync=isAsync;t.isAsyncGenerator=isAsyncGenerator;t.isAsyncIterable=isAsyncIterable},9619:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=series;var n=r(3221);var i=_interopRequireDefault(n);var s=r(1336);var a=_interopRequireDefault(s);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function series(e,t){return(0,i.default)(a.default,e,t)}e.exports=t.default},7391:(e,t,r)=>{var n=r(8510);var i={};for(var s in n){if(n.hasOwnProperty(s)){i[n[s]]=s}}var a=e.exports={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"]}};for(var o in a){if(a.hasOwnProperty(o)){if(!("channels"in a[o])){throw new Error("missing channels property: "+o)}if(!("labels"in a[o])){throw new Error("missing channel labels property: "+o)}if(a[o].labels.length!==a[o].channels){throw new Error("channel and label counts mismatch: "+o)}var l=a[o].channels;var c=a[o].labels;delete a[o].channels;delete a[o].labels;Object.defineProperty(a[o],"channels",{value:l});Object.defineProperty(a[o],"labels",{value:c})}}a.rgb.hsl=function(e){var t=e[0]/255;var r=e[1]/255;var n=e[2]/255;var i=Math.min(t,r,n);var s=Math.max(t,r,n);var a=s-i;var o;var l;var c;if(s===i){o=0}else if(t===s){o=(r-n)/a}else if(r===s){o=2+(n-t)/a}else if(n===s){o=4+(t-r)/a}o=Math.min(o*60,360);if(o<0){o+=360}c=(i+s)/2;if(s===i){l=0}else if(c<=.5){l=a/(s+i)}else{l=a/(2-s-i)}return[o,l*100,c*100]};a.rgb.hsv=function(e){var t;var r;var n;var i;var s;var a=e[0]/255;var o=e[1]/255;var l=e[2]/255;var c=Math.max(a,o,l);var u=c-Math.min(a,o,l);var diffc=function(e){return(c-e)/6/u+1/2};if(u===0){i=s=0}else{s=u/c;t=diffc(a);r=diffc(o);n=diffc(l);if(a===c){i=n-r}else if(o===c){i=1/3+t-n}else if(l===c){i=2/3+r-t}if(i<0){i+=1}else if(i>1){i-=1}}return[i*360,s*100,c*100]};a.rgb.hwb=function(e){var t=e[0];var r=e[1];var n=e[2];var i=a.rgb.hsl(e)[0];var s=1/255*Math.min(t,Math.min(r,n));n=1-1/255*Math.max(t,Math.max(r,n));return[i,s*100,n*100]};a.rgb.cmyk=function(e){var t=e[0]/255;var r=e[1]/255;var n=e[2]/255;var i;var s;var a;var o;o=Math.min(1-t,1-r,1-n);i=(1-t-o)/(1-o)||0;s=(1-r-o)/(1-o)||0;a=(1-n-o)/(1-o)||0;return[i*100,s*100,a*100,o*100]};function comparativeDistance(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}a.rgb.keyword=function(e){var t=i[e];if(t){return t}var r=Infinity;var s;for(var a in n){if(n.hasOwnProperty(a)){var o=n[a];var l=comparativeDistance(e,o);if(l.04045?Math.pow((t+.055)/1.055,2.4):t/12.92;r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var i=t*.4124+r*.3576+n*.1805;var s=t*.2126+r*.7152+n*.0722;var a=t*.0193+r*.1192+n*.9505;return[i*100,s*100,a*100]};a.rgb.lab=function(e){var t=a.rgb.xyz(e);var r=t[0];var n=t[1];var i=t[2];var s;var o;var l;r/=95.047;n/=100;i/=108.883;r=r>.008856?Math.pow(r,1/3):7.787*r+16/116;n=n>.008856?Math.pow(n,1/3):7.787*n+16/116;i=i>.008856?Math.pow(i,1/3):7.787*i+16/116;s=116*n-16;o=500*(r-n);l=200*(n-i);return[s,o,l]};a.hsl.rgb=function(e){var t=e[0]/360;var r=e[1]/100;var n=e[2]/100;var i;var s;var a;var o;var l;if(r===0){l=n*255;return[l,l,l]}if(n<.5){s=n*(1+r)}else{s=n+r-n*r}i=2*n-s;o=[0,0,0];for(var c=0;c<3;c++){a=t+1/3*-(c-1);if(a<0){a++}if(a>1){a--}if(6*a<1){l=i+(s-i)*6*a}else if(2*a<1){l=s}else if(3*a<2){l=i+(s-i)*(2/3-a)*6}else{l=i}o[c]=l*255}return o};a.hsl.hsv=function(e){var t=e[0];var r=e[1]/100;var n=e[2]/100;var i=r;var s=Math.max(n,.01);var a;var o;n*=2;r*=n<=1?n:2-n;i*=s<=1?s:2-s;o=(n+r)/2;a=n===0?2*i/(s+i):2*r/(n+r);return[t,a*100,o*100]};a.hsv.rgb=function(e){var t=e[0]/60;var r=e[1]/100;var n=e[2]/100;var i=Math.floor(t)%6;var s=t-Math.floor(t);var a=255*n*(1-r);var o=255*n*(1-r*s);var l=255*n*(1-r*(1-s));n*=255;switch(i){case 0:return[n,l,a];case 1:return[o,n,a];case 2:return[a,n,l];case 3:return[a,o,n];case 4:return[l,a,n];case 5:return[n,a,o]}};a.hsv.hsl=function(e){var t=e[0];var r=e[1]/100;var n=e[2]/100;var i=Math.max(n,.01);var s;var a;var o;o=(2-r)*n;s=(2-r)*i;a=r*i;a/=s<=1?s:2-s;a=a||0;o/=2;return[t,a*100,o*100]};a.hwb.rgb=function(e){var t=e[0]/360;var r=e[1]/100;var n=e[2]/100;var i=r+n;var s;var a;var o;var l;if(i>1){r/=i;n/=i}s=Math.floor(6*t);a=1-n;o=6*t-s;if((s&1)!==0){o=1-o}l=r+o*(a-r);var c;var u;var d;switch(s){default:case 6:case 0:c=a;u=l;d=r;break;case 1:c=l;u=a;d=r;break;case 2:c=r;u=a;d=l;break;case 3:c=r;u=l;d=a;break;case 4:c=l;u=r;d=a;break;case 5:c=a;u=r;d=l;break}return[c*255,u*255,d*255]};a.cmyk.rgb=function(e){var t=e[0]/100;var r=e[1]/100;var n=e[2]/100;var i=e[3]/100;var s;var a;var o;s=1-Math.min(1,t*(1-i)+i);a=1-Math.min(1,r*(1-i)+i);o=1-Math.min(1,n*(1-i)+i);return[s*255,a*255,o*255]};a.xyz.rgb=function(e){var t=e[0]/100;var r=e[1]/100;var n=e[2]/100;var i;var s;var a;i=t*3.2406+r*-1.5372+n*-.4986;s=t*-.9689+r*1.8758+n*.0415;a=t*.0557+r*-.204+n*1.057;i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92;s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*12.92;a=a>.0031308?1.055*Math.pow(a,1/2.4)-.055:a*12.92;i=Math.min(Math.max(0,i),1);s=Math.min(Math.max(0,s),1);a=Math.min(Math.max(0,a),1);return[i*255,s*255,a*255]};a.xyz.lab=function(e){var t=e[0];var r=e[1];var n=e[2];var i;var s;var a;t/=95.047;r/=100;n/=108.883;t=t>.008856?Math.pow(t,1/3):7.787*t+16/116;r=r>.008856?Math.pow(r,1/3):7.787*r+16/116;n=n>.008856?Math.pow(n,1/3):7.787*n+16/116;i=116*r-16;s=500*(t-r);a=200*(r-n);return[i,s,a]};a.lab.xyz=function(e){var t=e[0];var r=e[1];var n=e[2];var i;var s;var a;s=(t+16)/116;i=r/500+s;a=s-n/200;var o=Math.pow(s,3);var l=Math.pow(i,3);var c=Math.pow(a,3);s=o>.008856?o:(s-16/116)/7.787;i=l>.008856?l:(i-16/116)/7.787;a=c>.008856?c:(a-16/116)/7.787;i*=95.047;s*=100;a*=108.883;return[i,s,a]};a.lab.lch=function(e){var t=e[0];var r=e[1];var n=e[2];var i;var s;var a;i=Math.atan2(n,r);s=i*360/2/Math.PI;if(s<0){s+=360}a=Math.sqrt(r*r+n*n);return[t,a,s]};a.lch.lab=function(e){var t=e[0];var r=e[1];var n=e[2];var i;var s;var a;a=n/360*2*Math.PI;i=r*Math.cos(a);s=r*Math.sin(a);return[t,i,s]};a.rgb.ansi16=function(e){var t=e[0];var r=e[1];var n=e[2];var i=1 in arguments?arguments[1]:a.rgb.hsv(e)[2];i=Math.round(i/50);if(i===0){return 30}var s=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(t/255));if(i===2){s+=60}return s};a.hsv.ansi16=function(e){return a.rgb.ansi16(a.hsv.rgb(e),e[2])};a.rgb.ansi256=function(e){var t=e[0];var r=e[1];var n=e[2];if(t===r&&r===n){if(t<8){return 16}if(t>248){return 231}return Math.round((t-8)/247*24)+232}var i=16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5);return i};a.ansi16.rgb=function(e){var t=e%10;if(t===0||t===7){if(e>50){t+=3.5}t=t/10.5*255;return[t,t,t]}var r=(~~(e>50)+1)*.5;var n=(t&1)*r*255;var i=(t>>1&1)*r*255;var s=(t>>2&1)*r*255;return[n,i,s]};a.ansi256.rgb=function(e){if(e>=232){var t=(e-232)*10+8;return[t,t,t]}e-=16;var r;var n=Math.floor(e/36)/5*255;var i=Math.floor((r=e%36)/6)/5*255;var s=r%6/5*255;return[n,i,s]};a.rgb.hex=function(e){var t=((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255);var r=t.toString(16).toUpperCase();return"000000".substring(r.length)+r};a.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t){return[0,0,0]}var r=t[0];if(t[0].length===3){r=r.split("").map((function(e){return e+e})).join("")}var n=parseInt(r,16);var i=n>>16&255;var s=n>>8&255;var a=n&255;return[i,s,a]};a.rgb.hcg=function(e){var t=e[0]/255;var r=e[1]/255;var n=e[2]/255;var i=Math.max(Math.max(t,r),n);var s=Math.min(Math.min(t,r),n);var a=i-s;var o;var l;if(a<1){o=s/(1-a)}else{o=0}if(a<=0){l=0}else if(i===t){l=(r-n)/a%6}else if(i===r){l=2+(n-t)/a}else{l=4+(t-r)/a+4}l/=6;l%=1;return[l*360,a*100,o*100]};a.hsl.hcg=function(e){var t=e[1]/100;var r=e[2]/100;var n=1;var i=0;if(r<.5){n=2*t*r}else{n=2*t*(1-r)}if(n<1){i=(r-.5*n)/(1-n)}return[e[0],n*100,i*100]};a.hsv.hcg=function(e){var t=e[1]/100;var r=e[2]/100;var n=t*r;var i=0;if(n<1){i=(r-n)/(1-n)}return[e[0],n*100,i*100]};a.hcg.rgb=function(e){var t=e[0]/360;var r=e[1]/100;var n=e[2]/100;if(r===0){return[n*255,n*255,n*255]}var i=[0,0,0];var s=t%1*6;var a=s%1;var o=1-a;var l=0;switch(Math.floor(s)){case 0:i[0]=1;i[1]=a;i[2]=0;break;case 1:i[0]=o;i[1]=1;i[2]=0;break;case 2:i[0]=0;i[1]=1;i[2]=a;break;case 3:i[0]=0;i[1]=o;i[2]=1;break;case 4:i[0]=a;i[1]=0;i[2]=1;break;default:i[0]=1;i[1]=0;i[2]=o}l=(1-r)*n;return[(r*i[0]+l)*255,(r*i[1]+l)*255,(r*i[2]+l)*255]};a.hcg.hsv=function(e){var t=e[1]/100;var r=e[2]/100;var n=t+r*(1-t);var i=0;if(n>0){i=t/n}return[e[0],i*100,n*100]};a.hcg.hsl=function(e){var t=e[1]/100;var r=e[2]/100;var n=r*(1-t)+.5*t;var i=0;if(n>0&&n<.5){i=t/(2*n)}else if(n>=.5&&n<1){i=t/(2*(1-n))}return[e[0],i*100,n*100]};a.hcg.hwb=function(e){var t=e[1]/100;var r=e[2]/100;var n=t+r*(1-t);return[e[0],(n-t)*100,(1-n)*100]};a.hwb.hcg=function(e){var t=e[1]/100;var r=e[2]/100;var n=1-r;var i=n-t;var s=0;if(i<1){s=(n-i)/(1-i)}return[e[0],i*100,s*100]};a.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};a.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};a.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};a.gray.hsl=a.gray.hsv=function(e){return[0,0,e[0]]};a.gray.hwb=function(e){return[0,100,e[0]]};a.gray.cmyk=function(e){return[0,0,0,e[0]]};a.gray.lab=function(e){return[e[0],0,0]};a.gray.hex=function(e){var t=Math.round(e[0]/100*255)&255;var r=(t<<16)+(t<<8)+t;var n=r.toString(16).toUpperCase();return"000000".substring(n.length)+n};a.rgb.gray=function(e){var t=(e[0]+e[1]+e[2])/3;return[t/255*100]}},6931:(e,t,r)=>{var n=r(7391);var i=r(880);var s={};var a=Object.keys(n);function wrapRaw(e){var wrappedFn=function(t){if(t===undefined||t===null){return t}if(arguments.length>1){t=Array.prototype.slice.call(arguments)}return e(t)};if("conversion"in e){wrappedFn.conversion=e.conversion}return wrappedFn}function wrapRounded(e){var wrappedFn=function(t){if(t===undefined||t===null){return t}if(arguments.length>1){t=Array.prototype.slice.call(arguments)}var r=e(t);if(typeof r==="object"){for(var n=r.length,i=0;i{var n=r(7391);function buildGraph(){var e={};var t=Object.keys(n);for(var r=t.length,i=0;i{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]}},1069:(e,t,r)=>{var n=r(8510);var i=r(8679);var s=Object.hasOwnProperty;var a=Object.create(null);for(var o in n){if(s.call(n,o)){a[n[o]]=o}}var l=e.exports={to:{},get:{}};l.get=function(e){var t=e.substring(0,3).toLowerCase();var r;var n;switch(t){case"hsl":r=l.get.hsl(e);n="hsl";break;case"hwb":r=l.get.hwb(e);n="hwb";break;default:r=l.get.rgb(e);n="rgb";break}if(!r){return null}return{model:n,value:r}};l.get.rgb=function(e){if(!e){return null}var t=/^#([a-f0-9]{3,4})$/i;var r=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i;var i=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;var a=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;var o=/^(\w+)$/;var l=[0,0,0,1];var c;var u;var d;if(c=e.match(r)){d=c[2];c=c[1];for(u=0;u<3;u++){var f=u*2;l[u]=parseInt(c.slice(f,f+2),16)}if(d){l[3]=parseInt(d,16)/255}}else if(c=e.match(t)){c=c[1];d=c[3];for(u=0;u<3;u++){l[u]=parseInt(c[u]+c[u],16)}if(d){l[3]=parseInt(d+d,16)/255}}else if(c=e.match(i)){for(u=0;u<3;u++){l[u]=parseInt(c[u+1],0)}if(c[4]){if(c[5]){l[3]=parseFloat(c[4])*.01}else{l[3]=parseFloat(c[4])}}}else if(c=e.match(a)){for(u=0;u<3;u++){l[u]=Math.round(parseFloat(c[u+1])*2.55)}if(c[4]){if(c[5]){l[3]=parseFloat(c[4])*.01}else{l[3]=parseFloat(c[4])}}}else if(c=e.match(o)){if(c[1]==="transparent"){return[0,0,0,0]}if(!s.call(n,c[1])){return null}l=n[c[1]];l[3]=1;return l}else{return null}for(u=0;u<3;u++){l[u]=clamp(l[u],0,255)}l[3]=clamp(l[3],0,1);return l};l.get.hsl=function(e){if(!e){return null}var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;var r=e.match(t);if(r){var n=parseFloat(r[4]);var i=(parseFloat(r[1])%360+360)%360;var s=clamp(parseFloat(r[2]),0,100);var a=clamp(parseFloat(r[3]),0,100);var o=clamp(isNaN(n)?1:n,0,1);return[i,s,a,o]}return null};l.get.hwb=function(e){if(!e){return null}var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;var r=e.match(t);if(r){var n=parseFloat(r[4]);var i=(parseFloat(r[1])%360+360)%360;var s=clamp(parseFloat(r[2]),0,100);var a=clamp(parseFloat(r[3]),0,100);var o=clamp(isNaN(n)?1:n,0,1);return[i,s,a,o]}return null};l.to.hex=function(){var e=i(arguments);return"#"+hexDouble(e[0])+hexDouble(e[1])+hexDouble(e[2])+(e[3]<1?hexDouble(Math.round(e[3]*255)):"")};l.to.rgb=function(){var e=i(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};l.to.rgb.percent=function(){var e=i(arguments);var t=Math.round(e[0]/255*100);var r=Math.round(e[1]/255*100);var n=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+r+"%, "+n+"%)":"rgba("+t+"%, "+r+"%, "+n+"%, "+e[3]+")"};l.to.hsl=function(){var e=i(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};l.to.hwb=function(){var e=i(arguments);var t="";if(e.length>=4&&e[3]!==1){t=", "+e[3]}return"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};l.to.keyword=function(e){return a[e.slice(0,3)]};function clamp(e,t,r){return Math.min(Math.max(t,e),r)}function hexDouble(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}},7177:(e,t,r)=>{var n=r(1069);var i=r(6931);var s=[].slice;var a=["keyword","gray","hex"];var o={};Object.keys(i).forEach((function(e){o[s.call(i[e].labels).sort().join("")]=e}));var l={};function Color(e,t){if(!(this instanceof Color)){return new Color(e,t)}if(t&&t in a){t=null}if(t&&!(t in i)){throw new Error("Unknown model: "+t)}var r;var c;if(e==null){this.model="rgb";this.color=[0,0,0];this.valpha=1}else if(e instanceof Color){this.model=e.model;this.color=e.color.slice();this.valpha=e.valpha}else if(typeof e==="string"){var u=n.get(e);if(u===null){throw new Error("Unable to parse color from string: "+e)}this.model=u.model;c=i[this.model].channels;this.color=u.value.slice(0,c);this.valpha=typeof u.value[c]==="number"?u.value[c]:1}else if(e.length){this.model=t||"rgb";c=i[this.model].channels;var d=s.call(e,0,c);this.color=zeroArray(d,c);this.valpha=typeof e[c]==="number"?e[c]:1}else if(typeof e==="number"){e&=16777215;this.model="rgb";this.color=[e>>16&255,e>>8&255,e&255];this.valpha=1}else{this.valpha=1;var f=Object.keys(e);if("alpha"in e){f.splice(f.indexOf("alpha"),1);this.valpha=typeof e.alpha==="number"?e.alpha:0}var h=f.sort().join("");if(!(h in o)){throw new Error("Unable to parse color from object: "+JSON.stringify(e))}this.model=o[h];var p=i[this.model].labels;var g=[];for(r=0;rr){return(t+.05)/(r+.05)}return(r+.05)/(t+.05)},level:function(e){var t=this.contrast(e);if(t>=7.1){return"AAA"}return t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;var t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128},isLight:function(){return!this.isDark()},negate:function(){var e=this.rgb();for(var t=0;t<3;t++){e.color[t]=255-e.color[t]}return e},lighten:function(e){var t=this.hsl();t.color[2]+=t.color[2]*e;return t},darken:function(e){var t=this.hsl();t.color[2]-=t.color[2]*e;return t},saturate:function(e){var t=this.hsl();t.color[1]+=t.color[1]*e;return t},desaturate:function(e){var t=this.hsl();t.color[1]-=t.color[1]*e;return t},whiten:function(e){var t=this.hwb();t.color[1]+=t.color[1]*e;return t},blacken:function(e){var t=this.hwb();t.color[2]+=t.color[2]*e;return t},grayscale:function(){var e=this.rgb().color;var t=e[0]*.3+e[1]*.59+e[2]*.11;return Color.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl();var r=t.color[0];r=(r+e)%360;r=r<0?360+r:r;t.color[0]=r;return t},mix:function(e,t){if(!e||!e.rgb){throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e)}var r=e.rgb();var n=this.rgb();var i=t===undefined?.5:t;var s=2*i-1;var a=r.alpha()-n.alpha();var o=((s*a===-1?s:(s+a)/(1+s*a))+1)/2;var l=1-o;return Color.rgb(o*r.red()+l*n.red(),o*r.green()+l*n.green(),o*r.blue()+l*n.blue(),r.alpha()*i+n.alpha()*(1-i))}};Object.keys(i).forEach((function(e){if(a.indexOf(e)!==-1){return}var t=i[e].channels;Color.prototype[e]=function(){if(this.model===e){return new Color(this)}if(arguments.length){return new Color(arguments,e)}var r=typeof arguments[t]==="number"?t:this.valpha;return new Color(assertArray(i[this.model][e].raw(this.color)).concat(r),e)};Color[e]=function(r){if(typeof r==="number"){r=zeroArray(s.call(arguments),t)}return new Color(r,e)}}));function roundTo(e,t){return Number(e.toFixed(t))}function roundToPlace(e){return function(t){return roundTo(t,e)}}function getset(e,t,r){e=Array.isArray(e)?e:[e];e.forEach((function(e){(l[e]||(l[e]=[]))[t]=r}));e=e[0];return function(n){var i;if(arguments.length){if(r){n=r(n)}i=this[e]();i.color[t]=n;return i}i=this[e]().color[t];if(r){i=r(i)}return i}}function maxfn(e){return function(t){return Math.max(0,Math.min(e,t))}}function assertArray(e){return Array.isArray(e)?e:[e]}function zeroArray(e,t){for(var r=0;r{var n=r(7177),i=r(7014);e.exports=function colorspace(e,t){var r=e.split(t||":");var s=i(r[0]);if(!r.length)return s;for(var a=0,o=r.length-1;a{e.exports=function enabled(e,t){if(!t)return false;var r=t.split(/[\s,]+/),n=0;for(;n-1){return i}return null}};function assign(e){var t=[];for(var r=1;r3?0:(e-e%10!==10?1:0)*e%10]}};var h=assign({},f);var setGlobalDateI18n=function(e){return h=assign(h,e)};var regexEscape=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")};var pad=function(e,t){if(t===void 0){t=2}e=String(e);while(e.length0?"-":"+")+pad(Math.floor(Math.abs(t)/60)*100+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+pad(Math.floor(Math.abs(t)/60),2)+":"+pad(Math.abs(t)%60,2)}};var monthParse=function(e){return+e-1};var g=[null,r];var m=[null,a];var v=["isPm",a,function(e,t){var r=e.toLowerCase();if(r===t.amPm[0]){return 0}else if(r===t.amPm[1]){return 1}return null}];var y=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(e){var t=(e+"").match(/([+-]|\d\d)/gi);if(t){var r=+t[1]*60+parseInt(t[2],10);return t[0]==="+"?r:-r}return 0}];var b={D:["day",r],DD:["day",n],Do:["day",r+a,function(e){return parseInt(e,10)}],M:["month",r,monthParse],MM:["month",n,monthParse],YY:["year",n,function(e){var t=new Date;var r=+(""+t.getFullYear()).substr(0,2);return+(""+(+e>68?r-1:r)+e)}],h:["hour",r,undefined,"isPm"],hh:["hour",n,undefined,"isPm"],H:["hour",r],HH:["hour",n],m:["minute",r],mm:["minute",n],s:["second",r],ss:["second",n],YYYY:["year",s],S:["millisecond","\\d",function(e){return+e*100}],SS:["millisecond",n,function(e){return+e*10}],SSS:["millisecond",i],d:g,dd:g,ddd:m,dddd:m,MMM:["month",a,monthUpdate("monthNamesShort")],MMMM:["month",a,monthUpdate("monthNames")],a:v,A:v,ZZ:y,Z:y};var S={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"};var setGlobalDateMasks=function(e){return assign(S,e)};var format=function(e,r,n){if(r===void 0){r=S["default"]}if(n===void 0){n={}}if(typeof e==="number"){e=new Date(e)}if(Object.prototype.toString.call(e)!=="[object Date]"||isNaN(e.getTime())){throw new Error("Invalid Date pass to format")}r=S[r]||r;var i=[];r=r.replace(o,(function(e,t){i.push(t);return"@@@"}));var s=assign(assign({},h),n);r=r.replace(t,(function(t){return p[t](e,s)}));return r.replace(/@@@/g,(function(){return i.shift()}))};function parse(e,r,n){if(n===void 0){n={}}if(typeof r!=="string"){throw new Error("Invalid format in fecha parse")}r=S[r]||r;if(e.length>1e3){return null}var i=new Date;var s={year:i.getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null};var a=[];var l=[];var c=r.replace(o,(function(e,t){l.push(regexEscape(t));return"@@@"}));var u={};var d={};c=regexEscape(c).replace(t,(function(e){var t=b[e];var r=t[0],n=t[1],i=t[3];if(u[r]){throw new Error("Invalid format. "+r+" specified twice in format")}u[r]=true;if(i){d[i]=true}a.push(t);return"("+n+")"}));Object.keys(d).forEach((function(e){if(!u[e]){throw new Error("Invalid format. "+e+" is required in specified format")}}));c=c.replace(/@@@/g,(function(){return l.shift()}));var f=e.match(new RegExp(c,"i"));if(!f){return null}var p=assign(assign({},h),n);for(var g=1;g11||s.month<0||s.day>31||s.day<1||s.hour>23||s.hour<0||s.minute>59||s.minute<0||s.second>59||s.second<0){return null}}return w}var _={format:format,parse:parse,defaultI18n:f,setGlobalDateI18n:setGlobalDateI18n,setGlobalDateMasks:setGlobalDateMasks};e.assign=assign;e.default=_;e.format=format;e.parse=parse;e.defaultI18n=f;e.setGlobalDateI18n=setGlobalDateI18n;e.setGlobalDateMasks=setGlobalDateMasks;Object.defineProperty(e,"__esModule",{value:true})}))},2743:e=>{var t=Object.prototype.toString;e.exports=function name(e){if("string"===typeof e.displayName&&e.constructor.name){return e.displayName}else if("string"===typeof e.name&&e.name){return e.name}if("object"===typeof e&&e.constructor&&"string"===typeof e.constructor.name)return e.constructor.name;var r=e.toString(),n=t.call(e).slice(8,-1);if("Function"===n){r=r.substring(r.indexOf("(")+1,r.indexOf(")"))}else{r=n}return r||"anonymous"}},4124:(e,t,r)=>{try{var n=r(3837);if(typeof n.inherits!=="function")throw"";e.exports=n.inherits}catch(t){e.exports=r(8544)}},8544:e=>{if(typeof Object.create==="function"){e.exports=function inherits(e,t){if(t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}}else{e.exports=function inherits(e,t){if(t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype;e.prototype=new TempCtor;e.prototype.constructor=e}}}},1554:e=>{const isStream=e=>e!==null&&typeof e==="object"&&typeof e.pipe==="function";isStream.writable=e=>isStream(e)&&e.writable!==false&&typeof e._write==="function"&&typeof e._writableState==="object";isStream.readable=e=>isStream(e)&&e.readable!==false&&typeof e._read==="function"&&typeof e._readableState==="object";isStream.duplex=e=>isStream.writable(e)&&isStream.readable(e);isStream.transform=e=>isStream.duplex(e)&&typeof e._transform==="function";e.exports=isStream},6287:e=>{function Kuler(e,t){if(t)return new Kuler(e).style(t);if(!(this instanceof Kuler))return new Kuler(e);this.text=e}Kuler.prototype.prefix="[";Kuler.prototype.suffix="m";Kuler.prototype.hex=function hex(e){e=e[0]==="#"?e.substring(1):e;if(e.length===3){e=e.split("");e[5]=e[2];e[4]=e[2];e[3]=e[1];e[2]=e[1];e[1]=e[0];e=e.join("")}var t=e.substring(0,2),r=e.substring(2,4),n=e.substring(4,6);return[parseInt(t,16),parseInt(r,16),parseInt(n,16)]};Kuler.prototype.rgb=function rgb(e,t,r){var n=e/255*5,i=t/255*5,s=r/255*5;return this.ansi(n,i,s)};Kuler.prototype.ansi=function ansi(e,t,r){var n=Math.round(e),i=Math.round(t),s=Math.round(r);return 16+n*36+i*6+s};Kuler.prototype.reset=function reset(){return this.prefix+"39;49"+this.suffix};Kuler.prototype.style=function style(e){return this.prefix+"38;5;"+this.rgb.apply(this,this.hex(e))+this.suffix+this.text+this.reset()};e.exports=Kuler},7994:e=>{var t=1/0;var r="[object Symbol]";var n=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;var i=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;var s="\\ud800-\\udfff",a="\\u0300-\\u036f\\ufe20-\\ufe23",o="\\u20d0-\\u20f0",l="\\u2700-\\u27bf",c="a-z\\xdf-\\xf6\\xf8-\\xff",u="\\xac\\xb1\\xd7\\xf7",d="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",f="\\u2000-\\u206f",h=" \\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",p="A-Z\\xc0-\\xd6\\xd8-\\xde",g="\\ufe0e\\ufe0f",m=u+d+f+h;var v="['’]",y="["+s+"]",b="["+m+"]",S="["+a+o+"]",_="\\d+",w="["+l+"]",C="["+c+"]",E="[^"+s+m+_+l+c+p+"]",T="\\ud83c[\\udffb-\\udfff]",R="(?:"+S+"|"+T+")",k="[^"+s+"]",O="(?:\\ud83c[\\udde6-\\uddff]){2}",M="[\\ud800-\\udbff][\\udc00-\\udfff]",x="["+p+"]",A="\\u200d";var P="(?:"+C+"|"+E+")",N="(?:"+x+"|"+E+")",I="(?:"+v+"(?:d|ll|m|re|s|t|ve))?",D="(?:"+v+"(?:D|LL|M|RE|S|T|VE))?",L=R+"?",j="["+g+"]?",B="(?:"+A+"(?:"+[k,O,M].join("|")+")"+j+L+")*",F=j+L+B,U="(?:"+[w,O,M].join("|")+")"+F,z="(?:"+[k+S+"?",S,O,M,y].join("|")+")";var H=RegExp(v,"g");var W=RegExp(S,"g");var q=RegExp(T+"(?="+T+")|"+z+F,"g");var $=RegExp([x+"?"+C+"+"+I+"(?="+[b,x,"$"].join("|")+")",N+"+"+D+"(?="+[b,x+P,"$"].join("|")+")",x+"?"+P+"+"+I,x+"+"+D,_,U].join("|"),"g");var G=RegExp("["+A+s+a+o+g+"]");var V=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var Y={"À":"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","ſ":"ss"};var K=typeof global=="object"&&global&&global.Object===Object&&global;var J=typeof self=="object"&&self&&self.Object===Object&&self;var X=K||J||Function("return this")();function arrayReduce(e,t,r,n){var i=-1,s=e?e.length:0;if(n&&s){r=e[++i]}while(++ii?0:i+t}r=r>i?i:r;if(r<0){r+=i}i=t>r?0:r-t>>>0;t>>>=0;var s=Array(i);while(++n=n?e:baseSlice(e,t,r)}function createCaseFirst(e){return function(t){t=toString(t);var r=hasUnicode(t)?stringToArray(t):undefined;var n=r?r[0]:t.charAt(0);var i=r?castSlice(r,1).join(""):t.slice(1);return n[e]()+i}}function createCompounder(e){return function(t){return arrayReduce(words(deburr(t).replace(H,"")),e,"")}}function isObjectLike(e){return!!e&&typeof e=="object"}function isSymbol(e){return typeof e=="symbol"||isObjectLike(e)&&ee.call(e)==r}function toString(e){return e==null?"":baseToString(e)}var ie=createCompounder((function(e,t,r){t=t.toLowerCase();return e+(r?capitalize(t):t)}));function capitalize(e){return se(toString(e).toLowerCase())}function deburr(e){e=toString(e);return e&&e.replace(i,Z).replace(W,"")}var se=createCaseFirst("toUpperCase");function words(e,t,r){e=toString(e);t=r?undefined:t;if(t===undefined){return hasUnicodeWord(e)?unicodeWords(e):asciiWords(e)}return e.match(t)||[]}e.exports=ie},9748:(e,t,r)=>{const n=r(3791);e.exports=n((e=>{e.message=`\t${e.message}`;return e}))},6811:(e,t,r)=>{const{Colorizer:n}=r(3848);const{Padder:i}=r(7033);const{configs:s,MESSAGE:a}=r(3937);class CliFormat{constructor(e={}){if(!e.levels){e.levels=s.cli.levels}this.colorizer=new n(e);this.padder=new i(e);this.options=e}transform(e,t){this.colorizer.transform(this.padder.transform(e,t),t);e[a]=`${e.level}:${e.message}`;return e}}e.exports=e=>new CliFormat(e);e.exports.Format=CliFormat},3848:(e,t,r)=>{const n=r(6009);const{LEVEL:i,MESSAGE:s}=r(3937);n.enabled=true;const a=/\s+/;class Colorizer{constructor(e={}){if(e.colors){this.addColors(e.colors)}this.options=e}static addColors(e){const t=Object.keys(e).reduce(((t,r)=>{t[r]=a.test(e[r])?e[r].split(a):e[r];return t}),{});Colorizer.allColors=Object.assign({},Colorizer.allColors||{},t);return Colorizer.allColors}addColors(e){return Colorizer.addColors(e)}colorize(e,t,r){if(typeof r==="undefined"){r=t}if(!Array.isArray(Colorizer.allColors[e])){return n[Colorizer.allColors[e]](r)}for(let t=0,i=Colorizer.allColors[e].length;tnew Colorizer(e);e.exports.Colorizer=e.exports.Format=Colorizer},7315:(e,t,r)=>{const n=r(3791);function cascade(e){if(!e.every(isValidFormat)){return}return t=>{let r=t;for(let t=0;t{const t=n(cascade(e));const r=t();r.Format=t.Format;return r};e.exports.cascade=cascade},2397:(e,t,r)=>{const n=r(3791);const{LEVEL:i,MESSAGE:s}=r(3937);e.exports=n(((e,{stack:t,cause:r})=>{if(e instanceof Error){const n=Object.assign({},e,{level:e.level,[i]:e[i]||e.level,message:e.message,[s]:e[s]||e.message});if(t)n.stack=e.stack;if(r)n.cause=e.cause;return n}if(!(e.message instanceof Error))return e;const n=e.message;Object.assign(e,n);e.message=n.message;e[s]=n.message;if(t)e.stack=n.stack;if(r)e.cause=n.cause;return e}))},3791:e=>{class InvalidFormatError extends Error{constructor(e){super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${e.toString().split("\n")[0]}\n`);Error.captureStackTrace(this,InvalidFormatError)}}e.exports=e=>{if(e.length>2){throw new InvalidFormatError(e)}function Format(e={}){this.options=e}Format.prototype.transform=e;function createFormatWrap(e){return new Format(e)}createFormatWrap.Format=Format;return createFormatWrap}},2955:(e,t,r)=>{const n=t.format=r(3791);t.levels=r(3180);function exposeFormat(e,t){Object.defineProperty(n,e,{get(){return t()},configurable:true})}exposeFormat("align",(function(){return r(9748)}));exposeFormat("errors",(function(){return r(2397)}));exposeFormat("cli",(function(){return r(6811)}));exposeFormat("combine",(function(){return r(7315)}));exposeFormat("colorize",(function(){return r(3848)}));exposeFormat("json",(function(){return r(5669)}));exposeFormat("label",(function(){return r(6941)}));exposeFormat("logstash",(function(){return r(4772)}));exposeFormat("metadata",(function(){return r(9760)}));exposeFormat("ms",(function(){return r(4734)}));exposeFormat("padLevels",(function(){return r(7033)}));exposeFormat("prettyPrint",(function(){return r(6182)}));exposeFormat("printf",(function(){return r(1843)}));exposeFormat("simple",(function(){return r(5313)}));exposeFormat("splat",(function(){return r(7081)}));exposeFormat("timestamp",(function(){return r(8381)}));exposeFormat("uncolorize",(function(){return r(6420)}))},5669:(e,t,r)=>{const n=r(3791);const{MESSAGE:i}=r(3937);const s=r(7560);function replacer(e,t){if(typeof t==="bigint")return t.toString();return t}e.exports=n(((e,t)=>{const r=s.configure(t);e[i]=r(e,t.replacer||replacer,t.space);return e}))},6941:(e,t,r)=>{const n=r(3791);e.exports=n(((e,t)=>{if(t.message){e.message=`[${t.label}] ${e.message}`;return e}e.label=t.label;return e}))},3180:(e,t,r)=>{const{Colorizer:n}=r(3848);e.exports=e=>{n.addColors(e.colors||e);return e}},4772:(e,t,r)=>{const n=r(3791);const{MESSAGE:i}=r(3937);const s=r(7560);e.exports=n((e=>{const t={};if(e.message){t["@message"]=e.message;delete e.message}if(e.timestamp){t["@timestamp"]=e.timestamp;delete e.timestamp}t["@fields"]=e;e[i]=s(t);return e}))},9760:(e,t,r)=>{const n=r(3791);function fillExcept(e,t,r){const n=t.reduce(((t,r)=>{t[r]=e[r];delete e[r];return t}),{});const i=Object.keys(e).reduce(((t,r)=>{t[r]=e[r];delete e[r];return t}),{});Object.assign(e,n,{[r]:i});return e}function fillWith(e,t,r){e[r]=t.reduce(((t,r)=>{t[r]=e[r];delete e[r];return t}),{});return e}e.exports=n(((e,t={})=>{let r="metadata";if(t.key){r=t.key}let n=[];if(!t.fillExcept&&!t.fillWith){n.push("level");n.push("message")}if(t.fillExcept){n=t.fillExcept}if(n.length>0){return fillExcept(e,n,r)}if(t.fillWith){return fillWith(e,t.fillWith,r)}return e}))},4734:function(e,t,r){const n=r(3791);const i=r(900);e.exports=n((e=>{const t=+new Date;this.diff=t-(this.prevTime||t);this.prevTime=t;e.ms=`+${i(this.diff)}`;return e}))},1101:(e,t,r)=>{var n={};e["exports"]=n;n.themes={};var i=r(3837);var s=n.styles=r(8802);var a=Object.defineProperties;var o=new RegExp(/[\r\n]+/g);n.supportsColor=r(5758).supportsColor;if(typeof n.enabled==="undefined"){n.enabled=n.supportsColor()!==false}n.enable=function(){n.enabled=true};n.disable=function(){n.enabled=false};n.stripColors=n.strip=function(e){return(""+e).replace(/\x1B\[\d+m/g,"")};var l=n.stylize=function stylize(e,t){if(!n.enabled){return e+""}var r=s[t];if(!r&&t in n){return n[t](e)}return r.open+e+r.close};var c=/[|\\{}()[\]^$+*?.]/g;var escapeStringRegexp=function(e){if(typeof e!=="string"){throw new TypeError("Expected a string")}return e.replace(c,"\\$&")};function build(e){var t=function builder(){return applyStyle.apply(builder,arguments)};t._styles=e;t.__proto__=d;return t}var u=function(){var e={};s.grey=s.gray;Object.keys(s).forEach((function(t){s[t].closeRe=new RegExp(escapeStringRegexp(s[t].close),"g");e[t]={get:function(){return build(this._styles.concat(t))}}}));return e}();var d=a((function colors(){}),u);function applyStyle(){var e=Array.prototype.slice.call(arguments);var t=e.map((function(e){if(e!=null&&e.constructor===String){return e}else{return i.inspect(e)}})).join(" ");if(!n.enabled||!t){return t}var r=t.indexOf("\n")!=-1;var a=this._styles;var l=a.length;while(l--){var c=s[a[l]];t=c.open+t.replace(c.closeRe,c.open)+c.close;if(r){t=t.replace(o,(function(e){return c.close+e+c.open}))}}return t}n.setTheme=function(e){if(typeof e==="string"){console.log("colors.setTheme now only accepts an object, not a string. "+"If you are trying to set a theme from a file, it is now your (the "+"caller's) responsibility to require the file. The old syntax "+"looked like colors.setTheme(__dirname + "+"'/../themes/generic-logging.js'); The new syntax looks like "+"colors.setTheme(require(__dirname + "+"'/../themes/generic-logging.js'));");return}for(var t in e){(function(t){n[t]=function(r){if(typeof e[t]==="object"){var i=r;for(var s in e[t]){i=n[e[t][s]](i)}return i}return n[e[t]](r)}})(t)}};function init(){var e={};Object.keys(u).forEach((function(t){e[t]={get:function(){return build([t])}}}));return e}var f=function sequencer(e,t){var r=t.split("");r=r.map(e);return r.join("")};n.trap=r(9859);n.zalgo=r(1958);n.maps={};n.maps.america=r(581)(n);n.maps.zebra=r(5623)(n);n.maps.rainbow=r(7569)(n);n.maps.random=r(5179)(n);for(var h in n.maps){(function(e){n[e]=function(t){return f(n.maps[e],t)}})(h)}a(n,init())},9859:e=>{e["exports"]=function runTheTrap(e,t){var r="";e=e||"Run the trap, drop the bass";e=e.split("");var n={a:["@","Ą","Ⱥ","Ʌ","Δ","Λ","Д"],b:["ß","Ɓ","Ƀ","ɮ","β","฿"],c:["©","Ȼ","Ͼ"],d:["Ð","Ɗ","Ԁ","ԁ","Ԃ","ԃ"],e:["Ë","ĕ","Ǝ","ɘ","Σ","ξ","Ҽ","੬"],f:["Ӻ"],g:["ɢ"],h:["Ħ","ƕ","Ң","Һ","Ӈ","Ԋ"],i:["༏"],j:["Ĵ"],k:["ĸ","Ҡ","Ӄ","Ԟ"],l:["Ĺ"],m:["ʍ","Ӎ","ӎ","Ԡ","ԡ","൩"],n:["Ñ","ŋ","Ɲ","Ͷ","Π","Ҋ"],o:["Ø","õ","ø","Ǿ","ʘ","Ѻ","ם","۝","๏"],p:["Ƿ","Ҏ"],q:["্"],r:["®","Ʀ","Ȑ","Ɍ","ʀ","Я"],s:["§","Ϟ","ϟ","Ϩ"],t:["Ł","Ŧ","ͳ"],u:["Ʊ","Ս"],v:["ט"],w:["Ш","Ѡ","Ѽ","൰"],x:["Ҳ","Ӿ","Ӽ","ӽ"],y:["¥","Ұ","Ӌ"],z:["Ƶ","ɀ"]};e.forEach((function(e){e=e.toLowerCase();var t=n[e]||[" "];var i=Math.floor(Math.random()*t.length);if(typeof n[e]!=="undefined"){r+=n[e][i]}else{r+=e}}));return r}},1958:e=>{e["exports"]=function zalgo(e,t){e=e||" he is here ";var r={up:["̍","̎","̄","̅","̿","̑","̆","̐","͒","͗","͑","̇","̈","̊","͂","̓","̈","͊","͋","͌","̃","̂","̌","͐","̀","́","̋","̏","̒","̓","̔","̽","̉","ͣ","ͤ","ͥ","ͦ","ͧ","ͨ","ͩ","ͪ","ͫ","ͬ","ͭ","ͮ","ͯ","̾","͛","͆","̚"],down:["̖","̗","̘","̙","̜","̝","̞","̟","̠","̤","̥","̦","̩","̪","̫","̬","̭","̮","̯","̰","̱","̲","̳","̹","̺","̻","̼","ͅ","͇","͈","͉","͍","͎","͓","͔","͕","͖","͙","͚","̣"],mid:["̕","̛","̀","́","͘","̡","̢","̧","̨","̴","̵","̶","͜","͝","͞","͟","͠","͢","̸","̷","͡"," ҉"]};var n=[].concat(r.up,r.down,r.mid);function randomNumber(e){var t=Math.floor(Math.random()*e);return t}function isChar(e){var t=false;n.filter((function(r){t=r===e}));return t}function heComes(e,t){var n="";var i;var s;t=t||{};t["up"]=typeof t["up"]!=="undefined"?t["up"]:true;t["mid"]=typeof t["mid"]!=="undefined"?t["mid"]:true;t["down"]=typeof t["down"]!=="undefined"?t["down"]:true;t["size"]=typeof t["size"]!=="undefined"?t["size"]:"maxi";e=e.split("");for(s in e){if(isChar(s)){continue}n=n+e[s];i={up:0,down:0,mid:0};switch(t.size){case"mini":i.up=randomNumber(8);i.mid=randomNumber(2);i.down=randomNumber(8);break;case"maxi":i.up=randomNumber(16)+3;i.mid=randomNumber(4)+1;i.down=randomNumber(64)+3;break;default:i.up=randomNumber(8)+1;i.mid=randomNumber(6)/2;i.down=randomNumber(8)+1;break}var a=["up","mid","down"];for(var o in a){var l=a[o];for(var c=0;c<=i[l];c++){if(t[l]){n=n+r[l][randomNumber(r[l].length)]}}}}return n}return heComes(e,t)}},581:e=>{e["exports"]=function(e){return function(t,r,n){if(t===" ")return t;switch(r%3){case 0:return e.red(t);case 1:return e.white(t);case 2:return e.blue(t)}}}},7569:e=>{e["exports"]=function(e){var t=["red","yellow","green","blue","magenta"];return function(r,n,i){if(r===" "){return r}else{return e[t[n++%t.length]](r)}}}},5179:e=>{e["exports"]=function(e){var t=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(r,n,i){return r===" "?r:e[t[Math.round(Math.random()*(t.length-2))]](r)}}},5623:e=>{e["exports"]=function(e){return function(t,r,n){return r%2===0?t:e.inverse(t)}}},8802:e=>{var t={};e["exports"]=t;var r={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(r).forEach((function(e){var n=r[e];var i=t[e]=[];i.open="["+n[0]+"m";i.close="["+n[1]+"m"}))},817:e=>{e.exports=function(e,t){t=t||process.argv||[];var r=t.indexOf("--");var n=/^-{1,2}/.test(e)?"":"--";var i=t.indexOf(n+e);return i!==-1&&(r===-1?true:i{var n=r(2037);var i=r(817);var s=process.env;var a=void 0;if(i("no-color")||i("no-colors")||i("color=false")){a=false}else if(i("color")||i("colors")||i("color=true")||i("color=always")){a=true}if("FORCE_COLOR"in s){a=s.FORCE_COLOR.length===0||parseInt(s.FORCE_COLOR,10)!==0}function translateLevel(e){if(e===0){return false}return{level:e,hasBasic:true,has256:e>=2,has16m:e>=3}}function supportsColor(e){if(a===false){return 0}if(i("color=16m")||i("color=full")||i("color=truecolor")){return 3}if(i("color=256")){return 2}if(e&&!e.isTTY&&a!==true){return 0}var t=a?1:0;if(process.platform==="win32"){var r=n.release().split(".");if(Number(process.versions.node.split(".")[0])>=8&&Number(r[0])>=10&&Number(r[2])>=10586){return Number(r[2])>=14931?3:2}return 1}if("CI"in s){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((function(e){return e in s}))||s.CI_NAME==="codeship"){return 1}return t}if("TEAMCITY_VERSION"in s){return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(s.TEAMCITY_VERSION)?1:0}if("TERM_PROGRAM"in s){var o=parseInt((s.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(s.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(s.TERM)){return 2}if(/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(s.TERM)){return 1}if("COLORTERM"in s){return 1}if(s.TERM==="dumb"){return t}return t}function getSupportLevel(e){var t=supportsColor(e);return translateLevel(t)}e.exports={supportsColor:getSupportLevel,stdout:getSupportLevel(process.stdout),stderr:getSupportLevel(process.stderr)}},6009:(e,t,r)=>{var n=r(1101);e["exports"]=n},7033:(e,t,r)=>{const{configs:n,LEVEL:i,MESSAGE:s}=r(3937);class Padder{constructor(e={levels:n.npm.levels}){this.paddings=Padder.paddingForLevels(e.levels,e.filler);this.options=e}static getLongestLevel(e){const t=Object.keys(e).map((e=>e.length));return Math.max(...t)}static paddingForLevel(e,t,r){const n=r+1-e.length;const i=Math.floor(n/t.length);const s=`${t}${t.repeat(i)}`;return s.slice(0,n)}static paddingForLevels(e,t=" "){const r=Padder.getLongestLevel(e);return Object.keys(e).reduce(((e,n)=>{e[n]=Padder.paddingForLevel(n,t,r);return e}),{})}transform(e,t){e.message=`${this.paddings[e[i]]}${e.message}`;if(e[s]){e[s]=`${this.paddings[e[i]]}${e[s]}`}return e}}e.exports=e=>new Padder(e);e.exports.Padder=e.exports.Format=Padder},6182:(e,t,r)=>{const n=r(3837).inspect;const i=r(3791);const{LEVEL:s,MESSAGE:a,SPLAT:o}=r(3937);e.exports=i(((e,t={})=>{const r=Object.assign({},e);delete r[s];delete r[a];delete r[o];e[a]=n(r,false,t.depth||null,t.colorize);return e}))},1843:(e,t,r)=>{const{MESSAGE:n}=r(3937);class Printf{constructor(e){this.template=e}transform(e){e[n]=this.template(e);return e}}e.exports=e=>new Printf(e);e.exports.Printf=e.exports.Format=Printf},5313:(e,t,r)=>{const n=r(3791);const{MESSAGE:i}=r(3937);const s=r(7560);e.exports=n((e=>{const t=s(Object.assign({},e,{level:undefined,message:undefined,splat:undefined}));const r=e.padding&&e.padding[e.level]||"";if(t!=="{}"){e[i]=`${e.level}:${r} ${e.message} ${t}`}else{e[i]=`${e.level}:${r} ${e.message}`}return e}))},7081:(e,t,r)=>{const n=r(3837);const{SPLAT:i}=r(3937);const s=/%[scdjifoO%]/g;const a=/%%/g;class Splatter{constructor(e){this.options=e}_splat(e,t){const r=e.message;const s=e[i]||e.splat||[];const o=r.match(a);const l=o&&o.length||0;const c=t.length-l;const u=c-s.length;const d=u<0?s.splice(u,-1*u):[];const f=d.length;if(f){for(let t=0;t1?r.splice(0):r;const n=t.length;if(n){for(let r=0;rnew Splatter(e)},8381:(e,t,r)=>{const n=r(4513);const i=r(3791);e.exports=i(((e,t={})=>{if(t.format){e.timestamp=typeof t.format==="function"?t.format():n.format(new Date,t.format)}if(!e.timestamp){e.timestamp=(new Date).toISOString()}if(t.alias){e[t.alias]=e.timestamp}return e}))},6420:(e,t,r)=>{const n=r(6009);const i=r(3791);const{MESSAGE:s}=r(3937);e.exports=i(((e,t)=>{if(t.level!==false){e.level=n.strip(e.level)}if(t.message!==false){e.message=n.strip(String(e.message))}if(t.raw!==false&&e[s]){e[s]=n.strip(String(e[s]))}return e}))},900:e=>{var t=1e3;var r=t*60;var n=r*60;var i=n*24;var s=i*7;var a=i*365.25;e.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0){return parse(e)}else if(r==="number"&&isFinite(e)){return t.long?fmtLong(e):fmtShort(e)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function parse(e){e=String(e);if(e.length>100){return}var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!o){return}var l=parseFloat(o[1]);var c=(o[2]||"ms").toLowerCase();switch(c){case"years":case"year":case"yrs":case"yr":case"y":return l*a;case"weeks":case"week":case"w":return l*s;case"days":case"day":case"d":return l*i;case"hours":case"hour":case"hrs":case"hr":case"h":return l*n;case"minutes":case"minute":case"mins":case"min":case"m":return l*r;case"seconds":case"second":case"secs":case"sec":case"s":return l*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return undefined}}function fmtShort(e){var s=Math.abs(e);if(s>=i){return Math.round(e/i)+"d"}if(s>=n){return Math.round(e/n)+"h"}if(s>=r){return Math.round(e/r)+"m"}if(s>=t){return Math.round(e/t)+"s"}return e+"ms"}function fmtLong(e){var s=Math.abs(e);if(s>=i){return plural(e,s,i,"day")}if(s>=n){return plural(e,s,n,"hour")}if(s>=r){return plural(e,s,r,"minute")}if(s>=t){return plural(e,s,t,"second")}return e+" ms"}function plural(e,t,r,n){var i=t>=r*1.5;return Math.round(e/r)+" "+n+(i?"s":"")}},4118:(e,t,r)=>{var n=r(2743);e.exports=function one(e){var t=0,r;function onetime(){if(t)return r;t=1;r=e.apply(this,arguments);e=null;return r}onetime.displayName=n(e);return onetime}},1629:(e,t,r)=>{var n=r(5881);e.exports=t=n.descriptor=n.Root.fromJSON(r(3571)).lookup(".google.protobuf");var i=n.Namespace,s=n.Root,a=n.Enum,o=n.Type,l=n.Field,c=n.MapField,u=n.OneOf,d=n.Service,f=n.Method;s.fromDescriptor=function fromDescriptor(e){if(typeof e.length==="number")e=t.FileDescriptorSet.decode(e);var r=new s;if(e.file){var n,i;for(var c=0,u;c{e.exports=r(5360)},2134:e=>{e.exports=common;var t=/\/|\./;function common(e,r){if(!t.test(e)){e="google/protobuf/"+e+".proto";r={nested:{google:{nested:{protobuf:{nested:r}}}}}}common[e]=r}common("any",{Any:{fields:{type_url:{type:"string",id:1},value:{type:"bytes",id:2}}}});var r;common("duration",{Duration:r={fields:{seconds:{type:"int64",id:1},nanos:{type:"int32",id:2}}}});common("timestamp",{Timestamp:r});common("empty",{Empty:{fields:{}}});common("struct",{Struct:{fields:{fields:{keyType:"string",type:"Value",id:1}}},Value:{oneofs:{kind:{oneof:["nullValue","numberValue","stringValue","boolValue","structValue","listValue"]}},fields:{nullValue:{type:"NullValue",id:1},numberValue:{type:"double",id:2},stringValue:{type:"string",id:3},boolValue:{type:"bool",id:4},structValue:{type:"Struct",id:5},listValue:{type:"ListValue",id:6}}},NullValue:{values:{NULL_VALUE:0}},ListValue:{fields:{values:{rule:"repeated",type:"Value",id:1}}}});common("wrappers",{DoubleValue:{fields:{value:{type:"double",id:1}}},FloatValue:{fields:{value:{type:"float",id:1}}},Int64Value:{fields:{value:{type:"int64",id:1}}},UInt64Value:{fields:{value:{type:"uint64",id:1}}},Int32Value:{fields:{value:{type:"int32",id:1}}},UInt32Value:{fields:{value:{type:"uint32",id:1}}},BoolValue:{fields:{value:{type:"bool",id:1}}},StringValue:{fields:{value:{type:"string",id:1}}},BytesValue:{fields:{value:{type:"bytes",id:1}}}});common("field_mask",{FieldMask:{fields:{paths:{rule:"repeated",type:"string",id:1}}}});common.get=function get(e){return common[e]||null}},3617:(e,t,r)=>{var n=t;var i=r(7732),s=r(7174);function genValuePartial_fromObject(e,t,r,n){var s=false;if(t.resolvedType){if(t.resolvedType instanceof i){e("switch(d%s){",n);for(var a=t.resolvedType.values,o=Object.keys(a),l=0;l>>0",n,n);break;case"int32":case"sint32":case"sfixed32":e("m%s=d%s|0",n,n);break;case"uint64":c=true;case"int64":case"sint64":case"fixed64":case"sfixed64":e("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j",n,n,c)('else if(typeof d%s==="string")',n)("m%s=parseInt(d%s,10)",n,n)('else if(typeof d%s==="number")',n)("m%s=d%s",n,n)('else if(typeof d%s==="object")',n)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)",n,n,n,c?"true":"");break;case"bytes":e('if(typeof d%s==="string")',n)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)",n,n,n)("else if(d%s.length >= 0)",n)("m%s=d%s",n,n);break;case"string":e("m%s=String(d%s)",n,n);break;case"bool":e("m%s=Boolean(d%s)",n,n);break}}return e}n.fromObject=function fromObject(e){var t=e.fieldsArray;var r=s.codegen(["d"],e.name+"$fromObject")("if(d instanceof this.ctor)")("return d");if(!t.length)return r("return new this.ctor");r("var m=new this.ctor");for(var n=0;n>>0,m%s.high>>>0).toNumber(%s):m%s",n,n,n,n,s?"true":"",n);break;case"bytes":e("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s",n,n,n,n,n);break;default:e("d%s=m%s",n,n);break}}return e}n.toObject=function toObject(e){var t=e.fieldsArray.slice().sort(s.compareFieldsById);if(!t.length)return s.codegen()("return {}");var r=s.codegen(["m","o"],e.name+"$toObject")("if(!o)")("o={}")("var d={}");var n=[],a=[],o=[],l=0;for(;l{e.exports=decoder;var n=r(7732),i=r(288),s=r(7174);function missing(e){return"missing required '"+e.name+"'"}function decoder(e){var t=s.codegen(["r","l"],e.name+"$decode")("if(!(r instanceof Reader))")("r=Reader.create(r)")("var c=l===undefined?r.len:r.pos+l,m=new this.ctor"+(e.fieldsArray.filter((function(e){return e.map})).length?",k,value":""))("while(r.pos>>3){");var r=0;for(;r>>3){")("case 1: k=r.%s(); break",a.keyType)("case 2:");if(i.basic[o]===undefined)t("value=types[%i].decode(r,r.uint32())",r);else t("value=r.%s()",o);t("break")("default:")("r.skipType(tag2&7)")("break")("}")("}");if(i.long[a.keyType]!==undefined)t('%s[typeof k==="object"?util.longToHash(k):k]=value',l);else t("%s[k]=value",l)}else if(a.repeated){t("if(!(%s&&%s.length))",l,l)("%s=[]",l);if(i.packed[o]!==undefined)t("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos{e.exports=encoder;var n=r(7732),i=r(288),s=r(7174);function genTypePartial(e,t,r,n){return t.resolvedType.group?e("types[%i].encode(%s,w.uint32(%i)).uint32(%i)",r,n,(t.id<<3|3)>>>0,(t.id<<3|4)>>>0):e("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()",r,n,(t.id<<3|2)>>>0)}function encoder(e){var t=s.codegen(["m","w"],e.name+"$encode")("if(!w)")("w=Writer.create()");var r,a;var o=e.fieldsArray.slice().sort(s.compareFieldsById);for(var r=0;r>>0,8|i.mapKey[l.keyType],l.keyType);if(d===undefined)t("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()",c,a);else t(".uint32(%i).%s(%s[ks[i]]).ldelim()",16|d,u,a);t("}")("}")}else if(l.repeated){t("if(%s!=null&&%s.length){",a,a);if(l.packed&&i.packed[u]!==undefined){t("w.uint32(%i).fork()",(l.id<<3|2)>>>0)("for(var i=0;i<%s.length;++i)",a)("w.%s(%s[i])",u,a)("w.ldelim()")}else{t("for(var i=0;i<%s.length;++i)",a);if(d===undefined)genTypePartial(t,l,c,a+"[i]");else t("w.uint32(%i).%s(%s[i])",(l.id<<3|d)>>>0,u,a)}t("}")}else{if(l.optional)t("if(%s!=null&&Object.hasOwnProperty.call(m,%j))",a,l.name);if(d===undefined)genTypePartial(t,l,c,a);else t("w.uint32(%i).%s(%s)",(l.id<<3|d)>>>0,u,a)}}return t("return w")}},7732:(e,t,r)=>{e.exports=Enum;var n=r(3575);((Enum.prototype=Object.create(n.prototype)).constructor=Enum).className="Enum";var i=r(6189),s=r(7174);function Enum(e,t,r,i,s,a){n.call(this,e,r);if(t&&typeof t!=="object")throw TypeError("values must be an object");this.valuesById={};this.values=Object.create(this.valuesById);this.comment=i;this.comments=s||{};this.valuesOptions=a;this.reserved=undefined;if(t)for(var o=Object.keys(t),l=0;l{e.exports=Field;var n=r(3575);((Field.prototype=Object.create(n.prototype)).constructor=Field).className="Field";var i=r(7732),s=r(288),a=r(7174);var o;var l=/^required|optional|repeated$/;Field.fromJSON=function fromJSON(e,t){return new Field(e,t.id,t.type,t.rule,t.extend,t.options,t.comment)};function Field(e,t,r,i,o,c,u){if(a.isObject(i)){u=o;c=i;i=o=undefined}else if(a.isObject(o)){u=c;c=o;o=undefined}n.call(this,e,c);if(!a.isInteger(t)||t<0)throw TypeError("id must be a non-negative integer");if(!a.isString(r))throw TypeError("type must be a string");if(i!==undefined&&!l.test(i=i.toString().toLowerCase()))throw TypeError("rule must be a string rule");if(o!==undefined&&!a.isString(o))throw TypeError("extend must be a string");if(i==="proto3_optional"){i="optional"}this.rule=i&&i!=="optional"?i:undefined;this.type=r;this.id=t;this.extend=o||undefined;this.required=i==="required";this.optional=!this.required;this.repeated=i==="repeated";this.map=false;this.message=null;this.partOf=null;this.typeDefault=null;this.defaultValue=null;this.long=a.Long?s.long[r]!==undefined:false;this.bytes=r==="bytes";this.resolvedType=null;this.extensionField=null;this.declaringField=null;this._packed=null;this.comment=u}Object.defineProperty(Field.prototype,"packed",{get:function(){if(this._packed===null)this._packed=this.getOption("packed")!==false;return this._packed}});Field.prototype.setOption=function setOption(e,t,r){if(e==="packed")this._packed=null;return n.prototype.setOption.call(this,e,t,r)};Field.prototype.toJSON=function toJSON(e){var t=e?Boolean(e.keepComments):false;return a.toObject(["rule",this.rule!=="optional"&&this.rule||undefined,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:undefined])};Field.prototype.resolve=function resolve(){if(this.resolved)return this;if((this.typeDefault=s.defaults[this.type])===undefined){this.resolvedType=(this.declaringField?this.declaringField.parent:this.parent).lookupTypeOrEnum(this.type);if(this.resolvedType instanceof o)this.typeDefault=null;else this.typeDefault=this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]}else if(this.options&&this.options.proto3_optional){this.typeDefault=null}if(this.options&&this.options["default"]!=null){this.typeDefault=this.options["default"];if(this.resolvedType instanceof i&&typeof this.typeDefault==="string")this.typeDefault=this.resolvedType.values[this.typeDefault]}if(this.options){if(this.options.packed===true||this.options.packed!==undefined&&this.resolvedType&&!(this.resolvedType instanceof i))delete this.options.packed;if(!Object.keys(this.options).length)this.options=undefined}if(this.long){this.typeDefault=a.Long.fromNumber(this.typeDefault,this.type.charAt(0)==="u");if(Object.freeze)Object.freeze(this.typeDefault)}else if(this.bytes&&typeof this.typeDefault==="string"){var e;if(a.base64.test(this.typeDefault))a.base64.decode(this.typeDefault,e=a.newBuffer(a.base64.length(this.typeDefault)),0);else a.utf8.write(this.typeDefault,e=a.newBuffer(a.utf8.length(this.typeDefault)),0);this.typeDefault=e}if(this.map)this.defaultValue=a.emptyObject;else if(this.repeated)this.defaultValue=a.emptyArray;else this.defaultValue=this.typeDefault;if(this.parent instanceof o)this.parent.ctor.prototype[this.name]=this.defaultValue;return n.prototype.resolve.call(this)};Field.d=function decorateField(e,t,r,n){if(typeof t==="function")t=a.decorateType(t).name;else if(t&&typeof t==="object")t=a.decorateEnum(t).name;return function fieldDecorator(i,s){a.decorateType(i.constructor).add(new Field(s,e,t,r,{default:n}))}};Field._configure=function configure(e){o=e}},6119:(e,t,r)=>{var n=e.exports=r(3242);n.build="light";function load(e,t,r){if(typeof t==="function"){r=t;t=new n.Root}else if(!t)t=new n.Root;return t.load(e,r)}n.load=load;function loadSync(e,t){if(!t)t=new n.Root;return t.loadSync(e)}n.loadSync=loadSync;n.encoder=r(3072);n.decoder=r(5871);n.verifier=r(4334);n.converter=r(3617);n.ReflectionObject=r(3575);n.Namespace=r(6189);n.Root=r(2614);n.Enum=r(7732);n.Type=r(8520);n.Field=r(8213);n.OneOf=r(4408);n.MapField=r(7777);n.Service=r(6178);n.Method=r(7771);n.Message=r(8027);n.wrappers=r(3216);n.types=r(288);n.util=r(7174);n.ReflectionObject._configure(n.Root);n.Namespace._configure(n.Type,n.Service,n.Enum);n.Root._configure(n.Type);n.Field._configure(n.Type)},3242:(e,t,r)=>{var n=t;n.build="minimal";n.Writer=r(3098);n.BufferWriter=r(1863);n.Reader=r(1011);n.BufferReader=r(339);n.util=r(1241);n.rpc=r(6444);n.roots=r(73);n.configure=configure;function configure(){n.util._configure();n.Writer._configure(n.BufferWriter);n.Reader._configure(n.BufferReader)}configure()},5360:(e,t,r)=>{var n=e.exports=r(6119);n.build="full";n.tokenize=r(1157);n.parse=r(2137);n.common=r(2134);n.Root._configure(n.Type,n.parse,n.common)},7777:(e,t,r)=>{e.exports=MapField;var n=r(8213);((MapField.prototype=Object.create(n.prototype)).constructor=MapField).className="MapField";var i=r(288),s=r(7174);function MapField(e,t,r,i,a,o){n.call(this,e,t,i,undefined,undefined,a,o);if(!s.isString(r))throw TypeError("keyType must be a string");this.keyType=r;this.resolvedKeyType=null;this.map=true}MapField.fromJSON=function fromJSON(e,t){return new MapField(e,t.id,t.keyType,t.type,t.options,t.comment)};MapField.prototype.toJSON=function toJSON(e){var t=e?Boolean(e.keepComments):false;return s.toObject(["keyType",this.keyType,"type",this.type,"id",this.id,"extend",this.extend,"options",this.options,"comment",t?this.comment:undefined])};MapField.prototype.resolve=function resolve(){if(this.resolved)return this;if(i.mapKey[this.keyType]===undefined)throw Error("invalid key type: "+this.keyType);return n.prototype.resolve.call(this)};MapField.d=function decorateMapField(e,t,r){if(typeof r==="function")r=s.decorateType(r).name;else if(r&&typeof r==="object")r=s.decorateEnum(r).name;return function mapFieldDecorator(n,i){s.decorateType(n.constructor).add(new MapField(i,e,t,r))}}},8027:(e,t,r)=>{e.exports=Message;var n=r(1241);function Message(e){if(e)for(var t=Object.keys(e),r=0;r{e.exports=Method;var n=r(3575);((Method.prototype=Object.create(n.prototype)).constructor=Method).className="Method";var i=r(7174);function Method(e,t,r,s,a,o,l,c,u){if(i.isObject(a)){l=a;a=o=undefined}else if(i.isObject(o)){l=o;o=undefined}if(!(t===undefined||i.isString(t)))throw TypeError("type must be a string");if(!i.isString(r))throw TypeError("requestType must be a string");if(!i.isString(s))throw TypeError("responseType must be a string");n.call(this,e,l);this.type=t||"rpc";this.requestType=r;this.requestStream=a?true:undefined;this.responseType=s;this.responseStream=o?true:undefined;this.resolvedRequestType=null;this.resolvedResponseType=null;this.comment=c;this.parsedOptions=u}Method.fromJSON=function fromJSON(e,t){return new Method(e,t.type,t.requestType,t.responseType,t.requestStream,t.responseStream,t.options,t.comment,t.parsedOptions)};Method.prototype.toJSON=function toJSON(e){var t=e?Boolean(e.keepComments):false;return i.toObject(["type",this.type!=="rpc"&&this.type||undefined,"requestType",this.requestType,"requestStream",this.requestStream,"responseType",this.responseType,"responseStream",this.responseStream,"options",this.options,"comment",t?this.comment:undefined,"parsedOptions",this.parsedOptions])};Method.prototype.resolve=function resolve(){if(this.resolved)return this;this.resolvedRequestType=this.parent.lookupType(this.requestType);this.resolvedResponseType=this.parent.lookupType(this.responseType);return n.prototype.resolve.call(this)}},6189:(e,t,r)=>{e.exports=Namespace;var n=r(3575);((Namespace.prototype=Object.create(n.prototype)).constructor=Namespace).className="Namespace";var i=r(8213),s=r(7174),a=r(4408);var o,l,c;Namespace.fromJSON=function fromJSON(e,t){return new Namespace(e,t.options).addJSON(t.nested)};function arrayToJSON(e,t){if(!(e&&e.length))return undefined;var r={};for(var n=0;nt)return true;return false};Namespace.isReservedName=function isReservedName(e,t){if(e)for(var r=0;r0){var n=e.shift();if(r.nested&&r.nested[n]){r=r.nested[n];if(!(r instanceof Namespace))throw Error("path conflicts with non-namespace objects")}else r.add(r=new Namespace(n))}if(t)r.addJSON(t);return r};Namespace.prototype.resolveAll=function resolveAll(){var e=this.nestedArray,t=0;while(t-1)return n}else if(n instanceof Namespace&&(n=n.lookup(e.slice(1),t,true)))return n}else for(var i=0;i{e.exports=ReflectionObject;ReflectionObject.className="ReflectionObject";var n=r(7174);var i;function ReflectionObject(e,t){if(!n.isString(e))throw TypeError("name must be a string");if(t&&!n.isObject(t))throw TypeError("options must be an object");this.options=t;this.parsedOptions=null;this.name=e;this.parent=null;this.resolved=false;this.comment=null;this.filename=null}Object.defineProperties(ReflectionObject.prototype,{root:{get:function(){var e=this;while(e.parent!==null)e=e.parent;return e}},fullName:{get:function(){var e=[this.name],t=this.parent;while(t){e.unshift(t.name);t=t.parent}return e.join(".")}}});ReflectionObject.prototype.toJSON=function toJSON(){throw Error()};ReflectionObject.prototype.onAdd=function onAdd(e){if(this.parent&&this.parent!==e)this.parent.remove(this);this.parent=e;this.resolved=false;var t=e.root;if(t instanceof i)t._handleAdd(this)};ReflectionObject.prototype.onRemove=function onRemove(e){var t=e.root;if(t instanceof i)t._handleRemove(this);this.parent=null;this.resolved=false};ReflectionObject.prototype.resolve=function resolve(){if(this.resolved)return this;if(this.root instanceof i)this.resolved=true;return this};ReflectionObject.prototype.getOption=function getOption(e){if(this.options)return this.options[e];return undefined};ReflectionObject.prototype.setOption=function setOption(e,t,r){if(!r||!this.options||this.options[e]===undefined)(this.options||(this.options={}))[e]=t;return this};ReflectionObject.prototype.setParsedOption=function setParsedOption(e,t,r){if(!this.parsedOptions){this.parsedOptions=[]}var i=this.parsedOptions;if(r){var s=i.find((function(t){return Object.prototype.hasOwnProperty.call(t,e)}));if(s){var a=s[e];n.setProperty(a,r,t)}else{s={};s[e]=n.setProperty({},r,t);i.push(s)}}else{var o={};o[e]=t;i.push(o)}return this};ReflectionObject.prototype.setOptions=function setOptions(e,t){if(e)for(var r=Object.keys(e),n=0;n{e.exports=OneOf;var n=r(3575);((OneOf.prototype=Object.create(n.prototype)).constructor=OneOf).className="OneOf";var i=r(8213),s=r(7174);function OneOf(e,t,r,i){if(!Array.isArray(t)){r=t;t=undefined}n.call(this,e,r);if(!(t===undefined||Array.isArray(t)))throw TypeError("fieldNames must be an Array");this.oneof=t||[];this.fieldsArray=[];this.comment=i}OneOf.fromJSON=function fromJSON(e,t){return new OneOf(e,t.oneof,t.options,t.comment)};OneOf.prototype.toJSON=function toJSON(e){var t=e?Boolean(e.keepComments):false;return s.toObject(["options",this.options,"oneof",this.oneof,"comment",t?this.comment:undefined])};function addFieldsToParent(e){if(e.parent)for(var t=0;t-1)this.oneof.splice(t,1);e.partOf=null;return this};OneOf.prototype.onAdd=function onAdd(e){n.prototype.onAdd.call(this,e);var t=this;for(var r=0;r{e.exports=parse;parse.filename=null;parse.defaults={keepCase:false};var n=r(1157),i=r(2614),s=r(8520),a=r(8213),o=r(7777),l=r(4408),c=r(7732),u=r(6178),d=r(7771),f=r(288),h=r(7174);var p=/^[1-9][0-9]*$/,g=/^-?[1-9][0-9]*$/,m=/^0[x][0-9a-fA-F]+$/,v=/^-?0[x][0-9a-fA-F]+$/,y=/^0[0-7]+$/,b=/^-?0[0-7]+$/,S=/^(?![eE])[0-9]*(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,_=/^[a-zA-Z_][a-zA-Z_0-9]*$/,w=/^(?:\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,C=/^(?:\.[a-zA-Z_][a-zA-Z_0-9]*)+$/;function parse(e,t,r){if(!(t instanceof i)){r=t;t=new i}if(!r)r=parse.defaults;var E=r.preferTrailingComment||false;var T=n(e,r.alternateCommentMode||false),R=T.next,k=T.push,O=T.peek,M=T.skip,x=T.cmnt;var A=true,P,N,I,D,L=false;var j=t;var B=r.keepCase?function(e){return e}:h.camelCase;function illegal(e,t,r){var n=parse.filename;if(!r)parse.filename=null;return Error("illegal "+(t||"token")+" '"+e+"' ("+(n?n+", ":"")+"line "+T.line+")")}function readString(){var e=[],t;do{if((t=R())!=='"'&&t!=="'")throw illegal(t);e.push(R());M(t);t=O()}while(t==='"'||t==="'");return e.join("")}function readValue(e){var t=R();switch(t){case"'":case'"':k(t);return readString();case"true":case"TRUE":return true;case"false":case"FALSE":return false}try{return parseNumber(t,true)}catch(r){if(e&&w.test(t))return t;throw illegal(t,"value")}}function readRanges(e,t){var r,n;do{if(t&&((r=O())==='"'||r==="'"))e.push(readString());else e.push([n=parseId(R()),M("to",true)?parseId(R()):n])}while(M(",",true));M(";")}function parseNumber(e,t){var r=1;if(e.charAt(0)==="-"){r=-1;e=e.substring(1)}switch(e){case"inf":case"INF":case"Inf":return r*Infinity;case"nan":case"NAN":case"Nan":case"NaN":return NaN;case"0":return 0}if(p.test(e))return r*parseInt(e,10);if(m.test(e))return r*parseInt(e,16);if(y.test(e))return r*parseInt(e,8);if(S.test(e))return r*parseFloat(e);throw illegal(e,"number",t)}function parseId(e,t){switch(e){case"max":case"MAX":case"Max":return 536870911;case"0":return 0}if(!t&&e.charAt(0)==="-")throw illegal(e,"id");if(g.test(e))return parseInt(e,10);if(v.test(e))return parseInt(e,16);if(b.test(e))return parseInt(e,8);throw illegal(e,"id")}function parsePackage(){if(P!==undefined)throw illegal("package");P=R();if(!w.test(P))throw illegal(P,"name");j=j.define(P);M(";")}function parseImport(){var e=O();var t;switch(e){case"weak":t=I||(I=[]);R();break;case"public":R();default:t=N||(N=[]);break}e=readString();M(";");t.push(e)}function parseSyntax(){M("=");D=readString();L=D==="proto3";if(!L&&D!=="proto2")throw illegal(D,"syntax");M(";")}function parseCommon(e,t){switch(t){case"option":parseOption(e,t);M(";");return true;case"message":parseType(e,t);return true;case"enum":parseEnum(e,t);return true;case"service":parseService(e,t);return true;case"extend":parseExtension(e,t);return true}return false}function ifBlock(e,t,r){var n=T.line;if(e){if(typeof e.comment!=="string"){e.comment=x()}e.filename=parse.filename}if(M("{",true)){var i;while((i=R())!=="}")t(i);M(";",true)}else{if(r)r();M(";");if(e&&(typeof e.comment!=="string"||E))e.comment=x(n)||e.comment}}function parseType(e,t){if(!_.test(t=R()))throw illegal(t,"type name");var r=new s(t);ifBlock(r,(function parseType_block(e){if(parseCommon(r,e))return;switch(e){case"map":parseMapField(r,e);break;case"required":case"repeated":parseField(r,e);break;case"optional":if(L){parseField(r,"proto3_optional")}else{parseField(r,"optional")}break;case"oneof":parseOneOf(r,e);break;case"extensions":readRanges(r.extensions||(r.extensions=[]));break;case"reserved":readRanges(r.reserved||(r.reserved=[]),true);break;default:if(!L||!w.test(e))throw illegal(e);k(e);parseField(r,"optional");break}}));e.add(r)}function parseField(e,t,r){var n=R();if(n==="group"){parseGroup(e,t);return}while(n.endsWith(".")||O().startsWith(".")){n+=R()}if(!w.test(n))throw illegal(n,"type");var i=R();if(!_.test(i))throw illegal(i,"name");i=B(i);M("=");var s=new a(i,parseId(R()),n,t,r);ifBlock(s,(function parseField_block(e){if(e==="option"){parseOption(s,e);M(";")}else throw illegal(e)}),(function parseField_line(){parseInlineOptions(s)}));if(t==="proto3_optional"){var o=new l("_"+i);s.setOption("proto3_optional",true);o.add(s);e.add(o)}else{e.add(s)}if(!L&&s.repeated&&(f.packed[n]!==undefined||f.basic[n]===undefined))s.setOption("packed",false,true)}function parseGroup(e,t){var r=R();if(!_.test(r))throw illegal(r,"name");var n=h.lcFirst(r);if(r===n)r=h.ucFirst(r);M("=");var i=parseId(R());var o=new s(r);o.group=true;var l=new a(n,i,r,t);l.filename=parse.filename;ifBlock(o,(function parseGroup_block(e){switch(e){case"option":parseOption(o,e);M(";");break;case"required":case"repeated":parseField(o,e);break;case"optional":if(L){parseField(o,"proto3_optional")}else{parseField(o,"optional")}break;case"message":parseType(o,e);break;case"enum":parseEnum(o,e);break;default:throw illegal(e)}}));e.add(o).add(l)}function parseMapField(e){M("<");var t=R();if(f.mapKey[t]===undefined)throw illegal(t,"type");M(",");var r=R();if(!w.test(r))throw illegal(r,"type");M(">");var n=R();if(!_.test(n))throw illegal(n,"name");M("=");var i=new o(B(n),parseId(R()),t,r);ifBlock(i,(function parseMapField_block(e){if(e==="option"){parseOption(i,e);M(";")}else throw illegal(e)}),(function parseMapField_line(){parseInlineOptions(i)}));e.add(i)}function parseOneOf(e,t){if(!_.test(t=R()))throw illegal(t,"name");var r=new l(B(t));ifBlock(r,(function parseOneOf_block(e){if(e==="option"){parseOption(r,e);M(";")}else{k(e);parseField(r,"optional")}}));e.add(r)}function parseEnum(e,t){if(!_.test(t=R()))throw illegal(t,"name");var r=new c(t);ifBlock(r,(function parseEnum_block(e){switch(e){case"option":parseOption(r,e);M(";");break;case"reserved":readRanges(r.reserved||(r.reserved=[]),true);break;default:parseEnumValue(r,e)}}));e.add(r)}function parseEnumValue(e,t){if(!_.test(t))throw illegal(t,"name");M("=");var r=parseId(R(),true),n={options:undefined};n.setOption=function(e,t){if(this.options===undefined)this.options={};this.options[e]=t};ifBlock(n,(function parseEnumValue_block(e){if(e==="option"){parseOption(n,e);M(";")}else throw illegal(e)}),(function parseEnumValue_line(){parseInlineOptions(n)}));e.add(t,r,n.comment,n.options)}function parseOption(e,t){var r=M("(",true);if(!w.test(t=R()))throw illegal(t,"name");var n=t;var i=n;var s;if(r){M(")");n="("+n+")";i=n;t=O();if(C.test(t)){s=t.slice(1);n+=t;R()}}M("=");var a=parseOptionValue(e,n);setParsedOption(e,i,a,s)}function parseOptionValue(e,t){if(M("{",true)){var r={};while(!M("}",true)){if(!_.test(F=R())){throw illegal(F,"name")}if(F===null){throw illegal(F,"end of input")}var n;var i=F;M(":",true);if(O()==="{")n=parseOptionValue(e,t+"."+F);else if(O()==="["){n=[];var s;if(M("[",true)){do{s=readValue(true);n.push(s)}while(M(",",true));M("]");if(typeof s!=="undefined"){setOption(e,t+"."+F,s)}}}else{n=readValue(true);setOption(e,t+"."+F,n)}var a=r[i];if(a)n=[].concat(a).concat(n);r[i]=n;M(",",true);M(";",true)}return r}var o=readValue(true);setOption(e,t,o);return o}function setOption(e,t,r){if(e.setOption)e.setOption(t,r)}function setParsedOption(e,t,r,n){if(e.setParsedOption)e.setParsedOption(t,r,n)}function parseInlineOptions(e){if(M("[",true)){do{parseOption(e,"option")}while(M(",",true));M("]")}return e}function parseService(e,t){if(!_.test(t=R()))throw illegal(t,"service name");var r=new u(t);ifBlock(r,(function parseService_block(e){if(parseCommon(r,e))return;if(e==="rpc")parseMethod(r,e);else throw illegal(e)}));e.add(r)}function parseMethod(e,t){var r=x();var n=t;if(!_.test(t=R()))throw illegal(t,"name");var i=t,s,a,o,l;M("(");if(M("stream",true))a=true;if(!w.test(t=R()))throw illegal(t);s=t;M(")");M("returns");M("(");if(M("stream",true))l=true;if(!w.test(t=R()))throw illegal(t);o=t;M(")");var c=new d(i,n,s,o,a,l);c.comment=r;ifBlock(c,(function parseMethod_block(e){if(e==="option"){parseOption(c,e);M(";")}else throw illegal(e)}));e.add(c)}function parseExtension(e,t){if(!w.test(t=R()))throw illegal(t,"reference");var r=t;ifBlock(null,(function parseExtension_block(t){switch(t){case"required":case"repeated":parseField(e,t,r);break;case"optional":if(L){parseField(e,"proto3_optional",r)}else{parseField(e,"optional",r)}break;default:if(!L||!w.test(t))throw illegal(t);k(t);parseField(e,"optional",r);break}}))}var F;while((F=R())!==null){switch(F){case"package":if(!A)throw illegal(F);parsePackage();break;case"import":if(!A)throw illegal(F);parseImport();break;case"syntax":if(!A)throw illegal(F);parseSyntax();break;case"option":parseOption(j,F);M(";");break;default:if(parseCommon(j,F)){A=false;continue}throw illegal(F)}}parse.filename=null;return{package:P,imports:N,weakImports:I,syntax:D,root:t}}},1011:(e,t,r)=>{e.exports=Reader;var n=r(1241);var i;var s=n.LongBits,a=n.utf8;function indexOutOfRange(e,t){return RangeError("index out of range: "+e.pos+" + "+(t||1)+" > "+e.len)}function Reader(e){this.buf=e;this.pos=0;this.len=e.length}var o=typeof Uint8Array!=="undefined"?function create_typed_array(e){if(e instanceof Uint8Array||Array.isArray(e))return new Reader(e);throw Error("illegal buffer")}:function create_array(e){if(Array.isArray(e))return new Reader(e);throw Error("illegal buffer")};var l=function create(){return n.Buffer?function create_buffer_setup(e){return(Reader.create=function create_buffer(e){return n.Buffer.isBuffer(e)?new i(e):o(e)})(e)}:o};Reader.create=l();Reader.prototype._slice=n.Array.prototype.subarray||n.Array.prototype.slice;Reader.prototype.uint32=function read_uint32_setup(){var e=4294967295;return function read_uint32(){e=(this.buf[this.pos]&127)>>>0;if(this.buf[this.pos++]<128)return e;e=(e|(this.buf[this.pos]&127)<<7)>>>0;if(this.buf[this.pos++]<128)return e;e=(e|(this.buf[this.pos]&127)<<14)>>>0;if(this.buf[this.pos++]<128)return e;e=(e|(this.buf[this.pos]&127)<<21)>>>0;if(this.buf[this.pos++]<128)return e;e=(e|(this.buf[this.pos]&15)<<28)>>>0;if(this.buf[this.pos++]<128)return e;if((this.pos+=5)>this.len){this.pos=this.len;throw indexOutOfRange(this,10)}return e}}();Reader.prototype.int32=function read_int32(){return this.uint32()|0};Reader.prototype.sint32=function read_sint32(){var e=this.uint32();return e>>>1^-(e&1)|0};function readLongVarint(){var e=new s(0,0);var t=0;if(this.len-this.pos>4){for(;t<4;++t){e.lo=(e.lo|(this.buf[this.pos]&127)<>>0;if(this.buf[this.pos++]<128)return e}e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0;e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0;if(this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw indexOutOfRange(this);e.lo=(e.lo|(this.buf[this.pos]&127)<>>0;if(this.buf[this.pos++]<128)return e}e.lo=(e.lo|(this.buf[this.pos++]&127)<>>0;return e}if(this.len-this.pos>4){for(;t<5;++t){e.hi=(e.hi|(this.buf[this.pos]&127)<>>0;if(this.buf[this.pos++]<128)return e}}else{for(;t<5;++t){if(this.pos>=this.len)throw indexOutOfRange(this);e.hi=(e.hi|(this.buf[this.pos]&127)<>>0;if(this.buf[this.pos++]<128)return e}}throw Error("invalid varint encoding")}Reader.prototype.bool=function read_bool(){return this.uint32()!==0};function readFixed32_end(e,t){return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0}Reader.prototype.fixed32=function read_fixed32(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader.prototype.sfixed32=function read_sfixed32(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new s(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader.prototype.float=function read_float(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var e=n.float.readFloatLE(this.buf,this.pos);this.pos+=4;return e};Reader.prototype.double=function read_double(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var e=n.float.readDoubleLE(this.buf,this.pos);this.pos+=8;return e};Reader.prototype.bytes=function read_bytes(){var e=this.uint32(),t=this.pos,r=this.pos+e;if(r>this.len)throw indexOutOfRange(this,e);this.pos+=e;if(Array.isArray(this.buf))return this.buf.slice(t,r);if(t===r){var i=n.Buffer;return i?i.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,r)};Reader.prototype.string=function read_string(){var e=this.bytes();return a.read(e,0,e.length)};Reader.prototype.skip=function skip(e){if(typeof e==="number"){if(this.pos+e>this.len)throw indexOutOfRange(this,e);this.pos+=e}else{do{if(this.pos>=this.len)throw indexOutOfRange(this)}while(this.buf[this.pos++]&128)}return this};Reader.prototype.skipType=function(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:while((e=this.uint32()&7)!==4){this.skipType(e)}break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+e+" at offset "+this.pos)}return this};Reader._configure=function(e){i=e;Reader.create=l();i._configure();var t=n.Long?"toLong":"toNumber";n.merge(Reader.prototype,{int64:function read_int64(){return readLongVarint.call(this)[t](false)},uint64:function read_uint64(){return readLongVarint.call(this)[t](true)},sint64:function read_sint64(){return readLongVarint.call(this).zzDecode()[t](false)},fixed64:function read_fixed64(){return readFixed64.call(this)[t](true)},sfixed64:function read_sfixed64(){return readFixed64.call(this)[t](false)}})}},339:(e,t,r)=>{e.exports=BufferReader;var n=r(1011);(BufferReader.prototype=Object.create(n.prototype)).constructor=BufferReader;var i=r(1241);function BufferReader(e){n.call(this,e)}BufferReader._configure=function(){if(i.Buffer)BufferReader.prototype._slice=i.Buffer.prototype.slice};BufferReader.prototype.string=function read_string_buffer(){var e=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+e,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+e,this.len))};BufferReader._configure()},2614:(e,t,r)=>{e.exports=Root;var n=r(6189);((Root.prototype=Object.create(n.prototype)).constructor=Root).className="Root";var i=r(8213),s=r(7732),a=r(4408),o=r(7174);var l,c,u;function Root(e){n.call(this,"",e);this.deferred=[];this.files=[]}Root.fromJSON=function fromJSON(e,t){if(!t)t=new Root;if(e.options)t.setOptions(e.options);return t.addJSON(e.nested)};Root.prototype.resolvePath=o.path.resolve;Root.prototype.fetch=o.fetch;function SYNC(){}Root.prototype.load=function load(e,t,r){if(typeof t==="function"){r=t;t=undefined}var n=this;if(!r)return o.asPromise(load,n,e,t);var i=r===SYNC;function finish(e,t){if(!r)return;if(i)throw e;var n=r;r=null;n(e,t)}function getBundledFileName(e){var t=e.lastIndexOf("google/protobuf/");if(t>-1){var r=e.substring(t);if(r in u)return r}return null}function process(e,r){try{if(o.isString(r)&&r.charAt(0)==="{")r=JSON.parse(r);if(!o.isString(r))n.setOptions(r.options).addJSON(r.nested);else{c.filename=e;var a=c(r,n,t),l,u=0;if(a.imports)for(;u-1)return;n.files.push(e);if(e in u){if(i)process(e,u[e]);else{++s;setTimeout((function(){--s;process(e,u[e])}))}return}if(i){var a;try{a=o.fs.readFileSync(e).toString("utf8")}catch(e){if(!t)finish(e);return}process(e,a)}else{++s;n.fetch(e,(function(i,a){--s;if(!r)return;if(i){if(!t)finish(i);else if(!s)finish(null,n);return}process(e,a)}))}}var s=0;if(o.isString(e))e=[e];for(var a=0,l;a-1)this.deferred.splice(t,1)}}}else if(e instanceof s){if(d.test(e.name))delete e.parent[e.name]}else if(e instanceof n){for(var r=0;r{e.exports={}},6444:(e,t,r)=>{var n=t;n.Service=r(2439)},2439:(e,t,r)=>{e.exports=Service;var n=r(1241);(Service.prototype=Object.create(n.EventEmitter.prototype)).constructor=Service;function Service(e,t,r){if(typeof e!=="function")throw TypeError("rpcImpl must be a function");n.EventEmitter.call(this);this.rpcImpl=e;this.requestDelimited=Boolean(t);this.responseDelimited=Boolean(r)}Service.prototype.rpcCall=function rpcCall(e,t,r,i,s){if(!i)throw TypeError("request must be specified");var a=this;if(!s)return n.asPromise(rpcCall,a,e,t,r,i);if(!a.rpcImpl){setTimeout((function(){s(Error("already ended"))}),0);return undefined}try{return a.rpcImpl(e,t[a.requestDelimited?"encodeDelimited":"encode"](i).finish(),(function rpcCallback(t,n){if(t){a.emit("error",t,e);return s(t)}if(n===null){a.end(true);return undefined}if(!(n instanceof r)){try{n=r[a.responseDelimited?"decodeDelimited":"decode"](n)}catch(t){a.emit("error",t,e);return s(t)}}a.emit("data",n,e);return s(null,n)}))}catch(t){a.emit("error",t,e);setTimeout((function(){s(t)}),0);return undefined}};Service.prototype.end=function end(e){if(this.rpcImpl){if(!e)this.rpcImpl(null,null,null);this.rpcImpl=null;this.emit("end").off()}return this}},6178:(e,t,r)=>{e.exports=Service;var n=r(6189);((Service.prototype=Object.create(n.prototype)).constructor=Service).className="Service";var i=r(7771),s=r(7174),a=r(6444);function Service(e,t){n.call(this,e,t);this.methods={};this._methodsArray=null}Service.fromJSON=function fromJSON(e,t){var r=new Service(e,t.options);if(t.methods)for(var n=Object.keys(t.methods),s=0;s{e.exports=tokenize;var t=/[\s{}=;:[\],'"()<>]/g,r=/(?:"([^"\\]*(?:\\.[^"\\]*)*)")/g,n=/(?:'([^'\\]*(?:\\.[^'\\]*)*)')/g;var i=/^ *[*/]+ */,s=/^\s*\*?\/*/,a=/\n/g,o=/\s/,l=/\\(.?)/g;var c={0:"\0",r:"\r",n:"\n",t:"\t"};function unescape(e){return e.replace(l,(function(e,t){switch(t){case"\\":case"":return t;default:return c[t]||""}}))}tokenize.unescape=unescape;function tokenize(e,l){e=e.toString();var c=0,u=e.length,d=1,f=0,h={};var p=[];var g=null;function illegal(e){return Error("illegal "+e+" (line "+d+")")}function readString(){var t=g==="'"?n:r;t.lastIndex=c-1;var i=t.exec(e);if(!i)throw illegal("string");c=t.lastIndex;push(g);g=null;return unescape(i[1])}function charAt(t){return e.charAt(t)}function setComment(t,r,n){var o={type:e.charAt(t++),lineEmpty:false,leading:n};var c;if(l){c=2}else{c=3}var u=t-c,p;do{if(--u<0||(p=e.charAt(u))==="\n"){o.lineEmpty=true;break}}while(p===" "||p==="\t");var g=e.substring(t,r).split(a);for(var m=0;m0)return p.shift();if(g)return readString();var r,n,i,s,a,f=c===0;do{if(c===u)return null;r=false;while(o.test(i=charAt(c))){if(i==="\n"){f=true;++d}if(++c===u)return null}if(charAt(c)==="/"){if(++c===u){throw illegal("comment")}if(charAt(c)==="/"){if(!l){a=charAt(s=c+1)==="/";while(charAt(++c)!=="\n"){if(c===u){return null}}++c;if(a){setComment(s,c-1,f);f=true}++d;r=true}else{s=c;a=false;if(isDoubleSlashCommentLine(c-1)){a=true;do{c=findEndOfLine(c);if(c===u){break}c++;if(!f){break}}while(isDoubleSlashCommentLine(c))}else{c=Math.min(u,findEndOfLine(c)+1)}if(a){setComment(s,c,f);f=true}d++;r=true}}else if((i=charAt(c))==="*"){s=c+1;a=l||charAt(s)==="*";do{if(i==="\n"){++d}if(++c===u){throw illegal("comment")}n=i;i=charAt(c)}while(n!=="*"||i!=="/");++c;if(a){setComment(s,c-2,f);f=true}r=true}else{return"/"}}}while(r);var h=c;t.lastIndex=0;var m=t.test(charAt(h++));if(!m)while(h{e.exports=Type;var n=r(6189);((Type.prototype=Object.create(n.prototype)).constructor=Type).className="Type";var i=r(7732),s=r(4408),a=r(8213),o=r(7777),l=r(6178),c=r(8027),u=r(1011),d=r(3098),f=r(7174),h=r(3072),p=r(5871),g=r(4334),m=r(3617),v=r(3216);function Type(e,t){n.call(this,e,t);this.fields={};this.oneofs=undefined;this.extensions=undefined;this.reserved=undefined;this.group=undefined;this._fieldsById=null;this._fieldsArray=null;this._oneofsArray=null;this._ctor=null}Object.defineProperties(Type.prototype,{fieldsById:{get:function(){if(this._fieldsById)return this._fieldsById;this._fieldsById={};for(var e=Object.keys(this.fields),t=0;t{var n=t;var i=r(7174);var s=["double","float","int32","uint32","sint32","fixed32","sfixed32","int64","uint64","sint64","fixed64","sfixed64","bool","string","bytes"];function bake(e,t){var r=0,n={};t|=0;while(r{var n=e.exports=r(1241);var i=r(73);var s,a;n.codegen=r(8882);n.fetch=r(663);n.path=r(4761);n.fs=n.inquire("fs");n.toArray=function toArray(e){if(e){var t=Object.keys(e),r=new Array(t.length),n=0;while(n0){e[n]=setProp(e[n]||{},t,r)}else{var i=e[n];if(i)r=[].concat(i).concat(r);e[n]=r}return e}if(typeof e!=="object")throw TypeError("dst must be an object");if(!t)throw TypeError("path must be specified");t=t.split(".");return setProp(e,t,r)};Object.defineProperty(n,"decorateRoot",{get:function(){return i["decorated"]||(i["decorated"]=new(r(2614)))}})},8374:(e,t,r)=>{e.exports=LongBits;var n=r(1241);function LongBits(e,t){this.lo=e>>>0;this.hi=t>>>0}var i=LongBits.zero=new LongBits(0,0);i.toNumber=function(){return 0};i.zzEncode=i.zzDecode=function(){return this};i.length=function(){return 1};var s=LongBits.zeroHash="\0\0\0\0\0\0\0\0";LongBits.fromNumber=function fromNumber(e){if(e===0)return i;var t=e<0;if(t)e=-e;var r=e>>>0,n=(e-r)/4294967296>>>0;if(t){n=~n>>>0;r=~r>>>0;if(++r>4294967295){r=0;if(++n>4294967295)n=0}}return new LongBits(r,n)};LongBits.from=function from(e){if(typeof e==="number")return LongBits.fromNumber(e);if(n.isString(e)){if(n.Long)e=n.Long.fromString(e);else return LongBits.fromNumber(parseInt(e,10))}return e.low||e.high?new LongBits(e.low>>>0,e.high>>>0):i};LongBits.prototype.toNumber=function toNumber(e){if(!e&&this.hi>>>31){var t=~this.lo+1>>>0,r=~this.hi>>>0;if(!t)r=r+1>>>0;return-(t+r*4294967296)}return this.lo+this.hi*4294967296};LongBits.prototype.toLong=function toLong(e){return n.Long?new n.Long(this.lo|0,this.hi|0,Boolean(e)):{low:this.lo|0,high:this.hi|0,unsigned:Boolean(e)}};var a=String.prototype.charCodeAt;LongBits.fromHash=function fromHash(e){if(e===s)return i;return new LongBits((a.call(e,0)|a.call(e,1)<<8|a.call(e,2)<<16|a.call(e,3)<<24)>>>0,(a.call(e,4)|a.call(e,5)<<8|a.call(e,6)<<16|a.call(e,7)<<24)>>>0)};LongBits.prototype.toHash=function toHash(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)};LongBits.prototype.zzEncode=function zzEncode(){var e=this.hi>>31;this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0;this.lo=(this.lo<<1^e)>>>0;return this};LongBits.prototype.zzDecode=function zzDecode(){var e=-(this.lo&1);this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0;this.hi=(this.hi>>>1^e)>>>0;return this};LongBits.prototype.length=function length(){var e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,r=this.hi>>>24;return r===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:r<128?9:10}},1241:function(e,t,r){var n=t;n.asPromise=r(252);n.base64=r(6718);n.EventEmitter=r(6850);n.float=r(3182);n.inquire=r(94);n.utf8=r(9049);n.pool=r(7743);n.LongBits=r(8374);n.isNode=Boolean(typeof global!=="undefined"&&global&&global.process&&global.process.versions&&global.process.versions.node);n.global=n.isNode&&global||typeof window!=="undefined"&&window||typeof self!=="undefined"&&self||this;n.emptyArray=Object.freeze?Object.freeze([]):[];n.emptyObject=Object.freeze?Object.freeze({}):{};n.isInteger=Number.isInteger||function isInteger(e){return typeof e==="number"&&isFinite(e)&&Math.floor(e)===e};n.isString=function isString(e){return typeof e==="string"||e instanceof String};n.isObject=function isObject(e){return e&&typeof e==="object"};n.isset=n.isSet=function isSet(e,t){var r=e[t];if(r!=null&&e.hasOwnProperty(t))return typeof r!=="object"||(Array.isArray(r)?r.length:Object.keys(r).length)>0;return false};n.Buffer=function(){try{var e=n.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(e){return null}}();n._Buffer_from=null;n._Buffer_allocUnsafe=null;n.newBuffer=function newBuffer(e){return typeof e==="number"?n.Buffer?n._Buffer_allocUnsafe(e):new n.Array(e):n.Buffer?n._Buffer_from(e):typeof Uint8Array==="undefined"?e:new Uint8Array(e)};n.Array=typeof Uint8Array!=="undefined"?Uint8Array:Array;n.Long=n.global.dcodeIO&&n.global.dcodeIO.Long||n.global.Long||n.inquire("long");n.key2Re=/^true|false|0|1$/;n.key32Re=/^-?(?:0|[1-9][0-9]*)$/;n.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;n.longToHash=function longToHash(e){return e?n.LongBits.from(e).toHash():n.LongBits.zeroHash};n.longFromHash=function longFromHash(e,t){var r=n.LongBits.fromHash(e);if(n.Long)return n.Long.fromBits(r.lo,r.hi,t);return r.toNumber(Boolean(t))};function merge(e,t,r){for(var n=Object.keys(t),i=0;i-1;--r)if(t[e[r]]===1&&this[e[r]]!==undefined&&this[e[r]]!==null)return e[r]}};n.oneOfSetter=function setOneOf(e){return function(t){for(var r=0;r{e.exports=verifier;var n=r(7732),i=r(7174);function invalid(e,t){return e.name+": "+t+(e.repeated&&t!=="array"?"[]":e.map&&t!=="object"?"{k:"+e.keyType+"}":"")+" expected"}function genVerifyValue(e,t,r,i){if(t.resolvedType){if(t.resolvedType instanceof n){e("switch(%s){",i)("default:")("return%j",invalid(t,"enum value"));for(var s=Object.keys(t.resolvedType.values),a=0;a{var n=t;var i=r(8027);n[".google.protobuf.Any"]={fromObject:function(e){if(e&&e["@type"]){var t=e["@type"].substring(e["@type"].lastIndexOf("/")+1);var r=this.lookup(t);if(r){var n=e["@type"].charAt(0)==="."?e["@type"].slice(1):e["@type"];if(n.indexOf("/")===-1){n="/"+n}return this.create({type_url:n,value:r.encode(r.fromObject(e)).finish()})}}return this.fromObject(e)},toObject:function(e,t){var r="type.googleapis.com/";var n="";var s="";if(t&&t.json&&e.type_url&&e.value){s=e.type_url.substring(e.type_url.lastIndexOf("/")+1);n=e.type_url.substring(0,e.type_url.lastIndexOf("/")+1);var a=this.lookup(s);if(a)e=a.decode(e.value)}if(!(e instanceof this.ctor)&&e instanceof i){var o=e.$type.toObject(e,t);var l=e.$type.fullName[0]==="."?e.$type.fullName.slice(1):e.$type.fullName;if(n===""){n=r}s=n+l;o["@type"]=s;return o}return this.toObject(e,t)}}},3098:(e,t,r)=>{e.exports=Writer;var n=r(1241);var i;var s=n.LongBits,a=n.base64,o=n.utf8;function Op(e,t,r){this.fn=e;this.len=t;this.next=undefined;this.val=r}function noop(){}function State(e){this.head=e.head;this.tail=e.tail;this.len=e.len;this.next=e.states}function Writer(){this.len=0;this.head=new Op(noop,0,0);this.tail=this.head;this.states=null}var l=function create(){return n.Buffer?function create_buffer_setup(){return(Writer.create=function create_buffer(){return new i})()}:function create_array(){return new Writer}};Writer.create=l();Writer.alloc=function alloc(e){return new n.Array(e)};if(n.Array!==Array)Writer.alloc=n.pool(Writer.alloc,n.Array.prototype.subarray);Writer.prototype._push=function push(e,t,r){this.tail=this.tail.next=new Op(e,t,r);this.len+=t;return this};function writeByte(e,t,r){t[r]=e&255}function writeVarint32(e,t,r){while(e>127){t[r++]=e&127|128;e>>>=7}t[r]=e}function VarintOp(e,t){this.len=e;this.next=undefined;this.val=t}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer.prototype.uint32=function write_uint32(e){this.len+=(this.tail=this.tail.next=new VarintOp((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len;return this};Writer.prototype.int32=function write_int32(e){return e<0?this._push(writeVarint64,10,s.fromNumber(e)):this.uint32(e)};Writer.prototype.sint32=function write_sint32(e){return this.uint32((e<<1^e>>31)>>>0)};function writeVarint64(e,t,r){while(e.hi){t[r++]=e.lo&127|128;e.lo=(e.lo>>>7|e.hi<<25)>>>0;e.hi>>>=7}while(e.lo>127){t[r++]=e.lo&127|128;e.lo=e.lo>>>7}t[r++]=e.lo}Writer.prototype.uint64=function write_uint64(e){var t=s.from(e);return this._push(writeVarint64,t.length(),t)};Writer.prototype.int64=Writer.prototype.uint64;Writer.prototype.sint64=function write_sint64(e){var t=s.from(e).zzEncode();return this._push(writeVarint64,t.length(),t)};Writer.prototype.bool=function write_bool(e){return this._push(writeByte,1,e?1:0)};function writeFixed32(e,t,r){t[r]=e&255;t[r+1]=e>>>8&255;t[r+2]=e>>>16&255;t[r+3]=e>>>24}Writer.prototype.fixed32=function write_fixed32(e){return this._push(writeFixed32,4,e>>>0)};Writer.prototype.sfixed32=Writer.prototype.fixed32;Writer.prototype.fixed64=function write_fixed64(e){var t=s.from(e);return this._push(writeFixed32,4,t.lo)._push(writeFixed32,4,t.hi)};Writer.prototype.sfixed64=Writer.prototype.fixed64;Writer.prototype.float=function write_float(e){return this._push(n.float.writeFloatLE,4,e)};Writer.prototype.double=function write_double(e){return this._push(n.float.writeDoubleLE,8,e)};var c=n.Array.prototype.set?function writeBytes_set(e,t,r){t.set(e,r)}:function writeBytes_for(e,t,r){for(var n=0;n>>0;if(!t)return this._push(writeByte,1,0);if(n.isString(e)){var r=Writer.alloc(t=a.length(e));a.decode(e,r,0);e=r}return this.uint32(t)._push(c,t,e)};Writer.prototype.string=function write_string(e){var t=o.length(e);return t?this.uint32(t)._push(o.write,t,e):this._push(writeByte,1,0)};Writer.prototype.fork=function fork(){this.states=new State(this);this.head=this.tail=new Op(noop,0,0);this.len=0;return this};Writer.prototype.reset=function reset(){if(this.states){this.head=this.states.head;this.tail=this.states.tail;this.len=this.states.len;this.states=this.states.next}else{this.head=this.tail=new Op(noop,0,0);this.len=0}return this};Writer.prototype.ldelim=function ldelim(){var e=this.head,t=this.tail,r=this.len;this.reset().uint32(r);if(r){this.tail.next=e.next;this.tail=t;this.len+=r}return this};Writer.prototype.finish=function finish(){var e=this.head.next,t=this.constructor.alloc(this.len),r=0;while(e){e.fn(e.val,t,r);r+=e.len;e=e.next}return t};Writer._configure=function(e){i=e;Writer.create=l();i._configure()}},1863:(e,t,r)=>{e.exports=BufferWriter;var n=r(3098);(BufferWriter.prototype=Object.create(n.prototype)).constructor=BufferWriter;var i=r(1241);function BufferWriter(){n.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=i._Buffer_allocUnsafe;BufferWriter.writeBytesBuffer=i.Buffer&&i.Buffer.prototype instanceof Uint8Array&&i.Buffer.prototype.set.name==="set"?function writeBytesBuffer_set(e,t,r){t.set(e,r)}:function writeBytesBuffer_copy(e,t,r){if(e.copy)e.copy(t,r,0,e.length);else for(var n=0;n>>0;this.uint32(t);if(t)this._push(BufferWriter.writeBytesBuffer,t,e);return this};function writeStringBuffer(e,t,r){if(e.length<40)i.utf8.write(e,t,r);else if(t.utf8Write)t.utf8Write(e,r);else t.write(e,r)}BufferWriter.prototype.string=function write_string_buffer(e){var t=i.Buffer.byteLength(e);this.uint32(t);if(t)this._push(writeStringBuffer,t,e);return this};BufferWriter._configure()},1867:(e,t,r)=>{var n=r(4300);var i=n.Buffer;function copyProps(e,t){for(var r in e){t[r]=e[r]}}if(i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow){e.exports=n}else{copyProps(n,t);t.Buffer=SafeBuffer}function SafeBuffer(e,t,r){return i(e,t,r)}copyProps(i,SafeBuffer);SafeBuffer.from=function(e,t,r){if(typeof e==="number"){throw new TypeError("Argument must not be a number")}return i(e,t,r)};SafeBuffer.alloc=function(e,t,r){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}var n=i(e);if(t!==undefined){if(typeof r==="string"){n.fill(t,r)}else{n.fill(t)}}else{n.fill(0)}return n};SafeBuffer.allocUnsafe=function(e){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}return i(e)};SafeBuffer.allocUnsafeSlow=function(e){if(typeof e!=="number"){throw new TypeError("Argument must be a number")}return n.SlowBuffer(e)}},7560:(e,t)=>{const{hasOwnProperty:r}=Object.prototype;const n=configure();n.configure=configure;n.stringify=n;n.default=n;t.stringify=n;t.configure=configure;e.exports=n;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function strEscape(e){if(e.length<5e3&&!i.test(e)){return`"${e}"`}return JSON.stringify(e)}function insertSort(e){if(e.length>200){return e.sort()}for(let t=1;tr){e[n]=e[n-1];n--}e[n]=r}return e}const s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function isTypedArrayWithEntries(e){return s.call(e)!==undefined&&e.length!==0}function stringifyTypedArray(e,t,r){if(e.length= 1`)}}return n===undefined?Infinity:n}function getItemCount(e){if(e===1){return"1 item"}return`${e} items`}function getUniqueReplacerSet(e){const t=new Set;for(const r of e){if(typeof r==="string"||typeof r==="number"){t.add(String(r))}}return t}function getStrictOption(e){if(r.call(e,"strict")){const t=e.strict;if(typeof t!=="boolean"){throw new TypeError('The "strict" argument must be of type boolean')}if(t){return e=>{let t=`Object can not safely be stringified. Received type ${typeof e}`;if(typeof e!=="function")t+=` (${e.toString()})`;throw new Error(t)}}}}function configure(e){e={...e};const t=getStrictOption(e);if(t){if(e.bigint===undefined){e.bigint=false}if(!("circularValue"in e)){e.circularValue=Error}}const r=getCircularValueOption(e);const n=getBooleanOption(e,"bigint");const i=getBooleanOption(e,"deterministic");const s=getPositiveIntegerOption(e,"maximumDepth");const a=getPositiveIntegerOption(e,"maximumBreadth");function stringifyFnReplacer(e,o,l,c,u,d){let f=o[e];if(typeof f==="object"&&f!==null&&typeof f.toJSON==="function"){f=f.toJSON(e)}f=c.call(o,e,f);switch(typeof f){case"string":return strEscape(f);case"object":{if(f===null){return"null"}if(l.indexOf(f)!==-1){return r}let e="";let t=",";const n=d;if(Array.isArray(f)){if(f.length===0){return"[]"}if(sa){const r=f.length-a-1;e+=`${t}"... ${getItemCount(r)} not stringified"`}if(u!==""){e+=`\n${n}`}l.pop();return`[${e}]`}let o=Object.keys(f);const h=o.length;if(h===0){return"{}"}if(sa){const r=h-a;e+=`${g}"...":${p}"${getItemCount(r)} not stringified"`;g=t}if(u!==""&&g.length>1){e=`\n${d}${e}\n${n}`}l.pop();return`{${e}}`}case"number":return isFinite(f)?String(f):t?t(f):"null";case"boolean":return f===true?"true":"false";case"undefined":return undefined;case"bigint":if(n){return String(f)}default:return t?t(f):undefined}}function stringifyArrayReplacer(e,i,o,l,c,u){if(typeof i==="object"&&i!==null&&typeof i.toJSON==="function"){i=i.toJSON(e)}switch(typeof i){case"string":return strEscape(i);case"object":{if(i===null){return"null"}if(o.indexOf(i)!==-1){return r}const e=u;let t="";let n=",";if(Array.isArray(i)){if(i.length===0){return"[]"}if(sa){const e=i.length-a-1;t+=`${n}"... ${getItemCount(e)} not stringified"`}if(c!==""){t+=`\n${e}`}o.pop();return`[${t}]`}o.push(i);let d="";if(c!==""){u+=c;n=`,\n${u}`;d=" "}let f="";for(const e of l){const r=stringifyArrayReplacer(e,i[e],o,l,c,u);if(r!==undefined){t+=`${f}${strEscape(e)}:${d}${r}`;f=n}}if(c!==""&&f.length>1){t=`\n${u}${t}\n${e}`}o.pop();return`{${t}}`}case"number":return isFinite(i)?String(i):t?t(i):"null";case"boolean":return i===true?"true":"false";case"undefined":return undefined;case"bigint":if(n){return String(i)}default:return t?t(i):undefined}}function stringifyIndent(e,o,l,c,u){switch(typeof o){case"string":return strEscape(o);case"object":{if(o===null){return"null"}if(typeof o.toJSON==="function"){o=o.toJSON(e);if(typeof o!=="object"){return stringifyIndent(e,o,l,c,u)}if(o===null){return"null"}}if(l.indexOf(o)!==-1){return r}const t=u;if(Array.isArray(o)){if(o.length===0){return"[]"}if(sa){const t=o.length-a-1;e+=`${r}"... ${getItemCount(t)} not stringified"`}e+=`\n${t}`;l.pop();return`[${e}]`}let n=Object.keys(o);const d=n.length;if(d===0){return"{}"}if(sa){const e=d-a;h+=`${p}"...": "${getItemCount(e)} not stringified"`;p=f}if(p!==""){h=`\n${u}${h}\n${t}`}l.pop();return`{${h}}`}case"number":return isFinite(o)?String(o):t?t(o):"null";case"boolean":return o===true?"true":"false";case"undefined":return undefined;case"bigint":if(n){return String(o)}default:return t?t(o):undefined}}function stringifySimple(e,o,l){switch(typeof o){case"string":return strEscape(o);case"object":{if(o===null){return"null"}if(typeof o.toJSON==="function"){o=o.toJSON(e);if(typeof o!=="object"){return stringifySimple(e,o,l)}if(o===null){return"null"}}if(l.indexOf(o)!==-1){return r}let t="";if(Array.isArray(o)){if(o.length===0){return"[]"}if(sa){const e=o.length-a-1;t+=`,"... ${getItemCount(e)} not stringified"`}l.pop();return`[${t}]`}let n=Object.keys(o);const c=n.length;if(c===0){return"{}"}if(sa){const e=c-a;t+=`${u}"...":"${getItemCount(e)} not stringified"`}l.pop();return`{${t}}`}case"number":return isFinite(o)?String(o):t?t(o):"null";case"boolean":return o===true?"true":"false";case"undefined":return undefined;case"bigint":if(n){return String(o)}default:return t?t(o):undefined}}function stringify(e,t,r){if(arguments.length>1){let n="";if(typeof r==="number"){n=" ".repeat(Math.min(r,10))}else if(typeof r==="string"){n=r.slice(0,10)}if(t!=null){if(typeof t==="function"){return stringifyFnReplacer("",{"":e},[],t,n,"")}if(Array.isArray(t)){return stringifyArrayReplacer("",e,[],getUniqueReplacerSet(t),n,"")}}if(n.length!==0){return stringifyIndent("",e,[],n,"")}}return stringifySimple("",e,[])}return stringify}},8679:(e,t,r)=>{var n=r(8542);var i=Array.prototype.concat;var s=Array.prototype.slice;var a=e.exports=function swizzle(e){var t=[];for(var r=0,a=e.length;r{e.exports=function isArrayish(e){if(!e||typeof e==="string"){return false}return e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&e.constructor.name!=="String")}},5315:(e,t)=>{t.get=function(e){var r=Error.stackTraceLimit;Error.stackTraceLimit=Infinity;var n={};var i=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){return t};Error.captureStackTrace(n,e||t.get);var s=n.stack;Error.prepareStackTrace=i;Error.stackTraceLimit=r;return s};t.parse=function(e){if(!e.stack){return[]}var t=this;var r=e.stack.split("\n").slice(1);return r.map((function(e){if(e.match(/^\s*[-]{4,}$/)){return t._createParsedCallSite({fileName:e,lineNumber:null,functionName:null,typeName:null,methodName:null,columnNumber:null,native:null})}var r=e.match(/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/);if(!r){return}var n=null;var i=null;var s=null;var a=null;var o=null;var l=r[5]==="native";if(r[1]){s=r[1];var c=s.lastIndexOf(".");if(s[c-1]==".")c--;if(c>0){n=s.substr(0,c);i=s.substr(c+1);var u=n.indexOf(".Module");if(u>0){s=s.substr(u+1);n=n.substr(0,u)}}a=null}if(i){a=n;o=i}if(i===""){o=null;s=null}var d={fileName:r[2]||null,lineNumber:parseInt(r[3],10)||null,functionName:s,typeName:a,methodName:o,columnNumber:parseInt(r[4],10)||null,native:l};return t._createParsedCallSite(d)})).filter((function(e){return!!e}))};function CallSite(e){for(var t in e){this[t]=e[t]}}var r=["this","typeName","functionName","methodName","fileName","lineNumber","columnNumber","function","evalOrigin"];var n=["topLevel","eval","native","constructor"];r.forEach((function(e){CallSite.prototype[e]=null;CallSite.prototype["get"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}}));n.forEach((function(e){CallSite.prototype[e]=false;CallSite.prototype["is"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}}));t._createParsedCallSite=function(e){return new CallSite(e)}},4841:(e,t,r)=>{var n=r(1867).Buffer;var i=n.isEncoding||function(e){e=""+e;switch(e&&e.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 true;default:return false}};function _normalizeEncoding(e){if(!e)return"utf8";var t;while(true){switch(e){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 e;default:if(t)return;e=(""+e).toLowerCase();t=true}}}function normalizeEncoding(e){var t=_normalizeEncoding(e);if(typeof t!=="string"&&(n.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}t.s=StringDecoder;function StringDecoder(e){this.encoding=normalizeEncoding(e);var t;switch(this.encoding){case"utf16le":this.text=utf16Text;this.end=utf16End;t=4;break;case"utf8":this.fillLast=utf8FillLast;t=4;break;case"base64":this.text=base64Text;this.end=base64End;t=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=n.allocUnsafe(t)}StringDecoder.prototype.write=function(e){if(e.length===0)return"";var t;var r;if(this.lastNeed){t=this.fillLast(e);if(t===undefined)return"";r=this.lastNeed;this.lastNeed=0}else{r=0}if(r>5===6)return 2;else if(e>>4===14)return 3;else if(e>>3===30)return 4;return e>>6===2?-1:-2}function utf8CheckIncomplete(e,t,r){var n=t.length-1;if(n=0){if(i>0)e.lastNeed=i-1;return i}if(--n=0){if(i>0)e.lastNeed=i-2;return i}if(--n=0){if(i>0){if(i===2)i=0;else e.lastNeed=i-3}return i}return 0}function utf8CheckExtraBytes(e,t,r){if((t[0]&192)!==128){e.lastNeed=0;return"�"}if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128){e.lastNeed=1;return"�"}if(e.lastNeed>2&&t.length>2){if((t[2]&192)!==128){e.lastNeed=2;return"�"}}}}function utf8FillLast(e){var t=this.lastTotal-this.lastNeed;var r=utf8CheckExtraBytes(this,e,t);if(r!==undefined)return r;if(this.lastNeed<=e.length){e.copy(this.lastChar,t,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}e.copy(this.lastChar,t,0,e.length);this.lastNeed-=e.length}function utf8Text(e,t){var r=utf8CheckIncomplete(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);e.copy(this.lastChar,0,n);return e.toString("utf8",t,n)}function utf8End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed)return t+"�";return t}function utf16Text(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1];return r.slice(0,-1)}}return r}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=e[e.length-1];return e.toString("utf16le",t,e.length-1)}function utf16End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function base64Text(e,t){var r=(e.length-t)%3;if(r===0)return e.toString("base64",t);this.lastNeed=3-r;this.lastTotal=3;if(r===1){this.lastChar[0]=e[e.length-1]}else{this.lastChar[0]=e[e.length-2];this.lastChar[1]=e[e.length-1]}return e.toString("base64",t,e.length-r)}function base64End(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed)return t+this.lastChar.toString("base64",0,3-this.lastNeed);return t}function simpleWrite(e){return e.toString(this.encoding)}function simpleEnd(e){return e&&e.length?this.write(e):""}},7014:e=>{e.exports=function hex(e){for(var t=0,r=0;t{t.levels={error:0,warn:1,help:2,data:3,info:4,debug:5,prompt:6,verbose:7,input:8,silly:9};t.colors={error:"red",warn:"yellow",help:"cyan",data:"grey",info:"green",debug:"blue",prompt:"grey",verbose:"cyan",input:"grey",silly:"magenta"}},7113:(e,t,r)=>{Object.defineProperty(t,"cli",{value:r(1416)});Object.defineProperty(t,"npm",{value:r(3568)});Object.defineProperty(t,"syslog",{value:r(6990)})},3568:(e,t)=>{t.levels={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6};t.colors={error:"red",warn:"yellow",info:"green",http:"green",verbose:"cyan",debug:"blue",silly:"magenta"}},6990:(e,t)=>{t.levels={emerg:0,alert:1,crit:2,error:3,warning:4,notice:5,info:6,debug:7};t.colors={emerg:"red",alert:"yellow",crit:"red",error:"red",warning:"red",notice:"yellow",info:"green",debug:"blue"}},3937:(e,t,r)=>{Object.defineProperty(t,"LEVEL",{value:Symbol.for("level")});Object.defineProperty(t,"MESSAGE",{value:Symbol.for("message")});Object.defineProperty(t,"SPLAT",{value:Symbol.for("splat")});Object.defineProperty(t,"configs",{value:r(7113)})},5278:(e,t,r)=>{e.exports=r(3837).deprecate},7281:(e,t,r)=>{e.exports=r(2429);e.exports.LegacyTransportStream=r(6201)},6201:(e,t,r)=>{const n=r(3837);const{LEVEL:i}=r(3937);const s=r(2429);const a=e.exports=function LegacyTransportStream(e={}){s.call(this,e);if(!e.transport||typeof e.transport.log!=="function"){throw new Error("Invalid transport, must be an object with a log method.")}this.transport=e.transport;this.level=this.level||e.transport.level;this.handleExceptions=this.handleExceptions||e.transport.handleExceptions;this._deprecated();function transportError(e){this.emit("error",e,this.transport)}if(!this.transport.__winstonError){this.transport.__winstonError=transportError.bind(this);this.transport.on("error",this.transport.__winstonError)}};n.inherits(a,s);a.prototype._write=function _write(e,t,r){if(this.silent||e.exception===true&&!this.handleExceptions){return r(null)}if(!this.level||this.levels[this.level]>=this.levels[e[i]]){this.transport.log(e[i],e.message,e,this._nop)}r(null)};a.prototype._writev=function _writev(e,t){for(let t=0;t{const n=r(3837);const i=r(6137);const{LEVEL:s}=r(3937);const a=e.exports=function TransportStream(e={}){i.call(this,{objectMode:true,highWaterMark:e.highWaterMark});this.format=e.format;this.level=e.level;this.handleExceptions=e.handleExceptions;this.handleRejections=e.handleRejections;this.silent=e.silent;if(e.log)this.log=e.log;if(e.logv)this.logv=e.logv;if(e.close)this.close=e.close;this.once("pipe",(e=>{this.levels=e.levels;this.parent=e}));this.once("unpipe",(e=>{if(e===this.parent){this.parent=null;if(this.close){this.close()}}}))};n.inherits(a,i);a.prototype._write=function _write(e,t,r){if(this.silent||e.exception===true&&!this.handleExceptions){return r(null)}const n=this.level||this.parent&&this.parent.level;if(!n||this.levels[n]>=this.levels[e[s]]){if(e&&!this.format){return this.log(e,r)}let t;let n;try{n=this.format.transform(Object.assign({},e),this.format.options)}catch(e){t=e}if(t||!n){r();if(t)throw t;return}return this.log(n,r)}this._writableState.sync=false;return r(null)};a.prototype._writev=function _writev(e,t){if(this.logv){const r=e.filter(this._accept,this);if(!r.length){return t(null)}return this.logv(r,t)}for(let r=0;r=this.levels[t[s]]){if(this.handleExceptions||t.exception!==true){return true}}return false};a.prototype._nop=function _nop(){return void undefined}},5238:e=>{const t={};function createErrorType(e,r,n){if(!n){n=Error}function getMessage(e,t,n){if(typeof r==="string"){return r}else{return r(e,t,n)}}class NodeError extends n{constructor(e,t,r){super(getMessage(e,t,r))}}NodeError.prototype.name=n.name;NodeError.prototype.code=e;t[e]=NodeError}function oneOf(e,t){if(Array.isArray(e)){const r=e.length;e=e.map((e=>String(e)));if(r>2){return`one of ${t} ${e.slice(0,r-1).join(", ")}, or `+e[r-1]}else if(r===2){return`one of ${t} ${e[0]} or ${e[1]}`}else{return`of ${t} ${e[0]}`}}else{return`of ${t} ${String(e)}`}}function startsWith(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function endsWith(e,t,r){if(r===undefined||r>e.length){r=e.length}return e.substring(r-t.length,r)===t}function includes(e,t,r){if(typeof r!=="number"){r=0}if(r+t.length>e.length){return false}else{return e.indexOf(t,r)!==-1}}createErrorType("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError);createErrorType("ERR_INVALID_ARG_TYPE",(function(e,t,r){let n;if(typeof t==="string"&&startsWith(t,"not ")){n="must not be";t=t.replace(/^not /,"")}else{n="must be"}let i;if(endsWith(e," argument")){i=`The ${e} ${n} ${oneOf(t,"type")}`}else{const r=includes(e,".")?"property":"argument";i=`The "${e}" ${r} ${n} ${oneOf(t,"type")}`}i+=`. Received type ${typeof r}`;return i}),TypeError);createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");createErrorType("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"}));createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close");createErrorType("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"}));createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times");createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);createErrorType("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError);createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");e.exports.q=t},5135:(e,t,r)=>{var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=Duplex;var i=r(1646);var s=r(6137);r(4124)(Duplex,i);{var a=n(s.prototype);for(var o=0;o{e.exports=Readable;var n;Readable.ReadableState=ReadableState;var i=r(2361).EventEmitter;var s=function EElistenerCount(e,t){return e.listeners(t).length};var a=r(3917);var o=r(4300).Buffer;var l=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return o.from(e)}function _isUint8Array(e){return o.isBuffer(e)||e instanceof l}var c=r(3837);var u;if(c&&c.debuglog){u=c.debuglog("stream")}else{u=function debug(){}}var d=r(8233);var f=r(1061);var h=r(318),p=h.getHighWaterMark;var g=r(5238).q,m=g.ERR_INVALID_ARG_TYPE,v=g.ERR_STREAM_PUSH_AFTER_EOF,y=g.ERR_METHOD_NOT_IMPLEMENTED,b=g.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;var S;var _;var w;r(4124)(Readable,a);var C=f.errorOrDestroy;var E=["error","close","destroy","pause","resume"];function prependListener(e,t,r){if(typeof e.prependListener==="function")return e.prependListener(t,r);if(!e._events||!e._events[t])e.on(t,r);else if(Array.isArray(e._events[t]))e._events[t].unshift(r);else e._events[t]=[r,e._events[t]]}function ReadableState(e,t,i){n=n||r(5135);e=e||{};if(typeof i!=="boolean")i=t instanceof n;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.readableObjectMode;this.highWaterMark=p(this,e,"readableHighWaterMark",i);this.buffer=new d;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.paused=true;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||"utf8";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!S)S=r(4841).s;this.decoder=new S(e.encoding);this.encoding=e.encoding}}function Readable(e){n=n||r(5135);if(!(this instanceof Readable))return new Readable(e);var t=this instanceof n;this._readableState=new ReadableState(e,this,t);this.readable=true;if(e){if(typeof e.read==="function")this._read=e.read;if(typeof e.destroy==="function")this._destroy=e.destroy}a.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{enumerable:false,get:function get(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function set(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=f.destroy;Readable.prototype._undestroy=f.undestroy;Readable.prototype._destroy=function(e,t){t(e)};Readable.prototype.push=function(e,t){var r=this._readableState;var n;if(!r.objectMode){if(typeof e==="string"){t=t||r.defaultEncoding;if(t!==r.encoding){e=o.from(e,t);t=""}n=true}}else{n=true}return readableAddChunk(this,e,t,false,n)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,t,r,n,i){u("readableAddChunk",t);var s=e._readableState;if(t===null){s.reading=false;onEofChunk(e,s)}else{var a;if(!i)a=chunkInvalid(s,t);if(a){C(e,a)}else if(s.objectMode||t&&t.length>0){if(typeof t!=="string"&&!s.objectMode&&Object.getPrototypeOf(t)!==o.prototype){t=_uint8ArrayToBuffer(t)}if(n){if(s.endEmitted)C(e,new b);else addChunk(e,s,t,true)}else if(s.ended){C(e,new v)}else if(s.destroyed){return false}else{s.reading=false;if(s.decoder&&!r){t=s.decoder.write(t);if(s.objectMode||t.length!==0)addChunk(e,s,t,false);else maybeReadMore(e,s)}else{addChunk(e,s,t,false)}}}else if(!n){s.reading=false;maybeReadMore(e,s)}}return!s.ended&&(s.length=T){e=T}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){u("read",e);e=parseInt(e,10);var t=this._readableState;var r=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended)){u("read: emitReadable",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var n=t.needReadable;u("need readable",n);if(t.length===0||t.length-e0)i=fromList(e,t);else i=null;if(i===null){t.needReadable=t.length<=t.highWaterMark;e=0}else{t.length-=e;t.awaitDrain=0}if(t.length===0){if(!t.ended)t.needReadable=true;if(r!==e&&t.ended)endReadable(this)}if(i!==null)this.emit("data",i);return i};function onEofChunk(e,t){u("onEofChunk");if(t.ended)return;if(t.decoder){var r=t.decoder.end();if(r&&r.length){t.buffer.push(r);t.length+=t.objectMode?1:r.length}}t.ended=true;if(t.sync){emitReadable(e)}else{t.needReadable=false;if(!t.emittedReadable){t.emittedReadable=true;emitReadable_(e)}}}function emitReadable(e){var t=e._readableState;u("emitReadable",t.needReadable,t.emittedReadable);t.needReadable=false;if(!t.emittedReadable){u("emitReadable",t.flowing);t.emittedReadable=true;process.nextTick(emitReadable_,e)}}function emitReadable_(e){var t=e._readableState;u("emitReadable_",t.destroyed,t.length,t.ended);if(!t.destroyed&&(t.length||t.ended)){e.emit("readable");t.emittedReadable=false}t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark;flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;process.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){while(!t.reading&&!t.ended&&(t.length1&&indexOf(n.pipes,e)!==-1)&&!l){u("false write response, pause",n.awaitDrain);n.awaitDrain++}r.pause()}}function onerror(t){u("onerror",t);unpipe();e.removeListener("error",onerror);if(s(e,"error")===0)C(e,t)}prependListener(e,"error",onerror);function onclose(){e.removeListener("finish",onfinish);unpipe()}e.once("close",onclose);function onfinish(){u("onfinish");e.removeListener("close",onclose);unpipe()}e.once("finish",onfinish);function unpipe(){u("unpipe");r.unpipe(e)}e.emit("pipe",r);if(!n.flowing){u("pipe resume");r.resume()}return e};function pipeOnDrain(e){return function pipeOnDrainFunctionResult(){var t=e._readableState;u("pipeOnDrain",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&s(e,"data")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var r={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit("unpipe",this,r);return this}if(!e){var n=t.pipes;var i=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var s=0;s0;if(n.flowing!==false)this.resume()}else if(e==="readable"){if(!n.endEmitted&&!n.readableListening){n.readableListening=n.needReadable=true;n.flowing=false;n.emittedReadable=false;u("on readable",n.length,n.reading);if(n.length){emitReadable(this)}else if(!n.reading){process.nextTick(nReadingNextTick,this)}}}return r};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(e,t){var r=a.prototype.removeListener.call(this,e,t);if(e==="readable"){process.nextTick(updateReadableListening,this)}return r};Readable.prototype.removeAllListeners=function(e){var t=a.prototype.removeAllListeners.apply(this,arguments);if(e==="readable"||e===undefined){process.nextTick(updateReadableListening,this)}return t};function updateReadableListening(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0;if(t.resumeScheduled&&!t.paused){t.flowing=true}else if(e.listenerCount("data")>0){e.resume()}}function nReadingNextTick(e){u("readable nexttick read 0");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){u("resume");e.flowing=!e.readableListening;resume(this,e)}e.paused=false;return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;process.nextTick(resume_,e,t)}}function resume_(e,t){u("resume",t.reading);if(!t.reading){e.read(0)}t.resumeScheduled=false;e.emit("resume");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){u("call pause flowing=%j",this._readableState.flowing);if(this._readableState.flowing!==false){u("pause");this._readableState.flowing=false;this.emit("pause")}this._readableState.paused=true;return this};function flow(e){var t=e._readableState;u("flow",t.flowing);while(t.flowing&&e.read()!==null);}Readable.prototype.wrap=function(e){var t=this;var r=this._readableState;var n=false;e.on("end",(function(){u("wrapped end");if(r.decoder&&!r.ended){var e=r.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on("data",(function(i){u("wrapped data");if(r.decoder)i=r.decoder.write(i);if(r.objectMode&&(i===null||i===undefined))return;else if(!r.objectMode&&(!i||!i.length))return;var s=t.push(i);if(!s){n=true;e.pause()}}));for(var i in e){if(this[i]===undefined&&typeof e[i]==="function"){this[i]=function methodWrap(t){return function methodWrapReturnFunction(){return e[t].apply(e,arguments)}}(i)}}for(var s=0;s=t.length){if(t.decoder)r=t.buffer.join("");else if(t.buffer.length===1)r=t.buffer.first();else r=t.buffer.concat(t.length);t.buffer.clear()}else{r=t.buffer.consume(e,t.decoder)}return r}function endReadable(e){var t=e._readableState;u("endReadable",t.endEmitted);if(!t.endEmitted){t.ended=true;process.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){u("endReadableNT",e.endEmitted,e.length);if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit("end");if(e.autoDestroy){var r=t._writableState;if(!r||r.autoDestroy&&r.finished){t.destroy()}}}}if(typeof Symbol==="function"){Readable.from=function(e,t){if(w===undefined){w=r(7217)}return w(Readable,e,t)}}function indexOf(e,t){for(var r=0,n=e.length;r{e.exports=Writable;function WriteReq(e,t,r){this.chunk=e;this.encoding=t;this.callback=r;this.next=null}function CorkedRequest(e){var t=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(t,e)}}var n;Writable.WritableState=WritableState;var i={deprecate:r(5278)};var s=r(3917);var a=r(4300).Buffer;var o=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return a.from(e)}function _isUint8Array(e){return a.isBuffer(e)||e instanceof o}var l=r(1061);var c=r(318),u=c.getHighWaterMark;var d=r(5238).q,f=d.ERR_INVALID_ARG_TYPE,h=d.ERR_METHOD_NOT_IMPLEMENTED,p=d.ERR_MULTIPLE_CALLBACK,g=d.ERR_STREAM_CANNOT_PIPE,m=d.ERR_STREAM_DESTROYED,v=d.ERR_STREAM_NULL_VALUES,y=d.ERR_STREAM_WRITE_AFTER_END,b=d.ERR_UNKNOWN_ENCODING;var S=l.errorOrDestroy;r(4124)(Writable,s);function nop(){}function WritableState(e,t,i){n=n||r(5135);e=e||{};if(typeof i!=="boolean")i=t instanceof n;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.writableObjectMode;this.highWaterMark=u(this,e,"writableHighWaterMark",i);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var s=e.decodeStrings===false;this.decodeStrings=!s;this.defaultEncoding=e.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(t,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var t=[];while(e){t.push(e);e=e.next}return t};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:i.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(e){}})();var _;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){_=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(e){if(_.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{_=function realHasInstance(e){return e instanceof this}}function Writable(e){n=n||r(5135);var t=this instanceof n;if(!t&&!_.call(Writable,this))return new Writable(e);this._writableState=new WritableState(e,this,t);this.writable=true;if(e){if(typeof e.write==="function")this._write=e.write;if(typeof e.writev==="function")this._writev=e.writev;if(typeof e.destroy==="function")this._destroy=e.destroy;if(typeof e.final==="function")this._final=e.final}s.call(this)}Writable.prototype.pipe=function(){S(this,new g)};function writeAfterEnd(e,t){var r=new y;S(e,r);process.nextTick(t,r)}function validChunk(e,t,r,n){var i;if(r===null){i=new v}else if(typeof r!=="string"&&!t.objectMode){i=new f("chunk",["string","Buffer"],r)}if(i){S(e,i);process.nextTick(n,i);return false}return true}Writable.prototype.write=function(e,t,r){var n=this._writableState;var i=false;var s=!n.objectMode&&_isUint8Array(e);if(s&&!a.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof t==="function"){r=t;t=null}if(s)t="buffer";else if(!t)t=n.defaultEncoding;if(typeof r!=="function")r=nop;if(n.ending)writeAfterEnd(this,r);else if(s||validChunk(this,n,e,r)){n.pendingcb++;i=writeOrBuffer(this,n,s,e,t,r)}return i};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e==="string")e=e.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new b(e);this._writableState.defaultEncoding=e;return this};Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(e,t,r){if(!e.objectMode&&e.decodeStrings!==false&&typeof t==="string"){t=a.from(t,r)}return t}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,r,n,i,s){if(!r){var a=decodeChunk(t,n,i);if(n!==a){r=true;i="buffer";n=a}}var o=t.objectMode?1:n.length;t.length+=o;var l=t.length{var n;function _defineProperty(e,t,r){t=_toPropertyKey(t);if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return typeof t==="symbol"?t:String(t)}function _toPrimitive(e,t){if(typeof e!=="object"||e===null)return e;var r=e[Symbol.toPrimitive];if(r!==undefined){var n=r.call(e,t||"default");if(typeof n!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var i=r(8242);var s=Symbol("lastResolve");var a=Symbol("lastReject");var o=Symbol("error");var l=Symbol("ended");var c=Symbol("lastPromise");var u=Symbol("handlePromise");var d=Symbol("stream");function createIterResult(e,t){return{value:e,done:t}}function readAndResolve(e){var t=e[s];if(t!==null){var r=e[d].read();if(r!==null){e[c]=null;e[s]=null;e[a]=null;t(createIterResult(r,false))}}}function onReadable(e){process.nextTick(readAndResolve,e)}function wrapForNext(e,t){return function(r,n){e.then((function(){if(t[l]){r(createIterResult(undefined,true));return}t[u](r,n)}),n)}}var f=Object.getPrototypeOf((function(){}));var h=Object.setPrototypeOf((n={get stream(){return this[d]},next:function next(){var e=this;var t=this[o];if(t!==null){return Promise.reject(t)}if(this[l]){return Promise.resolve(createIterResult(undefined,true))}if(this[d].destroyed){return new Promise((function(t,r){process.nextTick((function(){if(e[o]){r(e[o])}else{t(createIterResult(undefined,true))}}))}))}var r=this[c];var n;if(r){n=new Promise(wrapForNext(r,this))}else{var i=this[d].read();if(i!==null){return Promise.resolve(createIterResult(i,false))}n=new Promise(this[u])}this[c]=n;return n}},_defineProperty(n,Symbol.asyncIterator,(function(){return this})),_defineProperty(n,"return",(function _return(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){if(e){r(e);return}t(createIterResult(undefined,true))}))}))})),n),f);var p=function createReadableStreamAsyncIterator(e){var t;var r=Object.create(h,(t={},_defineProperty(t,d,{value:e,writable:true}),_defineProperty(t,s,{value:null,writable:true}),_defineProperty(t,a,{value:null,writable:true}),_defineProperty(t,o,{value:null,writable:true}),_defineProperty(t,l,{value:e._readableState.endEmitted,writable:true}),_defineProperty(t,u,{value:function value(e,t){var n=r[d].read();if(n){r[c]=null;r[s]=null;r[a]=null;e(createIterResult(n,false))}else{r[s]=e;r[a]=t}},writable:true}),t));r[c]=null;i(e,(function(e){if(e&&e.code!=="ERR_STREAM_PREMATURE_CLOSE"){var t=r[a];if(t!==null){r[c]=null;r[s]=null;r[a]=null;t(e)}r[o]=e;return}var n=r[s];if(n!==null){r[c]=null;r[s]=null;r[a]=null;n(createIterResult(undefined,true))}r[l]=true}));e.on("readable",onReadable.bind(null,r));return r};e.exports=p},8233:(e,t,r)=>{function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t0)this.tail.next=t;else this.head=t;this.tail=t;++this.length}},{key:"unshift",value:function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length}},{key:"shift",value:function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e}},{key:"clear",value:function clear(){this.head=this.tail=null;this.length=0}},{key:"join",value:function join(e){if(this.length===0)return"";var t=this.head;var r=""+t.data;while(t=t.next)r+=e+t.data;return r}},{key:"concat",value:function concat(e){if(this.length===0)return i.alloc(0);var t=i.allocUnsafe(e>>>0);var r=this.head;var n=0;while(r){copyBuffer(r.data,t,n);n+=r.data.length;r=r.next}return t}},{key:"consume",value:function consume(e,t){var r;if(ei.length?i.length:e;if(s===i.length)n+=i;else n+=i.slice(0,e);e-=s;if(e===0){if(s===i.length){++r;if(t.next)this.head=t.next;else this.head=this.tail=null}else{this.head=t;t.data=i.slice(s)}break}++r}this.length-=r;return n}},{key:"_getBuffer",value:function _getBuffer(e){var t=i.allocUnsafe(e);var r=this.head;var n=1;r.data.copy(t);e-=r.data.length;while(r=r.next){var s=r.data;var a=e>s.length?s.length:e;s.copy(t,t.length-e,0,a);e-=a;if(e===0){if(a===s.length){++n;if(r.next)this.head=r.next;else this.head=this.tail=null}else{this.head=r;r.data=s.slice(a)}break}++n}this.length-=n;return t}},{key:o,value:function value(e,t){return a(this,_objectSpread(_objectSpread({},t),{},{depth:0,customInspect:false}))}}]);return BufferList}()},1061:e=>{function destroy(e,t){var r=this;var n=this._readableState&&this._readableState.destroyed;var i=this._writableState&&this._writableState.destroyed;if(n||i){if(t){t(e)}else if(e){if(!this._writableState){process.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!r._writableState){process.nextTick(emitErrorAndCloseNT,r,e)}else if(!r._writableState.errorEmitted){r._writableState.errorEmitted=true;process.nextTick(emitErrorAndCloseNT,r,e)}else{process.nextTick(emitCloseNT,r)}}else if(t){process.nextTick(emitCloseNT,r);t(e)}else{process.nextTick(emitCloseNT,r)}}));return this}function emitErrorAndCloseNT(e,t){emitErrorNT(e,t);emitCloseNT(e)}function emitCloseNT(e){if(e._writableState&&!e._writableState.emitClose)return;if(e._readableState&&!e._readableState.emitClose)return;e.emit("close")}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit("error",t)}function errorOrDestroy(e,t){var r=e._readableState;var n=e._writableState;if(r&&r.autoDestroy||n&&n.autoDestroy)e.destroy(t);else e.emit("error",t)}e.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy}},8242:(e,t,r)=>{var n=r(5238).q.ERR_STREAM_PREMATURE_CLOSE;function once(e){var t=false;return function(){if(t)return;t=true;for(var r=arguments.length,n=new Array(r),i=0;i{function asyncGeneratorStep(e,t,r,n,i,s,a){try{var o=e[s](a);var l=o.value}catch(e){r(e);return}if(o.done){t(l)}else{Promise.resolve(l).then(n,i)}}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function _next(e){asyncGeneratorStep(s,n,i,_next,_throw,"next",e)}function _throw(e){asyncGeneratorStep(s,n,i,_next,_throw,"throw",e)}_next(undefined)}))}}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t{var n=r(5238).q.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function getHighWaterMark(e,t,r,i){var s=highWaterMarkFrom(t,i,r);if(s!=null){if(!(isFinite(s)&&Math.floor(s)===s)||s<0){var a=i?r:"highWaterMark";throw new n(a,s)}return Math.floor(s)}return e.objectMode?16:16*1024}e.exports={getHighWaterMark:getHighWaterMark}},3917:(e,t,r)=>{e.exports=r(2781)},4158:(e,t,r)=>{const n=r(2955);const{warn:i}=r(8043);t.version=r(2561).version;t.transports=r(7804);t.config=r(4325);t.addColors=n.levels;t.format=n.format;t.createLogger=r(2878);t.Logger=r(5153);t.ExceptionHandler=r(7891);t.RejectionHandler=r(1080);t.Container=r(7184);t.Transport=r(7281);t.loggers=new t.Container;const s=t.createLogger();Object.keys(t.config.npm.levels).concat(["log","query","stream","add","remove","clear","profile","startTimer","handleExceptions","unhandleExceptions","handleRejections","unhandleRejections","configure","child"]).forEach((e=>t[e]=(...t)=>s[e](...t)));Object.defineProperty(t,"level",{get(){return s.level},set(e){s.level=e}});Object.defineProperty(t,"exceptions",{get(){return s.exceptions}});Object.defineProperty(t,"rejections",{get(){return s.rejections}});["exitOnError"].forEach((e=>{Object.defineProperty(t,e,{get(){return s[e]},set(t){s[e]=t}})}));Object.defineProperty(t,"default",{get(){return{exceptionHandlers:s.exceptionHandlers,rejectionHandlers:s.rejectionHandlers,transports:s.transports}}});i.deprecated(t,"setLevels");i.forFunctions(t,"useFormat",["cli"]);i.forProperties(t,"useFormat",["padLevels","stripColors"]);i.forFunctions(t,"deprecated",["addRewriter","addFilter","clone","extend"]);i.forProperties(t,"deprecated",["emitErrs","levelLength"])},8043:(e,t,r)=>{const{format:n}=r(3837);t.warn={deprecated(e){return()=>{throw new Error(n("{ %s } was removed in winston@3.0.0.",e))}},useFormat(e){return()=>{throw new Error([n("{ %s } was removed in winston@3.0.0.",e),"Use a custom winston.format = winston.format(function) instead."].join("\n"))}},forFunctions(e,r,n){n.forEach((n=>{e[n]=t.warn[r](n)}))},forProperties(e,r,n){n.forEach((n=>{const i=t.warn[r](n);Object.defineProperty(e,n,{get:i,set:i})}))}}},4325:(e,t,r)=>{const n=r(2955);const{configs:i}=r(3937);t.cli=n.levels(i.cli);t.npm=n.levels(i.npm);t.syslog=n.levels(i.syslog);t.addColors=n.levels},7184:(e,t,r)=>{const n=r(2878);e.exports=class Container{constructor(e={}){this.loggers=new Map;this.options=e}add(e,t){if(!this.loggers.has(e)){t=Object.assign({},t||this.options);const r=t.transports||this.options.transports;if(r){t.transports=Array.isArray(r)?r.slice():[r]}else{t.transports=[]}const i=n(t);i.on("close",(()=>this._delete(e)));this.loggers.set(e,i)}return this.loggers.get(e)}get(e,t){return this.add(e,t)}has(e){return!!this.loggers.has(e)}close(e){if(e){return this._removeLogger(e)}this.loggers.forEach(((e,t)=>this._removeLogger(t)))}_removeLogger(e){if(!this.loggers.has(e)){return}const t=this.loggers.get(e);t.close();this._delete(e)}_delete(e){this.loggers.delete(e)}}},2878:(e,t,r)=>{const{LEVEL:n}=r(3937);const i=r(4325);const s=r(5153);const a=r(3170)("winston:create-logger");function isLevelEnabledFunctionName(e){return"is"+e.charAt(0).toUpperCase()+e.slice(1)+"Enabled"}e.exports=function(e={}){e.levels=e.levels||i.npm.levels;class DerivedLogger extends s{constructor(e){super(e)}}const t=new DerivedLogger(e);Object.keys(e.levels).forEach((function(e){a('Define prototype method for "%s"',e);if(e==="log"){console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.');return}DerivedLogger.prototype[e]=function(...r){const i=this||t;if(r.length===1){const[s]=r;const a=s&&s.message&&s||{message:s};a.level=a[n]=e;i._addDefaultMeta(a);i.write(a);return this||t}if(r.length===0){i.log(e,"");return i}return i.log(e,...r)};DerivedLogger.prototype[isLevelEnabledFunctionName(e)]=function(){return(this||t).isLevelEnabled(e)}}));return t}},7891:(e,t,r)=>{const n=r(2037);const i=r(1216);const s=r(3170)("winston:exception");const a=r(4118);const o=r(5315);const l=r(6268);e.exports=class ExceptionHandler{constructor(e){if(!e){throw new Error("Logger is required to handle exceptions")}this.logger=e;this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e)){return e.forEach((e=>this._addHandler(e)))}this._addHandler(e)}));if(!this.catcher){this.catcher=this._uncaughtException.bind(this);process.on("uncaughtException",this.catcher)}}unhandle(){if(this.catcher){process.removeListener("uncaughtException",this.catcher);this.catcher=false;Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e)))}}getAllInfo(e){let t=null;if(e){t=typeof e==="string"?e:e.message}return{error:e,level:"error",message:[`uncaughtException: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,exception:true,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:n.loadavg(),uptime:n.uptime()}}getTrace(e){const t=e?o.parse(e):o.get();return t.map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleExceptions=true;const t=new l(e);this.handlers.set(e,t);this.logger.pipe(t)}}_uncaughtException(e){const t=this.getAllInfo(e);const r=this._getExceptionHandlers();let n=typeof this.logger.exitOnError==="function"?this.logger.exitOnError(e):this.logger.exitOnError;let o;if(!r.length&&n){console.warn("winston: exitOnError cannot be true with no exception handlers.");console.warn("winston: not exiting process.");n=false}function gracefulExit(){s("doExit",n);s("process._exiting",process._exiting);if(n&&!process._exiting){if(o){clearTimeout(o)}process.exit(1)}}if(!r||r.length===0){return process.nextTick(gracefulExit)}i(r,((e,t)=>{const r=a(t);const n=e.transport||e;function onDone(e){return()=>{s(e);r()}}n._ending=true;n.once("finish",onDone("finished"));n.once("error",onDone("error"))}),(()=>n&&gracefulExit()));this.logger.log(t);if(n){o=setTimeout(gracefulExit,3e3)}}_getExceptionHandlers(){return this.logger.transports.filter((e=>{const t=e.transport||e;return t.handleExceptions}))}}},6268:(e,t,r)=>{const{Writable:n}=r(7201);e.exports=class ExceptionStream extends n{constructor(e){super({objectMode:true});if(!e){throw new Error("ExceptionStream requires a TransportStream instance.")}this.handleExceptions=true;this.transport=e}_write(e,t,r){if(e.exception){return this.transport.log(e,r)}r();return true}}},5153:(e,t,r)=>{const{Stream:n,Transform:i}=r(7201);const s=r(1216);const{LEVEL:a,SPLAT:o}=r(3937);const l=r(1554);const c=r(7891);const u=r(1080);const d=r(6201);const f=r(6959);const{warn:h}=r(8043);const p=r(4325);const g=/%[scdjifoO%]/g;class Logger extends i{constructor(e){super({objectMode:true});this.configure(e)}child(e){const t=this;return Object.create(t,{write:{value:function(r){const n=Object.assign({},e,r);if(r instanceof Error){n.stack=r.stack;n.message=r.message}t.write(n)}}})}configure({silent:e,format:t,defaultMeta:n,levels:i,level:s="info",exitOnError:a=true,transports:o,colors:l,emitErrs:d,formatters:f,padLevels:h,rewriters:g,stripColors:m,exceptionHandlers:v,rejectionHandlers:y}={}){if(this.transports.length){this.clear()}this.silent=e;this.format=t||this.format||r(5669)();this.defaultMeta=n||null;this.levels=i||this.levels||p.npm.levels;this.level=s;if(this.exceptions){this.exceptions.unhandle()}if(this.rejections){this.rejections.unhandle()}this.exceptions=new c(this);this.rejections=new u(this);this.profilers={};this.exitOnError=a;if(o){o=Array.isArray(o)?o:[o];o.forEach((e=>this.add(e)))}if(l||d||f||h||g||m){throw new Error(["{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.","Use a custom winston.format(function) instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"))}if(v){this.exceptions.handle(v)}if(y){this.rejections.handle(y)}}isLevelEnabled(e){const t=getLevelValue(this.levels,e);if(t===null){return false}const r=getLevelValue(this.levels,this.level);if(r===null){return false}if(!this.transports||this.transports.length===0){return r>=t}const n=this.transports.findIndex((e=>{let n=getLevelValue(this.levels,e.level);if(n===null){n=r}return n>=t}));return n!==-1}log(e,t,...r){if(arguments.length===1){e[a]=e.level;this._addDefaultMeta(e);this.write(e);return this}if(arguments.length===2){if(t&&typeof t==="object"){t[a]=t.level=e;this._addDefaultMeta(t);this.write(t);return this}t={[a]:e,level:e,message:t};this._addDefaultMeta(t);this.write(t);return this}const[n]=r;if(typeof n==="object"&&n!==null){const i=t&&t.match&&t.match(g);if(!i){const i=Object.assign({},this.defaultMeta,n,{[a]:e,[o]:r,level:e,message:t});if(n.message)i.message=`${i.message} ${n.message}`;if(n.stack)i.stack=n.stack;this.write(i);return this}}this.write(Object.assign({},this.defaultMeta,{[a]:e,[o]:r,level:e,message:t}));return this}_transform(e,t,r){if(this.silent){return r()}if(!e[a]){e[a]=e.level}if(!this.levels[e[a]]&&this.levels[e[a]]!==0){console.error("[winston] Unknown logger level: %s",e[a])}if(!this._readableState.pipes){console.error("[winston] Attempt to write logs with no transports, which can increase memory usage: %j",e)}try{this.push(this.format.transform(e,this.format.options))}finally{this._writableState.sync=false;r()}}_final(e){const t=this.transports.slice();s(t,((e,t)=>{if(!e||e.finished)return setImmediate(t);e.once("finish",t);e.end()}),e)}add(e){const t=!l(e)||e.log.length>2?new d({transport:e}):e;if(!t._writableState||!t._writableState.objectMode){throw new Error("Transports must WritableStreams in objectMode. Set { objectMode: true }.")}this._onEvent("error",t);this._onEvent("warn",t);this.pipe(t);if(e.handleExceptions){this.exceptions.handle()}if(e.handleRejections){this.rejections.handle()}return this}remove(e){if(!e)return this;let t=e;if(!l(e)||e.log.length>2){t=this.transports.filter((t=>t.transport===e))[0]}if(t){this.unpipe(t)}return this}clear(){this.unpipe();return this}close(){this.exceptions.unhandle();this.rejections.unhandle();this.clear();this.emit("close");return this}setLevels(){h.deprecated("setLevels")}query(e,t){if(typeof e==="function"){t=e;e={}}e=e||{};const r={};const n=Object.assign({},e.query||{});function queryTransport(t,r){if(e.query&&typeof t.formatQuery==="function"){e.query=t.formatQuery(n)}t.query(e,((n,i)=>{if(n){return r(n)}if(typeof t.formatResults==="function"){i=t.formatResults(i,e.format)}r(null,i)}))}function addResults(e,t){queryTransport(e,((n,i)=>{if(t){i=n||i;if(i){r[e.name]=i}t()}t=null}))}s(this.transports.filter((e=>!!e.query)),addResults,(()=>t(null,r)))}stream(e={}){const t=new n;const r=[];t._streams=r;t.destroy=()=>{let e=r.length;while(e--){r[e].destroy()}};this.transports.filter((e=>!!e.stream)).forEach((n=>{const i=n.stream(e);if(!i){return}r.push(i);i.on("log",(e=>{e.transport=e.transport||[];e.transport.push(n.name);t.emit("log",e)}));i.on("error",(e=>{e.transport=e.transport||[];e.transport.push(n.name);t.emit("error",e)}))}));return t}startTimer(){return new f(this)}profile(e,...t){const r=Date.now();if(this.profilers[e]){const n=this.profilers[e];delete this.profilers[e];if(typeof t[t.length-2]==="function"){console.warn("Callback function no longer supported as of winston@3.0.0");t.pop()}const i=typeof t[t.length-1]==="object"?t.pop():{};i.level=i.level||"info";i.durationMs=r-n;i.message=i.message||e;return this.write(i)}this.profilers[e]=r;return this}handleExceptions(...e){console.warn("Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()");this.exceptions.handle(...e)}unhandleExceptions(...e){console.warn("Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()");this.exceptions.unhandle(...e)}cli(){throw new Error(["Logger.cli() was removed in winston@3.0.0","Use a custom winston.formats.cli() instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"))}_onEvent(e,t){function transportEvent(r){if(e==="error"&&!this.transports.includes(t)){this.add(t)}this.emit(e,r,t)}if(!t["__winston"+e]){t["__winston"+e]=transportEvent.bind(this);t.on(e,t["__winston"+e])}}_addDefaultMeta(e){if(this.defaultMeta){Object.assign(e,this.defaultMeta)}}}function getLevelValue(e,t){const r=e[t];if(!r&&r!==0){return null}return r}Object.defineProperty(Logger.prototype,"transports",{configurable:false,enumerable:true,get(){const{pipes:e}=this._readableState;return!Array.isArray(e)?[e].filter(Boolean):e}});e.exports=Logger},6959:(e,t,r)=>{class Profiler{constructor(e){const t=r(5153);if(typeof e!=="object"||Array.isArray(e)||!(e instanceof t)){throw new Error("Logger is required for profiling")}else{this.logger=e;this.start=Date.now()}}done(...e){if(typeof e[e.length-1]==="function"){console.warn("Callback function no longer supported as of winston@3.0.0");e.pop()}const t=typeof e[e.length-1]==="object"?e.pop():{};t.level=t.level||"info";t.durationMs=Date.now()-this.start;return this.logger.write(t)}}e.exports=Profiler},1080:(e,t,r)=>{const n=r(2037);const i=r(1216);const s=r(3170)("winston:rejection");const a=r(4118);const o=r(5315);const l=r(8185);e.exports=class RejectionHandler{constructor(e){if(!e){throw new Error("Logger is required to handle rejections")}this.logger=e;this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e)){return e.forEach((e=>this._addHandler(e)))}this._addHandler(e)}));if(!this.catcher){this.catcher=this._unhandledRejection.bind(this);process.on("unhandledRejection",this.catcher)}}unhandle(){if(this.catcher){process.removeListener("unhandledRejection",this.catcher);this.catcher=false;Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e)))}}getAllInfo(e){let t=null;if(e){t=typeof e==="string"?e:e.message}return{error:e,level:"error",message:[`unhandledRejection: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,rejection:true,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:n.loadavg(),uptime:n.uptime()}}getTrace(e){const t=e?o.parse(e):o.get();return t.map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleRejections=true;const t=new l(e);this.handlers.set(e,t);this.logger.pipe(t)}}_unhandledRejection(e){const t=this.getAllInfo(e);const r=this._getRejectionHandlers();let n=typeof this.logger.exitOnError==="function"?this.logger.exitOnError(e):this.logger.exitOnError;let o;if(!r.length&&n){console.warn("winston: exitOnError cannot be true with no rejection handlers.");console.warn("winston: not exiting process.");n=false}function gracefulExit(){s("doExit",n);s("process._exiting",process._exiting);if(n&&!process._exiting){if(o){clearTimeout(o)}process.exit(1)}}if(!r||r.length===0){return process.nextTick(gracefulExit)}i(r,((e,t)=>{const r=a(t);const n=e.transport||e;function onDone(e){return()=>{s(e);r()}}n._ending=true;n.once("finish",onDone("finished"));n.once("error",onDone("error"))}),(()=>n&&gracefulExit()));this.logger.log(t);if(n){o=setTimeout(gracefulExit,3e3)}}_getRejectionHandlers(){return this.logger.transports.filter((e=>{const t=e.transport||e;return t.handleRejections}))}}},8185:(e,t,r)=>{const{Writable:n}=r(7201);e.exports=class RejectionStream extends n{constructor(e){super({objectMode:true});if(!e){throw new Error("RejectionStream requires a TransportStream instance.")}this.handleRejections=true;this.transport=e}_write(e,t,r){if(e.rejection){return this.transport.log(e,r)}r();return true}}},1965:(e,t,r)=>{const n=r(7147);const{StringDecoder:i}=r(1576);const{Stream:s}=r(7201);function noop(){}e.exports=(e,t)=>{const r=Buffer.alloc(64*1024);const a=new i("utf8");const o=new s;let l="";let c=0;let u=0;if(e.start===-1){delete e.start}o.readable=true;o.destroy=()=>{o.destroyed=true;o.emit("end");o.emit("close")};n.open(e.file,"a+","0644",((i,s)=>{if(i){if(!t){o.emit("error",i)}else{t(i)}o.destroy();return}(function read(){if(o.destroyed){n.close(s,noop);return}return n.read(s,r,0,r.length,c,((n,i)=>{if(n){if(!t){o.emit("error",n)}else{t(n)}o.destroy();return}if(!i){if(l){if(e.start==null||u>e.start){if(!t){o.emit("line",l)}else{t(null,l)}}u++;l=""}return setTimeout(read,1e3)}let s=a.write(r.slice(0,i));if(!t){o.emit("data",s)}s=(l+s).split(/\n+/);const d=s.length-1;let f=0;for(;fe.start){if(!t){o.emit("line",s[f])}else{t(null,s[f])}}u++}l=s[d];c+=i;return read()}))})()}));if(!t){return o}return o.destroy}},7501:(e,t,r)=>{const n=r(2037);const{LEVEL:i,MESSAGE:s}=r(3937);const a=r(7281);e.exports=class Console extends a{constructor(e={}){super(e);this.name=e.name||"console";this.stderrLevels=this._stringArrayToSet(e.stderrLevels);this.consoleWarnLevels=this._stringArrayToSet(e.consoleWarnLevels);this.eol=typeof e.eol==="string"?e.eol:n.EOL;this.setMaxListeners(30)}log(e,t){setImmediate((()=>this.emit("logged",e)));if(this.stderrLevels[e[i]]){if(console._stderr){console._stderr.write(`${e[s]}${this.eol}`)}else{console.error(e[s])}if(t){t()}return}else if(this.consoleWarnLevels[e[i]]){if(console._stderr){console._stderr.write(`${e[s]}${this.eol}`)}else{console.warn(e[s])}if(t){t()}return}if(console._stdout){console._stdout.write(`${e[s]}${this.eol}`)}else{console.log(e[s])}if(t){t()}}_stringArrayToSet(e,t){if(!e)return{};t=t||"Cannot make set from type other than Array of string elements";if(!Array.isArray(e)){throw new Error(t)}return e.reduce(((e,r)=>{if(typeof r!=="string"){throw new Error(t)}e[r]=true;return e}),{})}}},2478:(e,t,r)=>{const n=r(7147);const i=r(1017);const s=r(9619);const a=r(9796);const{MESSAGE:o}=r(3937);const{Stream:l,PassThrough:c}=r(7201);const u=r(7281);const d=r(3170)("winston:file");const f=r(2037);const h=r(1965);e.exports=class File extends u{constructor(e={}){super(e);this.name=e.name||"file";function throwIf(t,...r){r.slice(1).forEach((r=>{if(e[r]){throw new Error(`Cannot set ${r} and ${t} together`)}}))}this._stream=new c;this._stream.setMaxListeners(30);this._onError=this._onError.bind(this);if(e.filename||e.dirname){throwIf("filename or dirname","stream");this._basename=this.filename=e.filename?i.basename(e.filename):"winston.log";this.dirname=e.dirname||i.dirname(e.filename);this.options=e.options||{flags:"a"}}else if(e.stream){console.warn("options.stream will be removed in winston@4. Use winston.transports.Stream");throwIf("stream","filename","maxsize");this._dest=this._stream.pipe(this._setupStream(e.stream));this.dirname=i.dirname(this._dest.path)}else{throw new Error("Cannot log to file without filename or stream.")}this.maxsize=e.maxsize||null;this.rotationFormat=e.rotationFormat||false;this.zippedArchive=e.zippedArchive||false;this.maxFiles=e.maxFiles||null;this.eol=typeof e.eol==="string"?e.eol:f.EOL;this.tailable=e.tailable||false;this.lazy=e.lazy||false;this._size=0;this._pendingSize=0;this._created=0;this._drain=false;this._opening=false;this._ending=false;this._fileExist=false;if(this.dirname)this._createLogDirIfNotExist(this.dirname);if(!this.lazy)this.open()}finishIfEnding(){if(this._ending){if(this._opening){this.once("open",(()=>{this._stream.once("finish",(()=>this.emit("finish")));setImmediate((()=>this._stream.end()))}))}else{this._stream.once("finish",(()=>this.emit("finish")));setImmediate((()=>this._stream.end()))}}}log(e,t=(()=>{})){if(this.silent){t();return true}if(this._drain){this._stream.once("drain",(()=>{this._drain=false;this.log(e,t)}));return}if(this._rotate){this._stream.once("rotate",(()=>{this._rotate=false;this.log(e,t)}));return}if(this.lazy){if(!this._fileExist){if(!this._opening){this.open()}this.once("open",(()=>{this._fileExist=true;this.log(e,t);return}));return}if(this._needsNewFile(this._pendingSize)){this._dest.once("close",(()=>{if(!this._opening){this.open()}this.once("open",(()=>{this.log(e,t);return}));return}));return}}const r=`${e[o]}${this.eol}`;const n=Buffer.byteLength(r);function logged(){this._size+=n;this._pendingSize-=n;d("logged %s %s",this._size,r);this.emit("logged",e);if(this._rotate){return}if(this._opening){return}if(!this._needsNewFile()){return}if(this.lazy){this._endStream((()=>{this.emit("fileclosed")}));return}this._rotate=true;this._endStream((()=>this._rotateFile()))}this._pendingSize+=n;if(this._opening&&!this.rotatedWhileOpening&&this._needsNewFile(this._size+this._pendingSize)){this.rotatedWhileOpening=true}const i=this._stream.write(r,logged.bind(this));if(!i){this._drain=true;this._stream.once("drain",(()=>{this._drain=false;t()}))}else{t()}d("written",i,this._drain);this.finishIfEnding();return i}query(e,t){if(typeof e==="function"){t=e;e={}}e=normalizeQuery(e);const r=i.join(this.dirname,this.filename);let s="";let a=[];let o=0;const l=n.createReadStream(r,{encoding:"utf8"});l.on("error",(e=>{if(l.readable){l.destroy()}if(!t){return}return e.code!=="ENOENT"?t(e):t(null,a)}));l.on("data",(t=>{t=(s+t).split(/\n+/);const r=t.length-1;let n=0;for(;n=e.start){add(t[n])}o++}s=t[r]}));l.on("close",(()=>{if(s){add(s,true)}if(e.order==="desc"){a=a.reverse()}if(t)t(null,a)}));function add(e,t){try{const t=JSON.parse(e);if(check(t)){push(t)}}catch(e){if(!t){l.emit("error",e)}}}function push(t){if(e.rows&&a.length>=e.rows&&e.order!=="desc"){if(l.readable){l.destroy()}return}if(e.fields){t=e.fields.reduce(((e,r)=>{e[r]=t[r];return e}),{})}if(e.order==="desc"){if(a.length>=e.rows){a.shift()}}a.push(t)}function check(t){if(!t){return}if(typeof t!=="object"){return}const r=new Date(t.timestamp);if(e.from&&re.until||e.level&&e.level!==t.level){return}return true}function normalizeQuery(e){e=e||{};e.rows=e.rows||e.limit||10;e.start=e.start||0;e.until=e.until||new Date;if(typeof e.until!=="object"){e.until=new Date(e.until)}e.from=e.from||e.until-24*60*60*1e3;if(typeof e.from!=="object"){e.from=new Date(e.from)}e.order=e.order||"desc";return e}}stream(e={}){const t=i.join(this.dirname,this.filename);const r=new l;const n={file:t,start:e.start};r.destroy=h(n,((e,t)=>{if(e){return r.emit("error",e)}try{r.emit("data",t);t=JSON.parse(t);r.emit("log",t)}catch(e){r.emit("error",e)}}));return r}open(){if(!this.filename)return;if(this._opening)return;this._opening=true;this.stat(((e,t)=>{if(e){return this.emit("error",e)}d("stat done: %s { size: %s }",this.filename,t);this._size=t;this._dest=this._createStream(this._stream);this._opening=false;this.once("open",(()=>{if(this._stream.eventNames().includes("rotate")){this._stream.emit("rotate")}else{this._rotate=false}}))}))}stat(e){const t=this._getFile();const r=i.join(this.dirname,t);n.stat(r,((n,i)=>{if(n&&n.code==="ENOENT"){d("ENOENT ok",r);this.filename=t;return e(null,0)}if(n){d(`err ${n.code} ${r}`);return e(n)}if(!i||this._needsNewFile(i.size)){return this._incFile((()=>this.stat(e)))}this.filename=t;e(null,i.size)}))}close(e){if(!this._stream){return}this._stream.end((()=>{if(e){e()}this.emit("flush");this.emit("closed")}))}_needsNewFile(e){e=e||this._size;return this.maxsize&&e>=this.maxsize}_onError(e){this.emit("error",e)}_setupStream(e){e.on("error",this._onError);return e}_cleanupStream(e){e.removeListener("error",this._onError);e.destroy();return e}_rotateFile(){this._incFile((()=>this.open()))}_endStream(e=(()=>{})){if(this._dest){this._stream.unpipe(this._dest);this._dest.end((()=>{this._cleanupStream(this._dest);e()}))}else{e()}}_createStream(e){const t=i.join(this.dirname,this.filename);d("create stream start",t,this.options);const r=n.createWriteStream(t,this.options).on("error",(e=>d(e))).on("close",(()=>d("close",r.path,r.bytesWritten))).on("open",(()=>{d("file open ok",t);this.emit("open",t);e.pipe(r);if(this.rotatedWhileOpening){this._stream=new c;this._stream.setMaxListeners(30);this._rotateFile();this.rotatedWhileOpening=false;this._cleanupStream(r);e.end()}}));d("create stream ok",t);return r}_incFile(e){d("_incFile",this.filename);const t=i.extname(this._basename);const r=i.basename(this._basename,t);const n=[];if(this.zippedArchive){n.push(function(e){const n=this._created>0&&!this.tailable?this._created:"";this._compressFile(i.join(this.dirname,`${r}${n}${t}`),i.join(this.dirname,`${r}${n}${t}.gz`),e)}.bind(this))}n.push(function(e){if(!this.tailable){this._created+=1;this._checkMaxFilesIncrementing(t,r,e)}else{this._checkMaxFilesTailable(t,r,e)}}.bind(this));s(n,e)}_getFile(){const e=i.extname(this._basename);const t=i.basename(this._basename,e);const r=this.rotationFormat?this.rotationFormat():this._created;return!this.tailable&&this._created?`${t}${r}${e}`:`${t}${e}`}_checkMaxFilesIncrementing(e,t,r){if(!this.maxFiles||this._created1;r--){a.push(function(r,s){let a=`${t}${r-1}${e}${o}`;const l=i.join(this.dirname,a);n.exists(l,(c=>{if(!c){return s(null)}a=`${t}${r}${e}${o}`;n.rename(l,i.join(this.dirname,a),s)}))}.bind(this,r))}s(a,(()=>{n.rename(i.join(this.dirname,`${t}${e}${o}`),i.join(this.dirname,`${t}1${e}${o}`),r)}))}_compressFile(e,t,r){n.access(e,n.F_OK,(i=>{if(i){return r()}var s=a.createGzip();var o=n.createReadStream(e);var l=n.createWriteStream(t);l.on("finish",(()=>{n.unlink(e,r)}));o.pipe(s).pipe(l)}))}_createLogDirIfNotExist(e){if(!n.existsSync(e)){n.mkdirSync(e,{recursive:true})}}}},8028:(e,t,r)=>{const n=r(3685);const i=r(5687);const{Stream:s}=r(7201);const a=r(7281);const o=r(7560);e.exports=class Http extends a{constructor(e={}){super(e);this.options=e;this.name=e.name||"http";this.ssl=!!e.ssl;this.host=e.host||"localhost";this.port=e.port;this.auth=e.auth;this.path=e.path||"";this.agent=e.agent;this.headers=e.headers||{};this.headers["content-type"]="application/json";this.batch=e.batch||false;this.batchInterval=e.batchInterval||5e3;this.batchCount=e.batchCount||10;this.batchOptions=[];this.batchTimeoutID=-1;this.batchCallback={};if(!this.port){this.port=this.ssl?443:80}}log(e,t){this._request(e,null,null,((t,r)=>{if(r&&r.statusCode!==200){t=new Error(`Invalid HTTP Status Code: ${r.statusCode}`)}if(t){this.emit("warn",t)}else{this.emit("logged",e)}}));if(t){setImmediate(t)}}query(e,t){if(typeof e==="function"){t=e;e={}}e={method:"query",params:this.normalizeQuery(e)};const r=e.params.auth||null;delete e.params.auth;const n=e.params.path||null;delete e.params.path;this._request(e,r,n,((e,r,n)=>{if(r&&r.statusCode!==200){e=new Error(`Invalid HTTP Status Code: ${r.statusCode}`)}if(e){return t(e)}if(typeof n==="string"){try{n=JSON.parse(n)}catch(e){return t(e)}}t(null,n)}))}stream(e={}){const t=new s;e={method:"stream",params:e};const r=e.params.path||null;delete e.params.path;const n=e.params.auth||null;delete e.params.auth;let i="";const a=this._request(e,n,r);t.destroy=()=>a.destroy();a.on("data",(e=>{e=(i+e).split(/\n+/);const r=e.length-1;let n=0;for(;nt.emit("error",e)));return t}_request(e,t,r,n){e=e||{};t=t||this.auth;r=r||this.path||"";if(this.batch){this._doBatch(e,n,t,r)}else{this._doRequest(e,n,t,r)}}_doBatch(e,t,r,n){this.batchOptions.push(e);if(this.batchOptions.length===1){const e=this;this.batchCallback=t;this.batchTimeoutID=setTimeout((function(){e.batchTimeoutID=-1;e._doBatchRequest(e.batchCallback,r,n)}),this.batchInterval)}if(this.batchOptions.length===this.batchCount){this._doBatchRequest(this.batchCallback,r,n)}}_doBatchRequest(e,t,r){if(this.batchTimeoutID>0){clearTimeout(this.batchTimeoutID);this.batchTimeoutID=-1}const n=this.batchOptions.slice();this.batchOptions=[];this._doRequest(n,e,t,r)}_doRequest(e,t,r,s){const a=Object.assign({},this.headers);if(r&&r.bearer){a.Authorization=`Bearer ${r.bearer}`}const l=(this.ssl?i:n).request({...this.options,method:"POST",host:this.host,port:this.port,path:`/${s.replace(/^\//,"")}`,headers:a,auth:r&&r.username&&r.password?`${r.username}:${r.password}`:"",agent:this.agent});l.on("error",t);l.on("response",(e=>e.on("end",(()=>t(null,e))).resume()));l.end(Buffer.from(o(e,this.options.replacer),"utf8"))}}},7804:(e,t,r)=>{Object.defineProperty(t,"Console",{configurable:true,enumerable:true,get(){return r(7501)}});Object.defineProperty(t,"File",{configurable:true,enumerable:true,get(){return r(2478)}});Object.defineProperty(t,"Http",{configurable:true,enumerable:true,get(){return r(8028)}});Object.defineProperty(t,"Stream",{configurable:true,enumerable:true,get(){return r(4747)}})},4747:(e,t,r)=>{const n=r(1554);const{MESSAGE:i}=r(3937);const s=r(2037);const a=r(7281);e.exports=class Stream extends a{constructor(e={}){super(e);if(!e.stream||!n(e.stream)){throw new Error("options.stream is required.")}this._stream=e.stream;this._stream.setMaxListeners(Infinity);this.isObjectMode=e.stream._writableState.objectMode;this.eol=typeof e.eol==="string"?e.eol:s.EOL}log(e,t){setImmediate((()=>this.emit("logged",e)));if(this.isObjectMode){this._stream.write(e);if(t){t()}return}this._stream.write(`${e[i]}${this.eol}`);if(t){t()}return}}},7200:e=>{const t={};function createErrorType(e,r,n){if(!n){n=Error}function getMessage(e,t,n){if(typeof r==="string"){return r}else{return r(e,t,n)}}class NodeError extends n{constructor(e,t,r){super(getMessage(e,t,r))}}NodeError.prototype.name=n.name;NodeError.prototype.code=e;t[e]=NodeError}function oneOf(e,t){if(Array.isArray(e)){const r=e.length;e=e.map((e=>String(e)));if(r>2){return`one of ${t} ${e.slice(0,r-1).join(", ")}, or `+e[r-1]}else if(r===2){return`one of ${t} ${e[0]} or ${e[1]}`}else{return`of ${t} ${e[0]}`}}else{return`of ${t} ${String(e)}`}}function startsWith(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function endsWith(e,t,r){if(r===undefined||r>e.length){r=e.length}return e.substring(r-t.length,r)===t}function includes(e,t,r){if(typeof r!=="number"){r=0}if(r+t.length>e.length){return false}else{return e.indexOf(t,r)!==-1}}createErrorType("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError);createErrorType("ERR_INVALID_ARG_TYPE",(function(e,t,r){let n;if(typeof t==="string"&&startsWith(t,"not ")){n="must not be";t=t.replace(/^not /,"")}else{n="must be"}let i;if(endsWith(e," argument")){i=`The ${e} ${n} ${oneOf(t,"type")}`}else{const r=includes(e,".")?"property":"argument";i=`The "${e}" ${r} ${n} ${oneOf(t,"type")}`}i+=`. Received type ${typeof r}`;return i}),TypeError);createErrorType("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");createErrorType("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"}));createErrorType("ERR_STREAM_PREMATURE_CLOSE","Premature close");createErrorType("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"}));createErrorType("ERR_MULTIPLE_CALLBACK","Callback called multiple times");createErrorType("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");createErrorType("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);createErrorType("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError);createErrorType("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");e.exports.q=t},2307:(e,t,r)=>{var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=Duplex;var i=r(3261);var s=r(8571);r(4124)(Duplex,i);{var a=n(s.prototype);for(var o=0;o{e.exports=PassThrough;var n=r(1026);r(4124)(PassThrough,n);function PassThrough(e){if(!(this instanceof PassThrough))return new PassThrough(e);n.call(this,e)}PassThrough.prototype._transform=function(e,t,r){r(null,e)}},3261:(e,t,r)=>{e.exports=Readable;var n;Readable.ReadableState=ReadableState;var i=r(2361).EventEmitter;var s=function EElistenerCount(e,t){return e.listeners(t).length};var a=r(8928);var o=r(4300).Buffer;var l=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return o.from(e)}function _isUint8Array(e){return o.isBuffer(e)||e instanceof l}var c=r(3837);var u;if(c&&c.debuglog){u=c.debuglog("stream")}else{u=function debug(){}}var d=r(7191);var f=r(8980);var h=r(7249),p=h.getHighWaterMark;var g=r(7200).q,m=g.ERR_INVALID_ARG_TYPE,v=g.ERR_STREAM_PUSH_AFTER_EOF,y=g.ERR_METHOD_NOT_IMPLEMENTED,b=g.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;var S;var _;var w;r(4124)(Readable,a);var C=f.errorOrDestroy;var E=["error","close","destroy","pause","resume"];function prependListener(e,t,r){if(typeof e.prependListener==="function")return e.prependListener(t,r);if(!e._events||!e._events[t])e.on(t,r);else if(Array.isArray(e._events[t]))e._events[t].unshift(r);else e._events[t]=[r,e._events[t]]}function ReadableState(e,t,i){n=n||r(2307);e=e||{};if(typeof i!=="boolean")i=t instanceof n;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.readableObjectMode;this.highWaterMark=p(this,e,"readableHighWaterMark",i);this.buffer=new d;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.paused=true;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.destroyed=false;this.defaultEncoding=e.defaultEncoding||"utf8";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(e.encoding){if(!S)S=r(4841).s;this.decoder=new S(e.encoding);this.encoding=e.encoding}}function Readable(e){n=n||r(2307);if(!(this instanceof Readable))return new Readable(e);var t=this instanceof n;this._readableState=new ReadableState(e,this,t);this.readable=true;if(e){if(typeof e.read==="function")this._read=e.read;if(typeof e.destroy==="function")this._destroy=e.destroy}a.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{enumerable:false,get:function get(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function set(e){if(!this._readableState){return}this._readableState.destroyed=e}});Readable.prototype.destroy=f.destroy;Readable.prototype._undestroy=f.undestroy;Readable.prototype._destroy=function(e,t){t(e)};Readable.prototype.push=function(e,t){var r=this._readableState;var n;if(!r.objectMode){if(typeof e==="string"){t=t||r.defaultEncoding;if(t!==r.encoding){e=o.from(e,t);t=""}n=true}}else{n=true}return readableAddChunk(this,e,t,false,n)};Readable.prototype.unshift=function(e){return readableAddChunk(this,e,null,true,false)};function readableAddChunk(e,t,r,n,i){u("readableAddChunk",t);var s=e._readableState;if(t===null){s.reading=false;onEofChunk(e,s)}else{var a;if(!i)a=chunkInvalid(s,t);if(a){C(e,a)}else if(s.objectMode||t&&t.length>0){if(typeof t!=="string"&&!s.objectMode&&Object.getPrototypeOf(t)!==o.prototype){t=_uint8ArrayToBuffer(t)}if(n){if(s.endEmitted)C(e,new b);else addChunk(e,s,t,true)}else if(s.ended){C(e,new v)}else if(s.destroyed){return false}else{s.reading=false;if(s.decoder&&!r){t=s.decoder.write(t);if(s.objectMode||t.length!==0)addChunk(e,s,t,false);else maybeReadMore(e,s)}else{addChunk(e,s,t,false)}}}else if(!n){s.reading=false;maybeReadMore(e,s)}}return!s.ended&&(s.length=T){e=T}else{e--;e|=e>>>1;e|=e>>>2;e|=e>>>4;e|=e>>>8;e|=e>>>16;e++}return e}function howMuchToRead(e,t){if(e<=0||t.length===0&&t.ended)return 0;if(t.objectMode)return 1;if(e!==e){if(t.flowing&&t.length)return t.buffer.head.data.length;else return t.length}if(e>t.highWaterMark)t.highWaterMark=computeNewHighWaterMark(e);if(e<=t.length)return e;if(!t.ended){t.needReadable=true;return 0}return t.length}Readable.prototype.read=function(e){u("read",e);e=parseInt(e,10);var t=this._readableState;var r=e;if(e!==0)t.emittedReadable=false;if(e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended)){u("read: emitReadable",t.length,t.ended);if(t.length===0&&t.ended)endReadable(this);else emitReadable(this);return null}e=howMuchToRead(e,t);if(e===0&&t.ended){if(t.length===0)endReadable(this);return null}var n=t.needReadable;u("need readable",n);if(t.length===0||t.length-e0)i=fromList(e,t);else i=null;if(i===null){t.needReadable=t.length<=t.highWaterMark;e=0}else{t.length-=e;t.awaitDrain=0}if(t.length===0){if(!t.ended)t.needReadable=true;if(r!==e&&t.ended)endReadable(this)}if(i!==null)this.emit("data",i);return i};function onEofChunk(e,t){u("onEofChunk");if(t.ended)return;if(t.decoder){var r=t.decoder.end();if(r&&r.length){t.buffer.push(r);t.length+=t.objectMode?1:r.length}}t.ended=true;if(t.sync){emitReadable(e)}else{t.needReadable=false;if(!t.emittedReadable){t.emittedReadable=true;emitReadable_(e)}}}function emitReadable(e){var t=e._readableState;u("emitReadable",t.needReadable,t.emittedReadable);t.needReadable=false;if(!t.emittedReadable){u("emitReadable",t.flowing);t.emittedReadable=true;process.nextTick(emitReadable_,e)}}function emitReadable_(e){var t=e._readableState;u("emitReadable_",t.destroyed,t.length,t.ended);if(!t.destroyed&&(t.length||t.ended)){e.emit("readable");t.emittedReadable=false}t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark;flow(e)}function maybeReadMore(e,t){if(!t.readingMore){t.readingMore=true;process.nextTick(maybeReadMore_,e,t)}}function maybeReadMore_(e,t){while(!t.reading&&!t.ended&&(t.length1&&indexOf(n.pipes,e)!==-1)&&!l){u("false write response, pause",n.awaitDrain);n.awaitDrain++}r.pause()}}function onerror(t){u("onerror",t);unpipe();e.removeListener("error",onerror);if(s(e,"error")===0)C(e,t)}prependListener(e,"error",onerror);function onclose(){e.removeListener("finish",onfinish);unpipe()}e.once("close",onclose);function onfinish(){u("onfinish");e.removeListener("close",onclose);unpipe()}e.once("finish",onfinish);function unpipe(){u("unpipe");r.unpipe(e)}e.emit("pipe",r);if(!n.flowing){u("pipe resume");r.resume()}return e};function pipeOnDrain(e){return function pipeOnDrainFunctionResult(){var t=e._readableState;u("pipeOnDrain",t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&&s(e,"data")){t.flowing=true;flow(e)}}}Readable.prototype.unpipe=function(e){var t=this._readableState;var r={hasUnpiped:false};if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&&e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit("unpipe",this,r);return this}if(!e){var n=t.pipes;var i=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var s=0;s0;if(n.flowing!==false)this.resume()}else if(e==="readable"){if(!n.endEmitted&&!n.readableListening){n.readableListening=n.needReadable=true;n.flowing=false;n.emittedReadable=false;u("on readable",n.length,n.reading);if(n.length){emitReadable(this)}else if(!n.reading){process.nextTick(nReadingNextTick,this)}}}return r};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(e,t){var r=a.prototype.removeListener.call(this,e,t);if(e==="readable"){process.nextTick(updateReadableListening,this)}return r};Readable.prototype.removeAllListeners=function(e){var t=a.prototype.removeAllListeners.apply(this,arguments);if(e==="readable"||e===undefined){process.nextTick(updateReadableListening,this)}return t};function updateReadableListening(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0;if(t.resumeScheduled&&!t.paused){t.flowing=true}else if(e.listenerCount("data")>0){e.resume()}}function nReadingNextTick(e){u("readable nexttick read 0");e.read(0)}Readable.prototype.resume=function(){var e=this._readableState;if(!e.flowing){u("resume");e.flowing=!e.readableListening;resume(this,e)}e.paused=false;return this};function resume(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;process.nextTick(resume_,e,t)}}function resume_(e,t){u("resume",t.reading);if(!t.reading){e.read(0)}t.resumeScheduled=false;e.emit("resume");flow(e);if(t.flowing&&!t.reading)e.read(0)}Readable.prototype.pause=function(){u("call pause flowing=%j",this._readableState.flowing);if(this._readableState.flowing!==false){u("pause");this._readableState.flowing=false;this.emit("pause")}this._readableState.paused=true;return this};function flow(e){var t=e._readableState;u("flow",t.flowing);while(t.flowing&&e.read()!==null);}Readable.prototype.wrap=function(e){var t=this;var r=this._readableState;var n=false;e.on("end",(function(){u("wrapped end");if(r.decoder&&!r.ended){var e=r.decoder.end();if(e&&e.length)t.push(e)}t.push(null)}));e.on("data",(function(i){u("wrapped data");if(r.decoder)i=r.decoder.write(i);if(r.objectMode&&(i===null||i===undefined))return;else if(!r.objectMode&&(!i||!i.length))return;var s=t.push(i);if(!s){n=true;e.pause()}}));for(var i in e){if(this[i]===undefined&&typeof e[i]==="function"){this[i]=function methodWrap(t){return function methodWrapReturnFunction(){return e[t].apply(e,arguments)}}(i)}}for(var s=0;s=t.length){if(t.decoder)r=t.buffer.join("");else if(t.buffer.length===1)r=t.buffer.first();else r=t.buffer.concat(t.length);t.buffer.clear()}else{r=t.buffer.consume(e,t.decoder)}return r}function endReadable(e){var t=e._readableState;u("endReadable",t.endEmitted);if(!t.endEmitted){t.ended=true;process.nextTick(endReadableNT,t,e)}}function endReadableNT(e,t){u("endReadableNT",e.endEmitted,e.length);if(!e.endEmitted&&e.length===0){e.endEmitted=true;t.readable=false;t.emit("end");if(e.autoDestroy){var r=t._writableState;if(!r||r.autoDestroy&&r.finished){t.destroy()}}}}if(typeof Symbol==="function"){Readable.from=function(e,t){if(w===undefined){w=r(6636)}return w(Readable,e,t)}}function indexOf(e,t){for(var r=0,n=e.length;r{e.exports=Transform;var n=r(7200).q,i=n.ERR_METHOD_NOT_IMPLEMENTED,s=n.ERR_MULTIPLE_CALLBACK,a=n.ERR_TRANSFORM_ALREADY_TRANSFORMING,o=n.ERR_TRANSFORM_WITH_LENGTH_0;var l=r(2307);r(4124)(Transform,l);function afterTransform(e,t){var r=this._transformState;r.transforming=false;var n=r.writecb;if(n===null){return this.emit("error",new s)}r.writechunk=null;r.writecb=null;if(t!=null)this.push(t);n(e);var i=this._readableState;i.reading=false;if(i.needReadable||i.length{e.exports=Writable;function WriteReq(e,t,r){this.chunk=e;this.encoding=t;this.callback=r;this.next=null}function CorkedRequest(e){var t=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(t,e)}}var n;Writable.WritableState=WritableState;var i={deprecate:r(5278)};var s=r(8928);var a=r(4300).Buffer;var o=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(e){return a.from(e)}function _isUint8Array(e){return a.isBuffer(e)||e instanceof o}var l=r(8980);var c=r(7249),u=c.getHighWaterMark;var d=r(7200).q,f=d.ERR_INVALID_ARG_TYPE,h=d.ERR_METHOD_NOT_IMPLEMENTED,p=d.ERR_MULTIPLE_CALLBACK,g=d.ERR_STREAM_CANNOT_PIPE,m=d.ERR_STREAM_DESTROYED,v=d.ERR_STREAM_NULL_VALUES,y=d.ERR_STREAM_WRITE_AFTER_END,b=d.ERR_UNKNOWN_ENCODING;var S=l.errorOrDestroy;r(4124)(Writable,s);function nop(){}function WritableState(e,t,i){n=n||r(2307);e=e||{};if(typeof i!=="boolean")i=t instanceof n;this.objectMode=!!e.objectMode;if(i)this.objectMode=this.objectMode||!!e.writableObjectMode;this.highWaterMark=u(this,e,"writableHighWaterMark",i);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var s=e.decodeStrings===false;this.decodeStrings=!s;this.defaultEncoding=e.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){onwrite(t,e)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.emitClose=e.emitClose!==false;this.autoDestroy=!!e.autoDestroy;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var e=this.bufferedRequest;var t=[];while(e){t.push(e);e=e.next}return t};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:i.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(e){}})();var _;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){_=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(e){if(_.call(this,e))return true;if(this!==Writable)return false;return e&&e._writableState instanceof WritableState}})}else{_=function realHasInstance(e){return e instanceof this}}function Writable(e){n=n||r(2307);var t=this instanceof n;if(!t&&!_.call(Writable,this))return new Writable(e);this._writableState=new WritableState(e,this,t);this.writable=true;if(e){if(typeof e.write==="function")this._write=e.write;if(typeof e.writev==="function")this._writev=e.writev;if(typeof e.destroy==="function")this._destroy=e.destroy;if(typeof e.final==="function")this._final=e.final}s.call(this)}Writable.prototype.pipe=function(){S(this,new g)};function writeAfterEnd(e,t){var r=new y;S(e,r);process.nextTick(t,r)}function validChunk(e,t,r,n){var i;if(r===null){i=new v}else if(typeof r!=="string"&&!t.objectMode){i=new f("chunk",["string","Buffer"],r)}if(i){S(e,i);process.nextTick(n,i);return false}return true}Writable.prototype.write=function(e,t,r){var n=this._writableState;var i=false;var s=!n.objectMode&&_isUint8Array(e);if(s&&!a.isBuffer(e)){e=_uint8ArrayToBuffer(e)}if(typeof t==="function"){r=t;t=null}if(s)t="buffer";else if(!t)t=n.defaultEncoding;if(typeof r!=="function")r=nop;if(n.ending)writeAfterEnd(this,r);else if(s||validChunk(this,n,e,r)){n.pendingcb++;i=writeOrBuffer(this,n,s,e,t,r)}return i};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest)clearBuffer(this,e)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(e){if(typeof e==="string")e=e.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new b(e);this._writableState.defaultEncoding=e;return this};Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:false,get:function get(){return this._writableState&&this._writableState.getBuffer()}});function decodeChunk(e,t,r){if(!e.objectMode&&e.decodeStrings!==false&&typeof t==="string"){t=a.from(t,r)}return t}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function get(){return this._writableState.highWaterMark}});function writeOrBuffer(e,t,r,n,i,s){if(!r){var a=decodeChunk(t,n,i);if(n!==a){r=true;i="buffer";n=a}}var o=t.objectMode?1:n.length;t.length+=o;var l=t.length{var n;function _defineProperty(e,t,r){t=_toPropertyKey(t);if(t in e){Object.defineProperty(e,t,{value:r,enumerable:true,configurable:true,writable:true})}else{e[t]=r}return e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return typeof t==="symbol"?t:String(t)}function _toPrimitive(e,t){if(typeof e!=="object"||e===null)return e;var r=e[Symbol.toPrimitive];if(r!==undefined){var n=r.call(e,t||"default");if(typeof n!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var i=r(1077);var s=Symbol("lastResolve");var a=Symbol("lastReject");var o=Symbol("error");var l=Symbol("ended");var c=Symbol("lastPromise");var u=Symbol("handlePromise");var d=Symbol("stream");function createIterResult(e,t){return{value:e,done:t}}function readAndResolve(e){var t=e[s];if(t!==null){var r=e[d].read();if(r!==null){e[c]=null;e[s]=null;e[a]=null;t(createIterResult(r,false))}}}function onReadable(e){process.nextTick(readAndResolve,e)}function wrapForNext(e,t){return function(r,n){e.then((function(){if(t[l]){r(createIterResult(undefined,true));return}t[u](r,n)}),n)}}var f=Object.getPrototypeOf((function(){}));var h=Object.setPrototypeOf((n={get stream(){return this[d]},next:function next(){var e=this;var t=this[o];if(t!==null){return Promise.reject(t)}if(this[l]){return Promise.resolve(createIterResult(undefined,true))}if(this[d].destroyed){return new Promise((function(t,r){process.nextTick((function(){if(e[o]){r(e[o])}else{t(createIterResult(undefined,true))}}))}))}var r=this[c];var n;if(r){n=new Promise(wrapForNext(r,this))}else{var i=this[d].read();if(i!==null){return Promise.resolve(createIterResult(i,false))}n=new Promise(this[u])}this[c]=n;return n}},_defineProperty(n,Symbol.asyncIterator,(function(){return this})),_defineProperty(n,"return",(function _return(){var e=this;return new Promise((function(t,r){e[d].destroy(null,(function(e){if(e){r(e);return}t(createIterResult(undefined,true))}))}))})),n),f);var p=function createReadableStreamAsyncIterator(e){var t;var r=Object.create(h,(t={},_defineProperty(t,d,{value:e,writable:true}),_defineProperty(t,s,{value:null,writable:true}),_defineProperty(t,a,{value:null,writable:true}),_defineProperty(t,o,{value:null,writable:true}),_defineProperty(t,l,{value:e._readableState.endEmitted,writable:true}),_defineProperty(t,u,{value:function value(e,t){var n=r[d].read();if(n){r[c]=null;r[s]=null;r[a]=null;e(createIterResult(n,false))}else{r[s]=e;r[a]=t}},writable:true}),t));r[c]=null;i(e,(function(e){if(e&&e.code!=="ERR_STREAM_PREMATURE_CLOSE"){var t=r[a];if(t!==null){r[c]=null;r[s]=null;r[a]=null;t(e)}r[o]=e;return}var n=r[s];if(n!==null){r[c]=null;r[s]=null;r[a]=null;n(createIterResult(undefined,true))}r[l]=true}));e.on("readable",onReadable.bind(null,r));return r};e.exports=p},7191:(e,t,r)=>{function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t0)this.tail.next=t;else this.head=t;this.tail=t;++this.length}},{key:"unshift",value:function unshift(e){var t={data:e,next:this.head};if(this.length===0)this.tail=t;this.head=t;++this.length}},{key:"shift",value:function shift(){if(this.length===0)return;var e=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return e}},{key:"clear",value:function clear(){this.head=this.tail=null;this.length=0}},{key:"join",value:function join(e){if(this.length===0)return"";var t=this.head;var r=""+t.data;while(t=t.next)r+=e+t.data;return r}},{key:"concat",value:function concat(e){if(this.length===0)return i.alloc(0);var t=i.allocUnsafe(e>>>0);var r=this.head;var n=0;while(r){copyBuffer(r.data,t,n);n+=r.data.length;r=r.next}return t}},{key:"consume",value:function consume(e,t){var r;if(ei.length?i.length:e;if(s===i.length)n+=i;else n+=i.slice(0,e);e-=s;if(e===0){if(s===i.length){++r;if(t.next)this.head=t.next;else this.head=this.tail=null}else{this.head=t;t.data=i.slice(s)}break}++r}this.length-=r;return n}},{key:"_getBuffer",value:function _getBuffer(e){var t=i.allocUnsafe(e);var r=this.head;var n=1;r.data.copy(t);e-=r.data.length;while(r=r.next){var s=r.data;var a=e>s.length?s.length:e;s.copy(t,t.length-e,0,a);e-=a;if(e===0){if(a===s.length){++n;if(r.next)this.head=r.next;else this.head=this.tail=null}else{this.head=r;r.data=s.slice(a)}break}++n}this.length-=n;return t}},{key:o,value:function value(e,t){return a(this,_objectSpread(_objectSpread({},t),{},{depth:0,customInspect:false}))}}]);return BufferList}()},8980:e=>{function destroy(e,t){var r=this;var n=this._readableState&&this._readableState.destroyed;var i=this._writableState&&this._writableState.destroyed;if(n||i){if(t){t(e)}else if(e){if(!this._writableState){process.nextTick(emitErrorNT,this,e)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;process.nextTick(emitErrorNT,this,e)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(e||null,(function(e){if(!t&&e){if(!r._writableState){process.nextTick(emitErrorAndCloseNT,r,e)}else if(!r._writableState.errorEmitted){r._writableState.errorEmitted=true;process.nextTick(emitErrorAndCloseNT,r,e)}else{process.nextTick(emitCloseNT,r)}}else if(t){process.nextTick(emitCloseNT,r);t(e)}else{process.nextTick(emitCloseNT,r)}}));return this}function emitErrorAndCloseNT(e,t){emitErrorNT(e,t);emitCloseNT(e)}function emitCloseNT(e){if(e._writableState&&!e._writableState.emitClose)return;if(e._readableState&&!e._readableState.emitClose)return;e.emit("close")}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(e,t){e.emit("error",t)}function errorOrDestroy(e,t){var r=e._readableState;var n=e._writableState;if(r&&r.autoDestroy||n&&n.autoDestroy)e.destroy(t);else e.emit("error",t)}e.exports={destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy}},1077:(e,t,r)=>{var n=r(7200).q.ERR_STREAM_PREMATURE_CLOSE;function once(e){var t=false;return function(){if(t)return;t=true;for(var r=arguments.length,n=new Array(r),i=0;i{function asyncGeneratorStep(e,t,r,n,i,s,a){try{var o=e[s](a);var l=o.value}catch(e){r(e);return}if(o.done){t(l)}else{Promise.resolve(l).then(n,i)}}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var s=e.apply(t,r);function _next(e){asyncGeneratorStep(s,n,i,_next,_throw,"next",e)}function _throw(e){asyncGeneratorStep(s,n,i,_next,_throw,"throw",e)}_next(undefined)}))}}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t{var n;function once(e){var t=false;return function(){if(t)return;t=true;e.apply(void 0,arguments)}}var i=r(7200).q,s=i.ERR_MISSING_ARGS,a=i.ERR_STREAM_DESTROYED;function noop(e){if(e)throw e}function isRequest(e){return e.setHeader&&typeof e.abort==="function"}function destroyer(e,t,i,s){s=once(s);var o=false;e.on("close",(function(){o=true}));if(n===undefined)n=r(1077);n(e,{readable:t,writable:i},(function(e){if(e)return s(e);o=true;s()}));var l=false;return function(t){if(o)return;if(l)return;l=true;if(isRequest(e))return e.abort();if(typeof e.destroy==="function")return e.destroy();s(t||new a("pipe"))}}function call(e){e()}function pipe(e,t){return e.pipe(t)}function popCallback(e){if(!e.length)return noop;if(typeof e[e.length-1]!=="function")return noop;return e.pop()}function pipeline(){for(var e=arguments.length,t=new Array(e),r=0;r0;return destroyer(e,s,o,(function(e){if(!i)i=e;if(e)a.forEach(call);if(s)return;a.forEach(call);n(i)}))}));return t.reduce(pipe)}e.exports=pipeline},7249:(e,t,r)=>{var n=r(7200).q.ERR_INVALID_OPT_VALUE;function highWaterMarkFrom(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function getHighWaterMark(e,t,r,i){var s=highWaterMarkFrom(t,i,r);if(s!=null){if(!(isFinite(s)&&Math.floor(s)===s)||s<0){var a=i?r:"highWaterMark";throw new n(a,s)}return Math.floor(s)}return e.objectMode?16:16*1024}e.exports={getHighWaterMark:getHighWaterMark}},8928:(e,t,r)=>{e.exports=r(2781)},7201:(e,t,r)=>{var n=r(2781);if(process.env.READABLE_STREAM==="disable"&&n){e.exports=n.Readable;Object.assign(e.exports,n);e.exports.Stream=n}else{t=e.exports=r(3261);t.Stream=n||t;t.Readable=t;t.Writable=r(8571);t.Duplex=r(2307);t.Transform=r(1026);t.PassThrough=r(7586);t.finished=r(1077);t.pipeline=r(4760)}},4300:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("buffer")},9523:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("dns")},2361:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("events")},7147:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs")},3685:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http")},5158:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("http2")},5687:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("https")},1808:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("net")},2037:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("os")},1017:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("path")},7282:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("process")},2781:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream")},1576:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder")},4404:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls")},6224:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("tty")},7310:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("url")},3837:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("util")},9796:e=>{e.exports=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("zlib")},2694:e=>{var t=function(e){"use strict";Object.defineProperty(e,"__esModule",{value:true});e.default=void 0; +/** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function Long(e,t,r){this.low=e|0;this.high=t|0;this.unsigned=!!r}Long.prototype.__isLong__;Object.defineProperty(Long.prototype,"__isLong__",{value:true});function isLong(e){return(e&&e["__isLong__"])===true}function ctz32(e){var t=Math.clz32(e&-e);return e?31-t:t}Long.isLong=isLong;var r={};var n={};function fromInt(e,t){var i,s,a;if(t){e>>>=0;if(a=0<=e&&e<256){s=n[e];if(s)return s}i=fromBits(e,0,true);if(a)n[e]=i;return i}else{e|=0;if(a=-128<=e&&e<128){s=r[e];if(s)return s}i=fromBits(e,e<0?-1:0,false);if(a)r[e]=i;return i}}Long.fromInt=fromInt;function fromNumber(e,t){if(isNaN(e))return t?f:d;if(t){if(e<0)return f;if(e>=l)return v}else{if(e<=-c)return y;if(e+1>=c)return m}if(e<0)return fromNumber(-e,t).neg();return fromBits(e%o|0,e/o|0,t)}Long.fromNumber=fromNumber;function fromBits(e,t,r){return new Long(e,t,r)}Long.fromBits=fromBits;var i=Math.pow;function fromString(e,t,r){if(e.length===0)throw Error("empty string");if(typeof t==="number"){r=t;t=false}else{t=!!t}if(e==="NaN"||e==="Infinity"||e==="+Infinity"||e==="-Infinity")return t?f:d;r=r||10;if(r<2||360)throw Error("interior hyphen");else if(n===0){return fromString(e.substring(1),t,r).neg()}var s=fromNumber(i(r,8));var a=d;for(var o=0;o>>0:this.low};b.toNumber=function toNumber(){if(this.unsigned)return(this.high>>>0)*o+(this.low>>>0);return this.high*o+(this.low>>>0)};b.toString=function toString(e){e=e||10;if(e<2||36>>0,u=c.toString(e);a=l;if(a.isZero())return u+o;else{while(u.length<6)u="0"+u;o=""+u+o}}};b.getHighBits=function getHighBits(){return this.high};b.getHighBitsUnsigned=function getHighBitsUnsigned(){return this.high>>>0};b.getLowBits=function getLowBits(){return this.low};b.getLowBitsUnsigned=function getLowBitsUnsigned(){return this.low>>>0};b.getNumBitsAbs=function getNumBitsAbs(){if(this.isNegative())return this.eq(y)?64:this.neg().getNumBitsAbs();var e=this.high!=0?this.high:this.low;for(var t=31;t>0;t--)if((e&1<=0};b.isOdd=function isOdd(){return(this.low&1)===1};b.isEven=function isEven(){return(this.low&1)===0};b.equals=function equals(e){if(!isLong(e))e=fromValue(e);if(this.unsigned!==e.unsigned&&this.high>>>31===1&&e.high>>>31===1)return false;return this.high===e.high&&this.low===e.low};b.eq=b.equals;b.notEquals=function notEquals(e){return!this.eq(e)};b.neq=b.notEquals;b.ne=b.notEquals;b.lessThan=function lessThan(e){return this.comp(e)<0};b.lt=b.lessThan;b.lessThanOrEqual=function lessThanOrEqual(e){return this.comp(e)<=0};b.lte=b.lessThanOrEqual;b.le=b.lessThanOrEqual;b.greaterThan=function greaterThan(e){return this.comp(e)>0};b.gt=b.greaterThan;b.greaterThanOrEqual=function greaterThanOrEqual(e){return this.comp(e)>=0};b.gte=b.greaterThanOrEqual;b.ge=b.greaterThanOrEqual;b.compare=function compare(e){if(!isLong(e))e=fromValue(e);if(this.eq(e))return 0;var t=this.isNegative(),r=e.isNegative();if(t&&!r)return-1;if(!t&&r)return 1;if(!this.unsigned)return this.sub(e).isNegative()?-1:1;return e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1};b.comp=b.compare;b.negate=function negate(){if(!this.unsigned&&this.eq(y))return y;return this.not().add(h)};b.neg=b.negate;b.add=function add(e){if(!isLong(e))e=fromValue(e);var t=this.high>>>16;var r=this.high&65535;var n=this.low>>>16;var i=this.low&65535;var s=e.high>>>16;var a=e.high&65535;var o=e.low>>>16;var l=e.low&65535;var c=0,u=0,d=0,f=0;f+=i+l;d+=f>>>16;f&=65535;d+=n+o;u+=d>>>16;d&=65535;u+=r+a;c+=u>>>16;u&=65535;c+=t+s;c&=65535;return fromBits(d<<16|f,c<<16|u,this.unsigned)};b.subtract=function subtract(e){if(!isLong(e))e=fromValue(e);return this.add(e.neg())};b.sub=b.subtract;b.multiply=function multiply(e){if(this.isZero())return this;if(!isLong(e))e=fromValue(e);if(t){var r=t["mul"](this.low,this.high,e.low,e.high);return fromBits(r,t["get_high"](),this.unsigned)}if(e.isZero())return this.unsigned?f:d;if(this.eq(y))return e.isOdd()?y:d;if(e.eq(y))return this.isOdd()?y:d;if(this.isNegative()){if(e.isNegative())return this.neg().mul(e.neg());else return this.neg().mul(e).neg()}else if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(u)&&e.lt(u))return fromNumber(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16;var i=this.high&65535;var s=this.low>>>16;var a=this.low&65535;var o=e.high>>>16;var l=e.high&65535;var c=e.low>>>16;var h=e.low&65535;var p=0,g=0,m=0,v=0;v+=a*h;m+=v>>>16;v&=65535;m+=s*h;g+=m>>>16;m&=65535;m+=a*c;g+=m>>>16;m&=65535;g+=i*h;p+=g>>>16;g&=65535;g+=s*c;p+=g>>>16;g&=65535;g+=a*l;p+=g>>>16;g&=65535;p+=n*h+i*c+s*l+a*o;p&=65535;return fromBits(m<<16|v,p<<16|g,this.unsigned)};b.mul=b.multiply;b.divide=function divide(e){if(!isLong(e))e=fromValue(e);if(e.isZero())throw Error("division by zero");if(t){if(!this.unsigned&&this.high===-2147483648&&e.low===-1&&e.high===-1){return this}var r=(this.unsigned?t["div_u"]:t["div_s"])(this.low,this.high,e.low,e.high);return fromBits(r,t["get_high"](),this.unsigned)}if(this.isZero())return this.unsigned?f:d;var n,s,a;if(!this.unsigned){if(this.eq(y)){if(e.eq(h)||e.eq(g))return y;else if(e.eq(y))return h;else{var o=this.shr(1);n=o.div(e).shl(1);if(n.eq(d)){return e.isNegative()?h:g}else{s=this.sub(e.mul(n));a=n.add(s.div(e));return a}}}else if(e.eq(y))return this.unsigned?f:d;if(this.isNegative()){if(e.isNegative())return this.neg().div(e.neg());return this.neg().div(e).neg()}else if(e.isNegative())return this.div(e.neg()).neg();a=d}else{if(!e.unsigned)e=e.toUnsigned();if(e.gt(this))return f;if(e.gt(this.shru(1)))return p;a=f}s=this;while(s.gte(e)){n=Math.max(1,Math.floor(s.toNumber()/e.toNumber()));var l=Math.ceil(Math.log(n)/Math.LN2),c=l<=48?1:i(2,l-48),u=fromNumber(n),m=u.mul(e);while(m.isNegative()||m.gt(s)){n-=c;u=fromNumber(n,this.unsigned);m=u.mul(e)}if(u.isZero())u=h;a=a.add(u);s=s.sub(m)}return a};b.div=b.divide;b.modulo=function modulo(e){if(!isLong(e))e=fromValue(e);if(t){var r=(this.unsigned?t["rem_u"]:t["rem_s"])(this.low,this.high,e.low,e.high);return fromBits(r,t["get_high"](),this.unsigned)}return this.sub(this.div(e).mul(e))};b.mod=b.modulo;b.rem=b.modulo;b.not=function not(){return fromBits(~this.low,~this.high,this.unsigned)};b.countLeadingZeros=function countLeadingZeros(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32};b.clz=b.countLeadingZeros;b.countTrailingZeros=function countTrailingZeros(){return this.low?ctz32(this.low):ctz32(this.high)+32};b.ctz=b.countTrailingZeros;b.and=function and(e){if(!isLong(e))e=fromValue(e);return fromBits(this.low&e.low,this.high&e.high,this.unsigned)};b.or=function or(e){if(!isLong(e))e=fromValue(e);return fromBits(this.low|e.low,this.high|e.high,this.unsigned)};b.xor=function xor(e){if(!isLong(e))e=fromValue(e);return fromBits(this.low^e.low,this.high^e.high,this.unsigned)};b.shiftLeft=function shiftLeft(e){if(isLong(e))e=e.toInt();if((e&=63)===0)return this;else if(e<32)return fromBits(this.low<>>32-e,this.unsigned);else return fromBits(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned);else return fromBits(this.high>>e-32,this.high>=0?0:-1,this.unsigned)};b.shr=b.shiftRight;b.shiftRightUnsigned=function shiftRightUnsigned(e){if(isLong(e))e=e.toInt();if((e&=63)===0)return this;if(e<32)return fromBits(this.low>>>e|this.high<<32-e,this.high>>>e,this.unsigned);if(e===32)return fromBits(this.high,0,this.unsigned);return fromBits(this.high>>>e-32,0,this.unsigned)};b.shru=b.shiftRightUnsigned;b.shr_u=b.shiftRightUnsigned;b.rotateLeft=function rotateLeft(e){var t;if(isLong(e))e=e.toInt();if((e&=63)===0)return this;if(e===32)return fromBits(this.high,this.low,this.unsigned);if(e<32){t=32-e;return fromBits(this.low<>>t,this.high<>>t,this.unsigned)}e-=32;t=32-e;return fromBits(this.high<>>t,this.low<>>t,this.unsigned)};b.rotl=b.rotateLeft;b.rotateRight=function rotateRight(e){var t;if(isLong(e))e=e.toInt();if((e&=63)===0)return this;if(e===32)return fromBits(this.high,this.low,this.unsigned);if(e<32){t=32-e;return fromBits(this.high<>>e,this.low<>>e,this.unsigned)}e-=32;t=32-e;return fromBits(this.low<>>e,this.high<>>e,this.unsigned)};b.rotr=b.rotateRight;b.toSigned=function toSigned(){if(!this.unsigned)return this;return fromBits(this.low,this.high,false)};b.toUnsigned=function toUnsigned(){if(this.unsigned)return this;return fromBits(this.low,this.high,true)};b.toBytes=function toBytes(e){return e?this.toBytesLE():this.toBytesBE()};b.toBytesLE=function toBytesLE(){var e=this.high,t=this.low;return[t&255,t>>>8&255,t>>>16&255,t>>>24,e&255,e>>>8&255,e>>>16&255,e>>>24]};b.toBytesBE=function toBytesBE(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,e&255,t>>>24,t>>>16&255,t>>>8&255,t&255]};Long.fromBytes=function fromBytes(e,t,r){return r?Long.fromBytesLE(e,t):Long.fromBytesBE(e,t)};Long.fromBytesLE=function fromBytesLE(e,t){return new Long(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)};Long.fromBytesBE=function fromBytesBE(e,t){return new Long(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)};var S=Long;e.default=S;return"default"in e?e.default:e}({});if(typeof define==="function"&&define.amd)define([],(function(){return t}));else if(true)e.exports=t},6569:e=>{e.exports={i8:"1.10.1"}},4784:e=>{e.exports=JSON.parse('{"nested":{"google":{"nested":{"protobuf":{"nested":{"Api":{"fields":{"name":{"type":"string","id":1},"methods":{"rule":"repeated","type":"Method","id":2},"options":{"rule":"repeated","type":"Option","id":3},"version":{"type":"string","id":4},"sourceContext":{"type":"SourceContext","id":5},"mixins":{"rule":"repeated","type":"Mixin","id":6},"syntax":{"type":"Syntax","id":7}}},"Method":{"fields":{"name":{"type":"string","id":1},"requestTypeUrl":{"type":"string","id":2},"requestStreaming":{"type":"bool","id":3},"responseTypeUrl":{"type":"string","id":4},"responseStreaming":{"type":"bool","id":5},"options":{"rule":"repeated","type":"Option","id":6},"syntax":{"type":"Syntax","id":7}}},"Mixin":{"fields":{"name":{"type":"string","id":1},"root":{"type":"string","id":2}}},"SourceContext":{"fields":{"fileName":{"type":"string","id":1}}},"Option":{"fields":{"name":{"type":"string","id":1},"value":{"type":"Any","id":2}}},"Syntax":{"values":{"SYNTAX_PROTO2":0,"SYNTAX_PROTO3":1}}}}}}}}')},3571:e=>{e.exports=JSON.parse('{"nested":{"google":{"nested":{"protobuf":{"nested":{"FileDescriptorSet":{"fields":{"file":{"rule":"repeated","type":"FileDescriptorProto","id":1}}},"FileDescriptorProto":{"fields":{"name":{"type":"string","id":1},"package":{"type":"string","id":2},"dependency":{"rule":"repeated","type":"string","id":3},"publicDependency":{"rule":"repeated","type":"int32","id":10,"options":{"packed":false}},"weakDependency":{"rule":"repeated","type":"int32","id":11,"options":{"packed":false}},"messageType":{"rule":"repeated","type":"DescriptorProto","id":4},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":5},"service":{"rule":"repeated","type":"ServiceDescriptorProto","id":6},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":7},"options":{"type":"FileOptions","id":8},"sourceCodeInfo":{"type":"SourceCodeInfo","id":9},"syntax":{"type":"string","id":12}}},"DescriptorProto":{"fields":{"name":{"type":"string","id":1},"field":{"rule":"repeated","type":"FieldDescriptorProto","id":2},"extension":{"rule":"repeated","type":"FieldDescriptorProto","id":6},"nestedType":{"rule":"repeated","type":"DescriptorProto","id":3},"enumType":{"rule":"repeated","type":"EnumDescriptorProto","id":4},"extensionRange":{"rule":"repeated","type":"ExtensionRange","id":5},"oneofDecl":{"rule":"repeated","type":"OneofDescriptorProto","id":8},"options":{"type":"MessageOptions","id":7},"reservedRange":{"rule":"repeated","type":"ReservedRange","id":9},"reservedName":{"rule":"repeated","type":"string","id":10}},"nested":{"ExtensionRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}},"ReservedRange":{"fields":{"start":{"type":"int32","id":1},"end":{"type":"int32","id":2}}}}},"FieldDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":3},"label":{"type":"Label","id":4},"type":{"type":"Type","id":5},"typeName":{"type":"string","id":6},"extendee":{"type":"string","id":2},"defaultValue":{"type":"string","id":7},"oneofIndex":{"type":"int32","id":9},"jsonName":{"type":"string","id":10},"options":{"type":"FieldOptions","id":8}},"nested":{"Type":{"values":{"TYPE_DOUBLE":1,"TYPE_FLOAT":2,"TYPE_INT64":3,"TYPE_UINT64":4,"TYPE_INT32":5,"TYPE_FIXED64":6,"TYPE_FIXED32":7,"TYPE_BOOL":8,"TYPE_STRING":9,"TYPE_GROUP":10,"TYPE_MESSAGE":11,"TYPE_BYTES":12,"TYPE_UINT32":13,"TYPE_ENUM":14,"TYPE_SFIXED32":15,"TYPE_SFIXED64":16,"TYPE_SINT32":17,"TYPE_SINT64":18}},"Label":{"values":{"LABEL_OPTIONAL":1,"LABEL_REQUIRED":2,"LABEL_REPEATED":3}}}},"OneofDescriptorProto":{"fields":{"name":{"type":"string","id":1},"options":{"type":"OneofOptions","id":2}}},"EnumDescriptorProto":{"fields":{"name":{"type":"string","id":1},"value":{"rule":"repeated","type":"EnumValueDescriptorProto","id":2},"options":{"type":"EnumOptions","id":3}}},"EnumValueDescriptorProto":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":2},"options":{"type":"EnumValueOptions","id":3}}},"ServiceDescriptorProto":{"fields":{"name":{"type":"string","id":1},"method":{"rule":"repeated","type":"MethodDescriptorProto","id":2},"options":{"type":"ServiceOptions","id":3}}},"MethodDescriptorProto":{"fields":{"name":{"type":"string","id":1},"inputType":{"type":"string","id":2},"outputType":{"type":"string","id":3},"options":{"type":"MethodOptions","id":4},"clientStreaming":{"type":"bool","id":5},"serverStreaming":{"type":"bool","id":6}}},"FileOptions":{"fields":{"javaPackage":{"type":"string","id":1},"javaOuterClassname":{"type":"string","id":8},"javaMultipleFiles":{"type":"bool","id":10},"javaGenerateEqualsAndHash":{"type":"bool","id":20,"options":{"deprecated":true}},"javaStringCheckUtf8":{"type":"bool","id":27},"optimizeFor":{"type":"OptimizeMode","id":9,"options":{"default":"SPEED"}},"goPackage":{"type":"string","id":11},"ccGenericServices":{"type":"bool","id":16},"javaGenericServices":{"type":"bool","id":17},"pyGenericServices":{"type":"bool","id":18},"deprecated":{"type":"bool","id":23},"ccEnableArenas":{"type":"bool","id":31},"objcClassPrefix":{"type":"string","id":36},"csharpNamespace":{"type":"string","id":37},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]],"reserved":[[38,38]],"nested":{"OptimizeMode":{"values":{"SPEED":1,"CODE_SIZE":2,"LITE_RUNTIME":3}}}},"MessageOptions":{"fields":{"messageSetWireFormat":{"type":"bool","id":1},"noStandardDescriptorAccessor":{"type":"bool","id":2},"deprecated":{"type":"bool","id":3},"mapEntry":{"type":"bool","id":7},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]],"reserved":[[8,8]]},"FieldOptions":{"fields":{"ctype":{"type":"CType","id":1,"options":{"default":"STRING"}},"packed":{"type":"bool","id":2},"jstype":{"type":"JSType","id":6,"options":{"default":"JS_NORMAL"}},"lazy":{"type":"bool","id":5},"deprecated":{"type":"bool","id":3},"weak":{"type":"bool","id":10},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]],"reserved":[[4,4]],"nested":{"CType":{"values":{"STRING":0,"CORD":1,"STRING_PIECE":2}},"JSType":{"values":{"JS_NORMAL":0,"JS_STRING":1,"JS_NUMBER":2}}}},"OneofOptions":{"fields":{"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]]},"EnumOptions":{"fields":{"allowAlias":{"type":"bool","id":2},"deprecated":{"type":"bool","id":3},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]]},"EnumValueOptions":{"fields":{"deprecated":{"type":"bool","id":1},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]]},"ServiceOptions":{"fields":{"deprecated":{"type":"bool","id":33},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]]},"MethodOptions":{"fields":{"deprecated":{"type":"bool","id":33},"uninterpretedOption":{"rule":"repeated","type":"UninterpretedOption","id":999}},"extensions":[[1000,536870911]]},"UninterpretedOption":{"fields":{"name":{"rule":"repeated","type":"NamePart","id":2},"identifierValue":{"type":"string","id":3},"positiveIntValue":{"type":"uint64","id":4},"negativeIntValue":{"type":"int64","id":5},"doubleValue":{"type":"double","id":6},"stringValue":{"type":"bytes","id":7},"aggregateValue":{"type":"string","id":8}},"nested":{"NamePart":{"fields":{"namePart":{"rule":"required","type":"string","id":1},"isExtension":{"rule":"required","type":"bool","id":2}}}}},"SourceCodeInfo":{"fields":{"location":{"rule":"repeated","type":"Location","id":1}},"nested":{"Location":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"span":{"rule":"repeated","type":"int32","id":2},"leadingComments":{"type":"string","id":3},"trailingComments":{"type":"string","id":4},"leadingDetachedComments":{"rule":"repeated","type":"string","id":6}}}}},"GeneratedCodeInfo":{"fields":{"annotation":{"rule":"repeated","type":"Annotation","id":1}},"nested":{"Annotation":{"fields":{"path":{"rule":"repeated","type":"int32","id":1},"sourceFile":{"type":"string","id":2},"begin":{"type":"int32","id":3},"end":{"type":"int32","id":4}}}}}}}}}}}')},3342:e=>{e.exports=JSON.parse('{"nested":{"google":{"nested":{"protobuf":{"nested":{"SourceContext":{"fields":{"fileName":{"type":"string","id":1}}}}}}}}}')},8783:e=>{e.exports=JSON.parse('{"nested":{"google":{"nested":{"protobuf":{"nested":{"Type":{"fields":{"name":{"type":"string","id":1},"fields":{"rule":"repeated","type":"Field","id":2},"oneofs":{"rule":"repeated","type":"string","id":3},"options":{"rule":"repeated","type":"Option","id":4},"sourceContext":{"type":"SourceContext","id":5},"syntax":{"type":"Syntax","id":6}}},"Field":{"fields":{"kind":{"type":"Kind","id":1},"cardinality":{"type":"Cardinality","id":2},"number":{"type":"int32","id":3},"name":{"type":"string","id":4},"typeUrl":{"type":"string","id":6},"oneofIndex":{"type":"int32","id":7},"packed":{"type":"bool","id":8},"options":{"rule":"repeated","type":"Option","id":9},"jsonName":{"type":"string","id":10},"defaultValue":{"type":"string","id":11}},"nested":{"Kind":{"values":{"TYPE_UNKNOWN":0,"TYPE_DOUBLE":1,"TYPE_FLOAT":2,"TYPE_INT64":3,"TYPE_UINT64":4,"TYPE_INT32":5,"TYPE_FIXED64":6,"TYPE_FIXED32":7,"TYPE_BOOL":8,"TYPE_STRING":9,"TYPE_GROUP":10,"TYPE_MESSAGE":11,"TYPE_BYTES":12,"TYPE_UINT32":13,"TYPE_ENUM":14,"TYPE_SFIXED32":15,"TYPE_SFIXED64":16,"TYPE_SINT32":17,"TYPE_SINT64":18}},"Cardinality":{"values":{"CARDINALITY_UNKNOWN":0,"CARDINALITY_OPTIONAL":1,"CARDINALITY_REQUIRED":2,"CARDINALITY_REPEATED":3}}}},"Enum":{"fields":{"name":{"type":"string","id":1},"enumvalue":{"rule":"repeated","type":"EnumValue","id":2},"options":{"rule":"repeated","type":"Option","id":3},"sourceContext":{"type":"SourceContext","id":4},"syntax":{"type":"Syntax","id":5}}},"EnumValue":{"fields":{"name":{"type":"string","id":1},"number":{"type":"int32","id":2},"options":{"rule":"repeated","type":"Option","id":3}}},"Option":{"fields":{"name":{"type":"string","id":1},"value":{"type":"Any","id":2}}},"Syntax":{"values":{"SYNTAX_PROTO2":0,"SYNTAX_PROTO3":1}},"Any":{"fields":{"type_url":{"type":"string","id":1},"value":{"type":"bytes","id":2}}},"SourceContext":{"fields":{"fileName":{"type":"string","id":1}}}}}}}}}')},2561:e=>{e.exports={version:"3.12.0"}}};var __webpack_module_cache__={};function __nccwpck_require__(e){var t=__webpack_module_cache__[e];if(t!==undefined){return t.exports}var r=__webpack_module_cache__[e]={exports:{}};var n=true;try{__webpack_modules__[e].call(r.exports,r,r.exports,__nccwpck_require__);n=false}finally{if(n)delete __webpack_module_cache__[e]}return r.exports}(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=new URL(".",import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";var __webpack_exports__={};(()=>{__nccwpck_require__.d(__webpack_exports__,{zU:()=>HMAC,hi:()=>NewClientInterceptor,To:()=>NewServerInterceptor,CY:()=>initLogger});var e=__nccwpck_require__(4158);const t=10;const wrapAnsi16=(e=0)=>t=>`[${t+e}m`;const wrapAnsi256=(e=0)=>t=>`[${38+e};5;${t}m`;const wrapAnsi16m=(e=0)=>(t,r,n)=>`[${38+e};2;${t};${r};${n}m`;const r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],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],gray:[90,39],grey:[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],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};const n=Object.keys(r.modifier);const i=Object.keys(r.color);const s=Object.keys(r.bgColor);const a=[...i,...s];function assembleStyles(){const e=new Map;for(const[t,n]of Object.entries(r)){for(const[t,i]of Object.entries(n)){r[t]={open:`[${i[0]}m`,close:`[${i[1]}m`};n[t]=r[t];e.set(i[0],i[1])}Object.defineProperty(r,t,{value:n,enumerable:false})}Object.defineProperty(r,"codes",{value:e,enumerable:false});r.color.close="";r.bgColor.close="";r.color.ansi=wrapAnsi16();r.color.ansi256=wrapAnsi256();r.color.ansi16m=wrapAnsi16m();r.bgColor.ansi=wrapAnsi16(t);r.bgColor.ansi256=wrapAnsi256(t);r.bgColor.ansi16m=wrapAnsi16m(t);Object.defineProperties(r,{rgbToAnsi256:{value(e,t,r){if(e===t&&t===r){if(e<8){return 16}if(e>248){return 231}return Math.round((e-8)/247*24)+232}return 16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5)},enumerable:false},hexToRgb:{value(e){const t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t){return[0,0,0]}let[r]=t;if(r.length===3){r=[...r].map((e=>e+e)).join("")}const n=Number.parseInt(r,16);return[n>>16&255,n>>8&255,n&255]},enumerable:false},hexToAnsi256:{value:e=>r.rgbToAnsi256(...r.hexToRgb(e)),enumerable:false},ansi256ToAnsi:{value(e){if(e<8){return 30+e}if(e<16){return 90+(e-8)}let t;let r;let n;if(e>=232){t=((e-232)*10+8)/255;r=t;n=t}else{e-=16;const i=e%36;t=Math.floor(e/36)/5;r=Math.floor(i/6)/5;n=i%6/5}const i=Math.max(t,r,n)*2;if(i===0){return 30}let s=30+(Math.round(n)<<2|Math.round(r)<<1|Math.round(t));if(i===2){s+=60}return s},enumerable:false},rgbToAnsi:{value:(e,t,n)=>r.ansi256ToAnsi(r.rgbToAnsi256(e,t,n)),enumerable:false},hexToAnsi:{value:e=>r.ansi256ToAnsi(r.hexToAnsi256(e)),enumerable:false}});return r}const o=assembleStyles();const l=o;const c=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:process");const u=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:os");const d=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tty");function hasFlag(e,t=(globalThis.Deno?globalThis.Deno.args:c.argv)){const r=e.startsWith("-")?"":e.length===1?"-":"--";const n=t.indexOf(r+e);const i=t.indexOf("--");return n!==-1&&(i===-1||n=2,has16m:e>=3}}function _supportsColor(e,{streamIsTTY:t,sniffFlags:r=true}={}){const n=envForceColor();if(n!==undefined){h=n}const i=r?h:n;if(i===0){return 0}if(r){if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor")){return 3}if(hasFlag("color=256")){return 2}}if("TF_BUILD"in f&&"AGENT_NAME"in f){return 1}if(e&&!t&&i===undefined){return 0}const s=i||0;if(f.TERM==="dumb"){return s}if(c.platform==="win32"){const e=u.release().split(".");if(Number(e[0])>=10&&Number(e[2])>=10586){return Number(e[2])>=14931?3:2}return 1}if("CI"in f){if("GITHUB_ACTIONS"in f||"GITEA_ACTIONS"in f){return 3}if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some((e=>e in f))||f.CI_NAME==="codeship"){return 1}return s}if("TEAMCITY_VERSION"in f){return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(f.TEAMCITY_VERSION)?1:0}if(f.COLORTERM==="truecolor"){return 3}if(f.TERM==="xterm-kitty"){return 3}if("TERM_PROGRAM"in f){const e=Number.parseInt((f.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(f.TERM_PROGRAM){case"iTerm.app":{return e>=3?3:2}case"Apple_Terminal":{return 2}}}if(/-256(color)?$/i.test(f.TERM)){return 2}if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(f.TERM)){return 1}if("COLORTERM"in f){return 1}return s}function createSupportsColor(e,t={}){const r=_supportsColor(e,{streamIsTTY:e&&e.isTTY,...t});return translateLevel(r)}const p={stdout:createSupportsColor({isTTY:d.isatty(1)}),stderr:createSupportsColor({isTTY:d.isatty(2)})};const g=p;function stringReplaceAll(e,t,r){let n=e.indexOf(t);if(n===-1){return e}const i=t.length;let s=0;let a="";do{a+=e.slice(s,n)+t+r;s=n+i;n=e.indexOf(t,s)}while(n!==-1);a+=e.slice(s);return a}function stringEncaseCRLFWithFirstIndex(e,t,r,n){let i=0;let s="";do{const a=e[n-1]==="\r";s+=e.slice(i,a?n-1:n)+t+(a?"\r\n":"\n")+r;i=n+1;n=e.indexOf("\n",i)}while(n!==-1);s+=e.slice(i);return s}const{stdout:m,stderr:v}=g;const y=Symbol("GENERATOR");const b=Symbol("STYLER");const S=Symbol("IS_EMPTY");const _=["ansi","ansi","ansi256","ansi16m"];const w=Object.create(null);const applyOptions=(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 r=m?m.level:0;e.level=t.level===undefined?r:t.level};class Chalk{constructor(e){return chalkFactory(e)}}const chalkFactory=e=>{const chalk=(...e)=>e.join(" ");applyOptions(chalk,e);Object.setPrototypeOf(chalk,createChalk.prototype);return chalk};function createChalk(e){return chalkFactory(e)}Object.setPrototypeOf(createChalk.prototype,Function.prototype);for(const[e,t]of Object.entries(l)){w[e]={get(){const r=createBuilder(this,createStyler(t.open,t.close,this[b]),this[S]);Object.defineProperty(this,e,{value:r});return r}}}w.visible={get(){const e=createBuilder(this,this[b],true);Object.defineProperty(this,"visible",{value:e});return e}};const getModelAnsi=(e,t,r,...n)=>{if(e==="rgb"){if(t==="ansi16m"){return l[r].ansi16m(...n)}if(t==="ansi256"){return l[r].ansi256(l.rgbToAnsi256(...n))}return l[r].ansi(l.rgbToAnsi(...n))}if(e==="hex"){return getModelAnsi("rgb",t,r,...l.hexToRgb(...n))}return l[r][e](...n)};const C=["rgb","hex","ansi256"];for(const e of C){w[e]={get(){const{level:t}=this;return function(...r){const n=createStyler(getModelAnsi(e,_[t],"color",...r),l.color.close,this[b]);return createBuilder(this,n,this[S])}}};const t="bg"+e[0].toUpperCase()+e.slice(1);w[t]={get(){const{level:t}=this;return function(...r){const n=createStyler(getModelAnsi(e,_[t],"bgColor",...r),l.bgColor.close,this[b]);return createBuilder(this,n,this[S])}}}}const E=Object.defineProperties((()=>{}),{...w,level:{enumerable:true,get(){return this[y].level},set(e){this[y].level=e}}});const createStyler=(e,t,r)=>{let n;let i;if(r===undefined){n=e;i=t}else{n=r.openAll+e;i=t+r.closeAll}return{open:e,close:t,openAll:n,closeAll:i,parent:r}};const createBuilder=(e,t,r)=>{const builder=(...e)=>applyStyle(builder,e.length===1?""+e[0]:e.join(" "));Object.setPrototypeOf(builder,E);builder[y]=e;builder[b]=t;builder[S]=r;return builder};const applyStyle=(e,t)=>{if(e.level<=0||!t){return e[S]?"":t}let r=e[b];if(r===undefined){return t}const{openAll:n,closeAll:i}=r;if(t.includes("")){while(r!==undefined){t=stringReplaceAll(t,r.close,r.open);r=r.parent}}const s=t.indexOf("\n");if(s!==-1){t=stringEncaseCRLFWithFirstIndex(t,i,n,s)}return n+t+i};Object.defineProperties(createChalk.prototype,w);const T=createChalk();const R=createChalk({level:v?v.level:0});const k=T;const customSimpleFormat=t=>e.format.printf((({level:e,label:r,timestamp:n,message:i})=>{const s=formatLevel(e);return`${t(`[${r}]`,k.green)} ${n} ${t(s,getLevelColor(e))} ${i}`}));const formatLevel=e=>{switch(e){case"info":return"INF";case"warn":return"WRN";case"error":return"ERR";case"debug":return"DEBUG";default:return e.toUpperCase()}};const getLevelColor=e=>{switch(e){case"info":return k.green;case"warn":return k.yellow;case"error":return k.red;case"debug":return k.blue;default:return k.white}};const initLogger=()=>{const colorizeText=(e,t)=>t(e);return(0,e.createLogger)({format:e.format.combine(e.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),e.format.label({label:"ts-grpc-hmac"}),customSimpleFormat(colorizeText)),transports:[new e.transports.Console]})};var O=__nccwpck_require__(7025);var M=__nccwpck_require__(4300);const x=__WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto");const A=(new O.yi).withCode(O.i7.UNAUTHENTICATED).withDetails("Invalid x-hmac-key-id").build();const P=(new O.yi).withCode(O.i7.UNAUTHENTICATED).withDetails("Mismatched x-hmac-signature").build();const N=(new O.yi).withCode(O.i7.UNAUTHENTICATED).withDetails("Missing x-hmac-signature").build();const I=(new O.yi).withCode(O.i7.UNAUTHENTICATED).withDetails("Missing metadata").build();const D=(new O.yi).withCode(O.i7.INTERNAL).withDetails("Internal error").build();const L=(new O.yi).withCode(O.i7.UNAUTHENTICATED).withDetails("Invalid metadata").build();const j=(new O.yi).withCode(O.i7.UNAUTHENTICATED).withDetails("Unauthenticated").build();const isEmptyObject=e=>Object.keys(e).length===0&&e.constructor===Object;const B=initLogger();class HMAC{constructor(){}buildMessage=(e,t)=>{const r="method=";const n="request=";if(!e){console.warn("No request provided, using only method name as message");return[r+t,undefined]}let i;if(typeof e==="string"){i=e}else if(typeof e==="object"){i=isEmptyObject(e)?"":JSON.stringify(e,null,0)}else{return["",new Error("Invalid request type")]}if(i.length===0){console.warn("Empty request, using only method name as message");return[r+t,undefined]}const s=`${n}${i};${r}${t}`;return[s,undefined]};generateSignature=(e,t)=>{B.debug(`generating signature for message: ${t}`);const r=(0,x.createHmac)("sha512-256",e);r.update(t);const n=r.digest("base64");B.debug(`signature generated: ${n}`);return[n,undefined]};verifySignature=e=>(t,r,n)=>{try{B.debug(`verifying signature for message: ${t}`);const i=e(r);B.debug("secret: ",i);if(i===undefined){B.error("error: invalid key id");return new Error(`${A.code}: ${A.details}`)}const[s,a]=this.generateSignature(i,t);if(a){B.error(`error: failed to generate signature: ${a}`);return new Error(`${D.code}: ${a.message}`)}if(!(0,x.timingSafeEqual)(M.Buffer.from(n),M.Buffer.from(s))){B.error("error: signature verification failed");return new Error(`${P.code}: ${P.details}`)}return undefined}catch(e){B.error("error: unexpected error occurred during signature verification: ",e);return new Error(`${D.code} : ${e}`)}}}const F=initLogger();class ClientInterceptorImpl{hmacKeyId;hmacSecret;hmac;constructor(e,t){this.hmacKeyId=e;this.hmacSecret=t;this.hmac=new HMAC}Interceptor(e,t){let r;let n;let i;const s=(new O.u8).withStart(((e,t,s)=>{r=e;n=t;i=s})).withSendMessage(((t,s)=>{if(typeof t==="string"){F.info(`Sending message: ${t}`)}else if(t instanceof Buffer){F.info(`Sending message: ${t.toString()}`)}else if(typeof t==="object"){F.info(`Sending message: ${JSON.stringify(t)}`)}else if(typeof t==="number"){F.info(`Sending message: ${t}`)}else if(typeof t==="boolean"){F.info(`Sending message: ${t}`)}else if(t===undefined){F.info(`Sending message: undefined`)}const[a,o]=this.hmac.buildMessage(t,e.method_definition.path);if(o){F.error(`Failed to encode request: ${o}`);return}const[l,c]=this.hmac.generateSignature(this.hmacSecret,a);if(c){F.error(`Failed to generate signature: ${c}`);return}r=r??new O.SF;r.set("x-hmac-key-id",this.hmacKeyId);r.set("x-hmac-signature",l);i(r,n);s(t)})).withHalfClose((e=>{e()})).withCancel((e=>{F.error(`Cancelled message: ${e}`)})).build();return new O.fl(t(e),s)}WithInterceptor(){return(e,t)=>this.Interceptor(e,t)}}const NewClientInterceptor=(e,t)=>new ClientInterceptorImpl(e,t);const U=initLogger();class ServerInterceptorImpl{auth;hmac;constructor(e){this.hmac=new HMAC;this.auth=this.hmac.verifySignature(e)}ServerInterceptor(e,t){let r;return new O.wg(t,{start:n=>{const i=(new O.e1).withOnReceiveMetadata(((e,n)=>{if(!e.get("x-hmac-key-id")){U.error("No HMAC key ID provided");t.sendStatus({code:O.i7.UNAUTHENTICATED,details:"No HMAC key ID provided"})}else if(!e.get("x-hmac-signature")){U.error("No HMAC signature provided");t.sendStatus({code:O.i7.UNAUTHENTICATED,details:"No HMAC signature provided"})}else{r=e;n(e)}})).withOnReceiveMessage(((n,i)=>{typeof n==="string"?U.debug(`Received message: ${n}`):n instanceof Buffer?U.debug(`Received message: ${n.toString()}`):typeof n==="object"?U.debug(`Received message: ${JSON.stringify(n)}`):typeof n==="number"?U.debug(`Received message: ${n}`):null;const[s,a]=this.hmac.buildMessage(n,e.path);if(a){U.error(`Failed to encode request: ${a}`);t.sendStatus({code:O.i7.UNAUTHENTICATED,details:a.message})}const o=this.auth(s,r.get("x-hmac-key-id").toString(),r.get("x-hmac-signature").toString());if(o){U.error(`Authentication failed on unary method: ${e.path} with error ${o.name}`);t.sendStatus({code:O.i7.UNAUTHENTICATED,details:o.message})}i(n)})).withOnReceiveHalfClose((e=>{e()})).withOnCancel((()=>{})).build();n(i)},sendMessage:(e,t)=>{typeof e==="string"?U.debug(`Server Sending message: ${e}`):e instanceof Buffer?U.debug(`Server Sending message: ${e.toString()}`):typeof e==="object"?U.debug(`Server Sending message: ${JSON.stringify(e)}`):typeof e==="number"?U.debug(`Server Sending message: ${e}`):null;t(e)}})}WithInterceptor(){return(e,t)=>this.ServerInterceptor(e,t)}}const NewServerInterceptor=e=>new ServerInterceptorImpl(e)})();var __webpack_exports__HMAC=__webpack_exports__.zU;var __webpack_exports__NewClientInterceptor=__webpack_exports__.hi;var __webpack_exports__NewServerInterceptor=__webpack_exports__.To;var __webpack_exports__initLogger=__webpack_exports__.CY;export{__webpack_exports__HMAC as HMAC,__webpack_exports__NewClientInterceptor as NewClientInterceptor,__webpack_exports__NewServerInterceptor as NewServerInterceptor,__webpack_exports__initLogger as initLogger}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/build/index.js.map b/build/index.js.map new file mode 100644 index 0000000..49b93e2 --- /dev/null +++ b/build/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","names":["enabled","__webpack_require__","module","exports","create","fn","adapter","namespace","e","processenv","process","env","DEBUG","DIAGNOSTICS","adapters","modifiers","logger","devnull","use","indexOf","push","set","custom","async","i","length","Promise","pinky","resolve","all","map","prebind","then","resolved","values","some","Boolean","modify","write","apply","arguments","message","introduce","options","has","Object","prototype","hasOwnProperty","key","call","nope","diagnopes","yep","diagnostics","args","Array","slice","meta","messages","Function","console","log","colorspace","kuler","ansiModifier","ansi","colors","tty","dev","prod","force","NODE_ENV","defineProperty","value","addAdminServicesToServer","registerAdminService","registeredAdminServices","getServiceDefinition","getHandlers","server","addService","BackoffTimeout","INITIAL_BACKOFF_MS","BACKOFF_MULTIPLIER","MAX_BACKOFF_MS","BACKOFF_JITTER","uniformRandom","min","max","Math","random","constructor","callback","this","initialDelay","multiplier","maxDelay","jitter","running","hasRef","startTime","Date","endTime","nextDelay","timerId","setTimeout","clearTimeout","runTimer","delay","_a","_b","setMilliseconds","getMilliseconds","unref","runOnce","nextBackoff","jitterMagnitude","stop","reset","now","newEndTime","getTime","isRunning","ref","getEndTime","CallCredentials","metadata_1","isCurrentOauth2Client","client","getRequestHeaders","createFromMetadataGenerator","metadataGenerator","SingleCallCredentials","createFromGoogleCredential","googleCredentials","getHeaders","service_url","reject","getRequestMetadata","err","headers","Error","metadata","Metadata","keys","add","createEmpty","EmptyCallCredentials","ComposedCallCredentials","creds","super","generateMetadata","base","generated","cred","gen","merge","compose","other","concat","_equals","every","index","undefined","InterceptingListenerImpl","isInterceptingListener","listener","onReceiveMetadata","nextListener","processingMetadata","hasPendingMessage","processingMessage","pendingStatus","processPendingMessage","onReceiveMessage","pendingMessage","processPendingStatus","onReceiveStatus","msg","status","processedStatus","getNextCallNumber","nextCallNumber","ClientDuplexStreamImpl","ClientWritableStreamImpl","ClientReadableStreamImpl","ClientUnaryCallImpl","callErrorFromStatus","events_1","stream_1","constants_1","callerStack","code","Status","details","error","stack","assign","EventEmitter","cancel","cancelWithStatus","CANCELLED","getPeer","Readable","deserialize","objectMode","_read","_size","startRead","Writable","serialize","_write","chunk","encoding","cb","context","flags","Number","isNaN","sendMessageWithContext","_final","halfClose","Duplex","ChannelCredentials","tls_1","call_credentials_1","tls_helpers_1","verifyIsBufferOrNull","obj","friendlyName","Buffer","TypeError","callCredentials","_getCallCredentials","createSsl","rootCerts","privateKey","certChain","verifyOptions","secureContext","createSecureContext","ca","getDefaultRootsData","cert","ciphers","CIPHER_SUITES","SecureChannelCredentialsImpl","createFromSecureContext","createInsecure","InsecureChannelCredentialsImpl","_getConnectionOptions","_isSecure","connectionOptions","checkServerIdentity","combinedCallCredentials","ComposedChannelCredentialsImpl","channelCredentials","callCreds","channelOptionsEqual","recognizedOptions","options1","options2","keys1","sort","keys2","ChannelImplementation","channel_credentials_1","internal_channel_1","target","credentials","internalChannel","InternalChannel","close","getTarget","getConnectivityState","tryToConnect","watchConnectivityState","currentState","deadline","getChannelzRef","createCall","method","host","parentCall","propagateFlags","includeDirs","ab","getInterceptingCall","InterceptingCall","RequesterBuilder","ListenerBuilder","InterceptorConfigurationError","call_interface_1","error_1","name","captureStackTrace","withOnReceiveMetadata","withOnReceiveMessage","withOnReceiveStatus","build","start","withStart","withSendMessage","sendMessage","withHalfClose","withCancel","defaultListener","next","defaultRequester","nextCall","requester","_c","_d","pendingMessageContext","pendingHalfClose","processPendingHalfClose","interceptingListener","_e","_f","fullInterceptingListener","bind","md","finalInterceptingListener","fullListener","finalMessage","getCall","channel","path","Infinity","parent","propagate_flags","setCredentials","BaseInterceptingCall","methodDefinition","serialized","requestSerialize","INTERNAL","getErrorMessage","readError","deserialized","responseDeserialize","BaseUnaryInterceptingCall","receivedMessage","wrapperListener","BaseStreamingInterceptingCall","getBottomInterceptingCall","responseStream","interceptorArgs","clientInterceptors","clientInterceptorProviders","callInterceptors","callInterceptorProviders","interceptors","provider","filter","interceptor","interceptorOptions","method_definition","reduceRight","nextInterceptor","currentOptions","finalOptions","Client","call_1","channel_1","connectivity_state_1","client_interceptors_1","CHANNEL_SYMBOL","Symbol","INTERCEPTOR_SYMBOL","INTERCEPTOR_PROVIDER_SYMBOL","CALL_INVOCATION_TRANSFORMER_SYMBOL","isFunction","arg","getErrorStackString","split","join","address","interceptor_providers","callInvocationTransformer","channelOverride","channelFactoryOverride","getChannel","waitForReady","checkState","newState","ConnectivityState","READY","setImmediate","checkOptionalUnaryResponseArguments","arg1","arg2","arg3","makeUnaryRequest","argument","checkedArguments","requestStream","callProperties","callOptions","emitter","responseMessage","receivedStatus","callerStackError","emit","OK","makeClientStreamRequest","checkMetadataAndOptions","makeServerStreamRequest","stream","makeBidiStreamRequest","CompressionAlgorithms","CompressionFilterFactory","CompressionFilter","zlib","compression_algorithms_1","filter_1","logging","isCompressionAlgorithmKey","CompressionHandler","writeMessage","compress","messageBuffer","compressMessage","output","allocUnsafe","writeUInt8","writeUInt32BE","copy","readMessage","data","compressed","readUInt8","decompressMessage","IdentityHandler","DeflateHandler","deflate","inflate","GzipHandler","gzip","unzip","UnknownHandler","compressionName","getCompressionHandler","BaseFilter","channelOptions","sharedFilterConfig","sendCompression","receiveCompression","currentCompressionAlgorithm","compressionAlgorithmKey","clientSelectedEncoding","serverSupportedEncodings","serverSupportedEncodingHeader","includes","LogVerbosity","ERROR","sendMetadata","remove","receiveMetadata","receiveEncoding","get","serverSupportedEncodingsHeader","resolvedMessage","receiveMessage","createFilter","DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH","DEFAULT_MAX_SEND_MESSAGE_LENGTH","Propagate","restrictControlPlaneStatusCode","INAPPROPRIATE_CONTROL_PLANE_CODES","INVALID_ARGUMENT","NOT_FOUND","ALREADY_EXISTS","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","DATA_LOSS","deadlineToString","getRelativeTimeout","getDeadlineTimeoutString","minDeadline","deadlineList","minValue","deadlineMsecs","units","timeoutMs","unit","factor","amount","String","ceil","MAX_TIMEOUT_TIME","deadlineMs","timeout","toISOString","dateDeadline","isDuration","durationToMs","msToDuration","millis","seconds","nanos","duration","getErrorCode","BaseSubchannelWrapper","FilterStackFactory","PickResultType","QueuePicker","UnavailablePicker","ChildLoadBalancerHandler","EndpointMap","endpointHasAddress","endpointToString","subchannelAddressToString","LeafLoadBalancer","isLoadBalancerNameRegistered","parseLoadBalancingConfig","selectLbConfigFromList","registerLoadBalancerType","createChildChannelControlHelper","uriToString","createResolver","registerResolver","trace","logging_1","enumerable","resolver_1","uri_parser_1","duration_1","backoff_timeout_1","load_balancer_1","load_balancer_pick_first_1","subchannel_address_1","load_balancer_child_handler_1","picker_1","filter_stack_1","admin_1","subchannel_interface_1","FilterStack","filters","result","receiveTrailers","unshift","getFilters","factories","filterFactories","clone","factory","getProxiedConnection","mapProxyName","http","tls","url_1","resolver_dns_1","TRACER_NAME","text","getProxyInfo","proxyEnv","envVar","grpc_proxy","https_proxy","http_proxy","proxyUrl","URL","protocol","userCred","username","password","INFO","hostname","port","getNoProxyHostList","noProxyStr","no_grpc_proxy","no_proxy","noProxyResult","extraOptions","scheme","proxyInfo","hostPort","splitHostPort","serverHost","realTarget","parsedTarget","parseUri","splitHostPost","DEFAULT_PORT","Host","isTcpSubchannelAddress","socketPath","from","toString","proxyAddressString","request","once","res","socket","head","removeAllListeners","statusCode","targetPath","getDefaultAuthority","remoteHost","cts","connect","servername","on","end","__webpack_unused_export__","wg","e1","fl","u8","yi","i7","SF","client_1","make_client_1","loadPackageDefinition","makeClientConstructor","server_1","Server","server_credentials_1","ServerCredentials","status_builder_1","StatusBuilder","combineChannelCredentials","reduce","acc","combineCallCredentials","first","additional","closeClient","waitForClientReady","loadObject","load","filename","format","setLogger","setLogVerbosity","verbosity","setLoggerVerbosity","getClientChannel","channelz_1","getChannelzServiceDefinition","getChannelzHandlers","server_interceptors_1","ServerListenerBuilder","ResponderBuilder","ServerInterceptingCall","experimental","resolver_dns","resolver_uds","resolver_ip","load_balancer_pick_first","load_balancer_round_robin","load_balancer_outlier_detection","channelz","setup","resolving_load_balancer_1","subchannel_pool_1","compression_filter_1","max_message_size_filter_1","http_proxy_1","load_balancing_call_1","deadline_1","resolving_call_1","call_number_1","control_plane_status_1","retrying_call_1","MIN_IDLE_TIMEOUT_MS","DEFAULT_IDLE_TIMEOUT_MS","RETRY_THROTTLER_MAP","Map","DEFAULT_RETRY_BUFFER_SIZE_BYTES","DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES","ChannelSubchannelWrapper","childSubchannel","refCount","subchannelStateListener","subchannel","previousState","keepaliveTime","throttleKeepalive","addConnectivityStateListener","child","removeConnectivityStateListener","removeWrappedSubchannel","_g","_h","connectivityState","IDLE","currentPicker","configSelectionQueue","pickQueue","connectivityStateWatchers","configSelector","currentResolutionError","wrappedSubchannels","Set","callCount","idleTimer","channelzEnabled","callTracker","ChannelzCallTracker","childrenTracker","ChannelzChildrenTracker","randomChannelId","floor","MAX_SAFE_INTEGER","originalTarget","originalTargetUri","defaultSchemeMapResult","mapUriDefaultScheme","callRefTimer","setInterval","channelzTrace","ChannelzTrace","channelzRef","registerChannelzChannel","getChannelzInfo","addTrace","defaultAuthority","proxyMapResult","subchannelPool","getSubchannelPool","retryBufferTracker","MessageBufferTracker","idleTimeoutMs","channelControlHelper","createSubchannel","subchannelAddress","subchannelArgs","getOrCreateSubchannel","wrappedSubchannel","updateState","picker","queueCopy","callRefTimerUnref","doPick","requestReresolution","addChannelzChild","refChild","removeChannelzChild","unrefChild","resolvingLoadBalancer","ResolvingLoadBalancer","serviceConfig","retryThrottling","RetryThrottler","maxTokens","tokenRatio","delete","nextTick","localQueue","getConfig","reportResolverError","filterStackFactory","MaxMessageSizeFilterFactory","JSON","stringify","id","substring","lastActivityTimestamp","state","children","getChildLists","verbosityOverride","callRefTimerRef","removeConnectivityStateWatcher","watcherObject","watcherIndex","findIndex","splice","watchersCopy","timer","TRANSIENT_FAILURE","newKeepaliveTime","extraPickInfo","pick","queueCallForPick","exitIdle","type","config","queueCallForConfig","enterIdle","destroy","startIdleTimeout","timeSinceLastActivity","valueOf","maybeStartIdleTimer","SHUTDOWN","onCallStart","addCallStarted","onCallEnd","addCallSucceeded","addCallFailed","createLoadBalancingCall","callConfig","callNumber","LoadBalancingCall","createRetryingCall","RetryingCall","createInnerCall","createResolvingCall","DEFAULTS","ResolvingCall","addStatusWatcher","clearInterval","unregisterChannelzRef","unrefUnusedSubchannels","deadlineDate","TYPE_NAME","currentChild","pendingChild","latestConfig","ChildPolicyHelper","calledByPendingChild","CONNECTING","calledByCurrentChild","latestChild","setChild","newChild","configUpdateRequiresNewPolicyInstance","oldConfig","newConfig","getLoadBalancerName","updateAddressList","endpointList","lbConfig","attributes","childToUpdate","newHelper","createLoadBalancer","resetBackoff","getTypeName","OutlierDetectionLoadBalancer","OutlierDetectionLoadBalancingConfig","experimental_1","OUTLIER_DETECTION_ENABLED","GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION","defaultSuccessRateEjectionConfig","stdev_factor","enforcement_percentage","minimum_hosts","request_volume","defaultFailurePercentageEjectionConfig","threshold","validateFieldType","fieldName","expectedType","objectName","fullFieldName","validatePositiveDuration","validatePercentage","intervalMs","baseEjectionTimeMs","maxEjectionTimeMs","maxEjectionPercent","successRateEjection","failurePercentageEjection","childPolicy","toJsonObject","outlier_detection","interval","base_ejection_time","max_ejection_time","max_ejection_percent","success_rate_ejection","failure_percentage_ejection","child_policy","getIntervalMs","getBaseEjectionTimeMs","getMaxEjectionTimeMs","getMaxEjectionPercent","getSuccessRateEjectionConfig","getFailurePercentageEjectionConfig","getChildPolicy","createFromJson","isArray","OutlierDetectionSubchannelWrapper","mapEntry","subchannelWrappers","eject","setHealthy","uneject","getMapEntry","getWrappedSubchannel","createEmptyBucket","success","failure","CallCounter","activeBucket","inactiveBucket","addSuccess","addFailure","switchBuckets","getLastSuccesses","getLastFailures","OutlierDetectionPicker","wrappedPicker","countCalls","pickArgs","wrappedPick","pickResultType","COMPLETE","subchannelWrapper","onCallEnded","counter","entryMap","timerStartTime","childBalancer","originalSubchannel","getForSubchannelAddress","currentEjectionTimestamp","isCountingEnabled","ejectionTimer","getCurrentEjectionPercent","ejectionCount","size","runSuccessRateCheck","ejectionTimestamp","successRateConfig","targetRequestVolume","addresesWithTargetVolume","successRates","endpoint","entries","successes","failures","successRateMean","a","b","successRateDeviationSum","rate","deviation","successRateVariance","successRateStdev","sqrt","ejectionThreshold","successRate","randomNumber","runFailurePercentageCheck","failurePercentageConfig","addressesWithTargetVolume","failurePercentage","ejectionTimeMultiplier","switchAllBuckets","startTimer","delayMs","runChecks","returnTime","deleteMissing","remainingDelay","PickFirstLoadBalancer","shuffled","PickFirstLoadBalancingConfig","net_1","CONNECTION_DELAY_INTERVAL_MS","shuffleAddressList","getShuffleAddressList","PickFirstPicker","onCallStarted","list","j","temp","interleaveAddressFamilies","addressList","ipv6Addresses","ipv4Addresses","ipv6First","isIPv6","firstList","secondList","REPORT_HEALTH_STATUS_OPTION_NAME","currentSubchannelIndex","currentPick","errorMessage","onSubchannelStateUpdate","pickedSubchannelHealthListener","calculateAndReportNewState","triedAllSubchannels","stickyTransientFailureMode","requestedResolutionSinceLastUpdate","lastError","latestAddressList","connectionDelayTimeout","reportHealthStatus","allChildrenHaveReportedTF","hasReportedTransientFailure","isHealthy","getAddress","maybeEnterStickyTransientFailureMode","startConnecting","removeCurrentPick","removeHealthStateWatcher","realSubchannelEquals","pickSubchannel","startNextSubchannelConnecting","startIndex","subchannelState","subchannelIndex","addHealthStateWatcher","resetSubchannelList","connectToAddressList","newChildrenList","rawAddressList","addresses","LEAF_CONFIG","latestState","childChannelControlHelper","latestPicker","pickFirstBalancer","updateEndpoint","newEndpoint","getPicker","getEndpoint","registerDefaultLoadBalancerType","RoundRobinLoadBalancer","RoundRobinLoadBalancingConfig","RoundRobinPicker","nextIndex","childPicker","peekNextEndpoint","currentReadyPicker","updatesPaused","calculateAndUpdateState","countChildrenWithState","readyChildren","nextPickedEndpoint","endpointEqual","getDefaultConfig","overrides","_j","_k","registeredLoadBalancerTypes","defaultLoadBalancerType","typeName","loadBalancerType","loadBalancingConfigType","LoadBalancer","LoadBalancingConfig","rawConfig","configs","fallbackTodefault","http2","methodName","readPending","ended","splitPath","serviceName","serviceUrl","outputStatus","progress","finalStatus","finalMetadata","pickResult","pickInformation","subchannelString","credsMetadata","getRealSubchannel","rstCode","constants","NGHTTP2_REFUSED_STREAM","onCommitted","getCallNumber","UNKNOWN","DROP","getOptions","QUEUE","isTracerEnabled","getLogger","process_1","clientVersion","DEFAULT_LOGGER","optionalParams","info","debug","_logger","_logVerbosity","verbosityString","GRPC_NODE_VERBOSITY","GRPC_VERBOSITY","toUpperCase","NONE","severity","logFunction","tracersString","GRPC_NODE_TRACE","GRPC_TRACE","enabledTracers","disabledTracers","tracerName","startsWith","allEnabled","tracer","pid","requesterFuncs","unary","server_stream","client_stream","bidi","isPrototypePolluted","methods","classOptions","ServiceClientImpl","forEach","attrs","methodType","charAt","methodFunc","partial","originalName","service","isProtobufTypeDefinition","packageDef","serviceFqn","nameComponents","comp","current","packageName","MaxMessageSizeFilter","maxSendMessageSize","maxReceiveMessageSize","concreteMessage","RESOURCE_EXHAUSTED","LEGAL_KEY_REGEX","LEGAL_NON_BINARY_VALUE_REGEX","isLegalKey","test","isLegalNonBinaryValue","isBinaryKey","endsWith","isCustomMetadata","normalizeKey","toLowerCase","validate","isBuffer","internalRepr","existingValue","getMap","v","newMetadata","newInternalRepr","clonedValue","mergedValue","setOptions","toHttp2Headers","bufToString","toJSON","fromHttp2Headers","trim","val","UNAVAILABLE","loadBalancer","calledExitIdle","dns","util","service_config_1","constants_2","DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS","resolveTxtPromise","promisify","resolveTxt","dnsLookupPromise","lookup","DnsResolver","pendingLookupPromise","pendingTxtPromise","latestLookupResult","latestServiceConfig","latestServiceConfigError","continueResolving","isNextResolutionTimerRunning","isServiceConfigEnabled","returnedIpResult","ipResult","dnsHostname","isIPv4","percentage","defaultResolutionError","backoffOptions","backoff","startResolutionWithBackoff","minTimeBetweenResolutionsMs","nextResolutionTimer","startResolution","onSuccessfulResolution","stopNextResolutionTimer","onError","subchannelAddresses","addr","allAddressesString","txtRecord","extractAndSelectServiceConfig","startNextResolutionTimer","updateResolution","registerDefaultScheme","IPV4_SCHEME","IPV6_SCHEME","IpResolver","endpoints","hasReturnedResult","pathList","UdsResolver","authority","registeredResolvers","defaultScheme","resolverClass","readFilterPending","writeFilterPending","pendingChildStatus","statusWatchers","deadlineTimer","filterStack","CANCELLATION","DEADLINE","getDeadline","runDeadlineTimer","handleDeadline","DEADLINE_EXCEEDED","filteredStatus","watcher","sendMessageOnChild","filteredMessage","configResult","methodConfig","configDeadline","setSeconds","getSeconds","dynamicFilterFactories","filteredMetadata","filteredMesssage","NAME_MATCH_LEVEL_ORDER","hasMatchingName","matchLevel","findMatchingConfig","methodConfigs","getDefaultConfigSelector","defaultConfigSelector","splitName","x","matchingConfig","onFailedResolution","latestChildState","latestChildPicker","previousServiceConfig","defaultServiceConfig","validateServiceConfig","parse","loadBalancingConfig","childLoadBalancer","backoffTimeout","innerResolver","serviceConfigError","workingServiceConfig","handleResolutionFailure","workingConfigList","finalServiceConfig","previousRetryThrottler","tokens","canRetryCall","totalLimit","limitPerCall","totalAllocated","allocatedPerCall","allocate","callId","currentPerCall","free","freeAll","PREVIONS_RPC_ATTEMPTS_METADATA_KEY","bufferTracker","retryThrottler","initialMetadata","underlyingCalls","writeBuffer","writeBufferOffset","readStarted","transparentRetryUsed","attempts","hedgingTimer","committedCallIndex","initialRetryBackoffSec","nextRetryBackoffSec","retryPolicy","initialBackoff","hedgingPolicy","reportStatus","statusObject","getBufferEntry","messageIndex","entryType","allocated","getNextBufferIndex","clearSentMessages","earliestNeededMessageIndex","nextMessageToSend","bufferEntry","commitCall","commitCallWithMostMessages","mostMessages","callWithMostMessages","childCall","isStatusCodeInList","getNextRetryBackoffMs","nextBackoffMs","maxBackoffSec","maxBackoff","backoffMultiplier","maybeRetryCall","pushback","maxAttempts","retryDelayMs","startNewAttempt","countActiveCalls","count","handleProcessedStatus","callIndex","nonFatalStatusCodes","maybeStartHedgingAttempt","retryableStatusCodes","retried","getPushback","mdValue","parseInt","handleChildStatus","maybeStartHedgingTimer","hedgingDelayString","hedgingDelay","hedgingDelaySec","previousAttempts","receivedMetadata","sendNextChildMessage","handleChildWriteCompleted","childIndex","writeObj","underlyingCall","halfCloseIndex","newCredentials","getMethod","getHost","ServerDuplexStreamImpl","ServerWritableStreamImpl","ServerReadableStreamImpl","ServerUnaryCallImpl","serverErrorToStatus","overrideTrailers","isInteger","cancelled","responseMetadata","getPath","trailingMetadata","sendStatus","InsecureServerCredentials","keyCertPairs","checkClientCertificate","pair","private_key","cert_chain","SecureServerCredentials","requestCert","_getSettings","equals","thisCert","otherCert","thisKey","otherKey","getServerInterceptingCall","BaseServerInterceptingCall","isInterceptingServerListener","util_1","stream_decoder_1","withOnReceiveHalfClose","onReceiveHalfClose","withOnCancel","onCancel","InterceptingServerListenerImpl","hasPendingHalfClose","interceptedMetadata","withSendMetadata","withSendStatus","defaultServerListener","defaultResponder","responder","pendingMessageCallback","interceptedListener","fullInterceptedListener","interceptedMessage","interceptedStatus","GRPC_ACCEPT_ENCODING_HEADER","GRPC_ENCODING_HEADER","GRPC_MESSAGE_HEADER","GRPC_STATUS_HEADER","GRPC_TIMEOUT_HEADER","DEADLINE_REGEX","deadlineUnitsToMs","H","M","S","m","u","n","defaultCompressionHeaders","defaultResponseHeaders","HTTP2_HEADER_STATUS","HTTP_STATUS_OK","HTTP2_HEADER_CONTENT_TYPE","defaultResponseOptions","waitForTrailers","callEventTracker","handler","metadataSent","wantTrailers","cancelNotified","incomingEncoding","decoder","StreamDecoder","readQueue","isReadPending","receivedHalfClose","streamEnded","onStreamEnd","notifyOnCancel","handleDataFrame","pause","handleEndEvent","timeoutHeader","handleTimeoutHeader","encodingHeader","HTTP2_HEADER_ACCEPT_ENCODING","HTTP2_HEADER_TE","match","checkCancelled","destroyed","closed","resume","maybeSendMetadata","serializeMessage","byteLength","subarray","UNIMPLEMENTED","decompressAndMaybePush","queueEntry","compressedMessage","compressedMessageEncoding","decompressedMessage","parsedMessage","maybePushNextMessage","nextQueueEntry","shift","rawMessages","messageBytes","addMessageReceived","respond","response","addMessageSent","headersSent","trailersToSend","encodeURI","sendTrailers","endStream","session","remoteAddress","remotePort","requestDeserialize","responseSerialize","baseCall","__runInitializers","thisArg","initializers","useValue","__esDecorate","ctor","descriptorIn","decorators","contextIn","extraInitializers","accept","f","kind","descriptor","getOwnPropertyDescriptor","_","done","p","access","addInitializer","init","server_call_1","UNLIMITED_CONNECTION_AGE_MS","KEEPALIVE_MAX_TIME_MS","KEEPALIVE_TIMEOUT_MS","HTTP2_HEADER_PATH","noop","deprecate","getUnimplementedStatusResponse","getDefaultHandler","handlerType","unimplementedStatusResponse","_instanceExtraInitializers","_start_decorators","boundPorts","http2Servers","handlers","sessions","started","shutdown","serverAddressString","listenerChildrenTracker","sessionChildrenTracker","registerChannelzServer","maxConnectionAgeMs","maxConnectionAgeGraceMs","keepaliveTimeMs","keepaliveTimeoutMs","commonServerOptions","maxSendHeaderBlockLength","maxSessionMemory","settings","maxConcurrentStreams","listenerChildren","sessionChildren","getChannelzSessionInfoGetter","sessionInfo","sessionSocket","stringToSubchannelAddress","localAddress","localPort","tlsInfo","encrypted","tlsSocket","cipherInfo","getCipher","certificate","getCertificate","peerCertificate","getPeerCertificate","cipherSuiteStandardName","standardName","cipherSuiteOtherName","localCertificate","raw","remoteCertificate","socketInfo","security","remoteName","streamsStarted","streamTracker","callsStarted","streamsSucceeded","callsSucceeded","streamsFailed","callsFailed","messagesSent","messagesReceived","keepAlivesSent","lastLocalStreamCreatedTimestamp","lastRemoteStreamCreatedTimestamp","lastCallStartedTimestamp","lastMessageSentTimestamp","lastMessageReceivedTimestamp","localFlowControlWindow","localWindowSize","remoteFlowControlWindow","remoteWindowSize","addProtoService","implementation","serviceKeys","implFn","impl","register","removeService","unregister","registerListenerToChannelz","boundAddress","registerChannelzSocket","createHttp2Server","http2Server","secureServerOptions","enableTrace","createSecureServer","createServer","_setupHandlers","bindOneAddress","boundPortObject","listen","boundSubchannelAddress","listeningServers","removeListener","bindManyPorts","errors","firstAddressResult","restAddressResult","restAddresses","allResults","bindAddressList","bindResult","errorString","resolvePort","resolverListener","resolver","bindPort","completeUnbind","portNumber","normalizePort","initialPortUri","portUri","bindAsync","deferredCallback","completionPromise","portNum","mapKey","originalUri","splitPort","finalUri","combineHostPort","closeServer","serverInfo","closeSession","closeCallback","unbind","drain","graceTimeMs","allSessions","serverEntry","NGHTTP2_CANCEL","forceShutdown","clear","channelzInfo","func","listening","tryShutdown","wrappedCallback","pendingChecks","maybeCallback","serverString","sessionString","addHttp2Port","_verifyContentType","contentType","HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE","_retrieveHandler","_respondWithError","channelzSessionInfo","_channelzHandler","_runHandlerForCall","_streamHandler","handleUnary","handleClientStreaming","handleServerStreaming","handleBidiStreaming","serverAddress","clientAddress","connectionAgeTimer","connectionAgeGraceTimer","sessionClosedByServer","goaway","NGHTTP2_NO_ERROR","keeapliveTimeTimer","timeoutTImer","ping","payload","_metadata","static","private","configurable","writable","trailer","requestMetadata","requestMessage","validateRetryThrottling","os","DURATION_REGEX","CLIENT_LANGUAGE_STRING","validateName","validateRetryPolicy","validateHedgingPolicy","validateMethodConfig","timeoutParts","maxRequestBytes","maxResponseBytes","toFixed","validateLoadBalancingConfig","loadBalancingPolicy","seenMethodNames","seenName","validateCanaryConfig","clientLanguage","lang","clientHostname","allowedFields","field","validateAndSelectCanaryConfig","validatedConfig","hostnameMatched","languageMatched","language","record","recordString","recordJson","withCode","withDetails","withMetadata","ReadState","readState","NO_DATA","readCompressFlag","alloc","readPartialSize","readSizeRemaining","readMessageSize","readPartialMessage","readMessageRemaining","readHead","toRead","READING_SIZE","fill","readUInt32BE","READING_MESSAGE","framedMessageBuffers","framedMessage","subchannelAddressEqual","address1","address2","addressString","isIP","endpoint1","endpoint2","expectedAddress","endpointEqualUnordered","matchFound","entry","removedValues","foundEntry","Http2SubchannelCall","getSystemErrorName","errno","num","http2Stream","transport","isReadFilterPending","isPushPending","canPush","readsClosed","statusOutput","unpushedReadMessages","mappedStatusCode","internalError","headersString","header","UNAUTHENTICATED","PERMISSION_DENIED","NGHTTP2_FLAG_END_STREAM","handleTrailers","endCall","tryPush","maybeOutputStatus","NGHTTP2_ENHANCE_YOUR_CALM","NGHTTP2_INADEQUATE_SECURITY","NGHTTP2_INTERNAL_ERROR","syscall","onDisconnect","destroyHttp2Stream","metadataMap","decodeURI","getStatus","getPeerName","nextMessage","healthy","healthListeners","childHealthy","updateHealthListeners","SubchannelPool","channel_options_1","subchannel_1","transport_1","REF_CHECK_INTERVAL","pool","cleanupTimer","allSubchannelsUnrefed","channelTarget","subchannelObjArray","refedSubchannels","unrefIfOneRef","ensureCleanupTask","channelTargetUri","subchannelTarget","channelArguments","subchannelObj","Subchannel","Http2SubchannelConnector","globalSubchannelPool","global","connector","continueConnecting","stateListeners","refcount","handleBackoffTimer","subchannelAddressString","registerChannelzSubchannel","refTrace","transitionToState","startBackoff","stopBackoff","startConnectingInternal","adjustedKeepaliveTime","addDisconnectListener","tooManyPings","oldStates","statsTracker","fs","GRPC_SSL_CIPHER_SUITES","DEFAULT_ROOTS_FILE_PATH","GRPC_DEFAULT_SSL_ROOTS_FILE_PATH","defaultRootsData","readFileSync","net","subchannel_call_1","FLOW_CONTROL_TRACER_NAME","HTTP2_HEADER_AUTHORITY","HTTP2_HEADER_METHOD","HTTP2_HEADER_USER_AGENT","tooManyPingsData","Http2Transport","keepaliveTimerId","pendingSendKeepalivePing","keepaliveTimeoutId","keepaliveWithoutCalls","activeCalls","disconnectListeners","disconnectHandled","keepalivesSent","userAgent","stopKeepalivePings","handleDisconnect","errorCode","lastStreamID","opaqueData","reportDisconnectToOwner","maybeStartKeepalivePingTimer","keepaliveTrace","flowControlTrace","internalsTrace","clearKeepaliveTimer","clearKeepaliveTimeout","canSendPing","maybeSendPing","removeActiveCall","addActiveCall","subchannelCallStatsTracker","eventTracker","isShutdown","createSession","proxyConnectionResult","targetAuthority","addressScheme","sslTargetNameOverride","authorityHostname","createConnection","option","ALPNProtocols","URI_REGEX","uriString","parsedUri","exec","NUMBER_REGEX","hostEnd","portString","uri","J_","camelCase","Protobuf","Long","isAnyExtension","descriptorOptions","longs","enums","bytes","defaults","oneofs","json","joinName","baseName","isHandledReflectionObject","Service","Type","Enum","isNamespaceBase","Namespace","Root","getAllHandledReflectionObjects","parentName","objName","nested","accumulator","currentValue","createDeserializer","cls","argBuf","toObject","decode","createSerializer","fromObject","encode","finish","createMethodDefinition","fileDescriptors","requestType","resolvedRequestType","responseType","resolvedResponseType","createMessageDefinition","createServiceDefinition","def","methodsArray","messageDescriptor","toDescriptor","$type","fileDescriptorProtos","createEnumDefinition","enumType","enumDescriptor","createDefinition","createPackageDefinition","root","resolveAll","descriptorList","file","bufferList","FileDescriptorProto","createPackageDefinitionFromDescriptorSet","decodedDescriptorSet","fromDescriptor","loadProtosWithOptions","loadedRoot","loadSync","loadProtosWithOptionsSync","fromJSON","loadFileDescriptorSetFromBuffer","descriptorSet","FileDescriptorSet","loadFileDescriptorSetFromObject","addCommonProtos","addIncludePathResolver","includePaths","originalResolvePath","resolvePath","origin","isAbsolute","directory","fullPath","accessSync","R_OK","emitWarning","apiDescriptor","descriptorDescriptor","sourceContextDescriptor","typeDescriptor","common","google","protobuf","asPromise","ctx","params","offset","pending","executor","base64","string","b64","s64","buffer","parts","t","fromCharCode","invalidEncoding","c","charCodeAt","codegen","functionParams","functionName","body","Codegen","formatStringOrScope","source","verbose","scopeKeys","scopeParams","scopeValues","scopeOffset","formatParams","formatOffset","replace","$0","$1","functionNameOverride","_listeners","evt","off","listeners","fetch","inquire","xhr","readFile","fetchReadFileCallback","contents","XMLHttpRequest","binary","fetch_xhr","onreadystatechange","fetchOnReadyStateChange","readyState","responseText","Uint8Array","overrideMimeType","open","send","Float32Array","f32","f8b","le","writeFloat_f32_cpy","buf","pos","writeFloat_f32_rev","writeFloatLE","writeFloatBE","readFloat_f32_cpy","readFloat_f32_rev","readFloatLE","readFloatBE","writeFloat_ieee754","writeUint","sign","round","exponent","LN2","mantissa","pow","writeUintLE","writeUintBE","readFloat_ieee754","readUint","uint","NaN","readUintLE","readUintBE","Float64Array","f64","writeDouble_f64_cpy","writeDouble_f64_rev","writeDoubleLE","writeDoubleBE","readDouble_f64_cpy","readDouble_f64_rev","readDoubleLE","readDoubleBE","writeDouble_ieee754","off0","off1","readDouble_ieee754","lo","hi","moduleName","mod","eval","normalize","absolute","prefix","originPath","includePath","alreadyNormalized","SIZE","MAX","slab","pool_alloc","utf8","utf8_length","len","read","utf8_read","utf8_write","c1","c2","asyncify","_initialParams","_initialParams2","_interopRequireDefault","_setImmediate","_setImmediate2","_wrapAsync","__esModule","default","isAsync","pop","promise","handlePromise","invokeCallback","_isArrayLike","_isArrayLike2","_breakLoop","_breakLoop2","_eachOfLimit","_eachOfLimit2","_once","_once2","_onlyOnce","_onlyOnce2","_wrapAsync2","_awaitify","_awaitify2","eachOfArrayLike","coll","iteratee","completed","canceled","iteratorCallback","eachOfGeneric","eachOf","eachOfImplementation","_eachOfLimit3","eachOfLimit","limit","eachOfSeries","_eachOf","_eachOf2","_withoutIndex","_withoutIndex2","eachLimit","asyncEachOfLimit","generator","awaiting","idx","replenish","iterDone","iterateeCallback","catch","handleError","awaitify","asyncFn","arity","awaitable","cbArgs","breakLoop","_iterator","_iterator2","_asyncEachOfLimit","_asyncEachOfLimit2","RangeError","isAsyncGenerator","isAsyncIterable","asyncIterator","nextElem","looping","elem","iterator","isArrayLike","createIterator","_getIterator","_getIterator2","createArrayIterator","createES2015Iterator","item","createObjectIterator","okeys","wrapper","callFn","onlyOnce","eachfn","tasks","results","task","taskCb","fallback","wrap","hasQueueMicrotask","queueMicrotask","hasSetImmediate","hasNextTick","defer","_defer","_asyncify","_asyncify2","toStringTag","wrapAsync","series","_parallel2","_parallel3","_eachOfSeries","_eachOfSeries2","cssKeywords","reverseKeywords","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","r","g","delta","h","s","l","rdif","gdif","bdif","diff","diffc","w","y","k","comparativeDistance","reversed","currentClosestDistance","currentClosestKeyword","distance","z","t1","t2","t3","smin","lmin","sv","q","vmin","sl","wh","bl","ratio","y2","x2","z2","hr","atan2","PI","cos","sin","color","mult","rem","integer","colorString","char","chroma","grayscale","hue","pure","mg","conversions","route","models","wrapRaw","wrappedFn","conversion","wrapRounded","fromModel","routes","routeModels","toModel","buildGraph","graph","deriveBFS","queue","adjacents","adjacent","node","link","to","wrapConversion","cur","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","colorNames","swizzle","reverseNames","cs","abbr","rgba","per","hexAlpha","i2","parseFloat","clamp","alpha","hexDouble","percent","hsla","hwba","str","_slice","skippedModels","hashedModelKeys","limiters","Color","valpha","newArr","zeroArray","hashedKeys","freeze","places","self","percentString","array","object","unitArray","unitObject","roundToPlace","getset","maxfn","saturationl","lightness","saturationv","wblack","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","yiq","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","newAlpha","assertArray","roundTo","modifier","arr","delimiter","variable","variables","RegExp","substr","token","twoDigitsOptional","twoDigits","threeDigits","fourDigits","word","literal","shorten","sLen","monthUpdate","arrName","i18n","lowerCaseArr","origObj","_i","args_1","dayNames","monthNames","monthNamesShort","dayNamesShort","defaultI18n","amPm","DoFn","dayOfMonth","globalI18n","setGlobalDateI18n","regexEscape","pad","formatFlags","D","dateObj","getDate","DD","Do","d","getDay","dd","ddd","dddd","getMonth","MM","MMM","MMMM","YY","getFullYear","YYYY","getHours","hh","HH","getMinutes","mm","ss","SS","SSS","A","ZZ","getTimezoneOffset","abs","Z","monthParse","emptyDigits","emptyWord","timezoneOffset","minutes","parseFlags","cent","globalMasks","shortDate","mediumDate","longDate","fullDate","isoDate","isoDateTime","shortTime","mediumTime","longTime","setGlobalDateMasks","masks","mask","literals","combinedI18nSettings","dateStr","today","dateInfo","year","month","day","hour","minute","second","millisecond","isPm","parseInfo","newFormat","specifiedFields","requiredFields","regex","requiredField","matches","parser","dateTZ","validateFields","UTC","fecha","displayName","named","inherits","superCtor","super_","TempCtor","isStream","pipe","_writableState","readable","_readableState","duplex","transform","_transform","Kuler","style","suffix","INFINITY","symbolTag","reAsciiWord","reLatin","rsAstralRange","rsComboMarksRange","rsComboSymbolsRange","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsVarRange","rsBreakRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsLowerMisc","rsUpperMisc","rsOptLowerContr","rsOptUpperContr","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","deburredLetters","freeGlobal","freeSelf","arrayReduce","initAccum","asciiToArray","asciiWords","basePropertyOf","deburrLetter","hasUnicode","hasUnicodeWord","stringToArray","unicodeToArray","unicodeWords","objectProto","objectToString","symbolProto","symbolToString","baseSlice","baseToString","isSymbol","castSlice","createCaseFirst","strSymbols","chr","trailing","createCompounder","words","deburr","isObjectLike","capitalize","upperFirst","pattern","guard","Colorizer","Padder","MESSAGE","CliFormat","opts","levels","cli","colorizer","padder","Format","LEVEL","hasSpace","addColors","clrs","nextColors","allColors","colorize","cascade","formats","isValidFormat","fmt","combinedFormat","instance","einfo","cause","InvalidFormatError","formatFn","createFormatWrap","exposeFormat","requireFormat","replacer","jsonStringify","configure","space","label","logstash","timestamp","fillExcept","fillExceptKeys","metadataKey","savedKeys","fillWith","fillWithKeys","ms","curr","prevTime","themes","ansiStyles","styles","defineProps","defineProperties","newLineRegex","supportsColor","enable","disable","stripColors","strip","stylize","styleMap","matchOperatorsRe","escapeStringRegexp","_styles","builder","applyStyle","__proto__","proto","ret","closeRe","inspect","newLinesPresent","nestedStyles","setTheme","theme","out","sequencer","exploded","trap","zalgo","maps","america","zebra","rainbow","runTheTrap","o","chars","rand","soul","up","down","mid","range","isChar","character","bool","heComes","counts","letter","rainbowColors","available","inverse","codes","bold","dim","italic","underline","hidden","strikethrough","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgGray","bgGrey","bgBrightRed","bgBrightGreen","bgBrightYellow","bgBrightBlue","bgBrightMagenta","bgBrightCyan","bgBrightWhite","blackBG","redBG","greenBG","yellowBG","blueBG","magentaBG","cyanBG","whiteBG","flag","argv","terminatorPos","hasFlag","forceColor","FORCE_COLOR","translateLevel","hasBasic","has256","has16m","isTTY","platform","osRelease","release","versions","CI_NAME","TEAMCITY_VERSION","version","TERM_PROGRAM_VERSION","TERM_PROGRAM","TERM","getSupportLevel","stdout","stderr","npm","paddings","paddingForLevels","filler","getLongestLevel","lvls","paddingForLevel","maxLength","targetLen","rep","padding","repeat","SPLAT","stripped","depth","Printf","templateFn","template","stringifiedRest","splat","formatRegExp","escapedPercent","Splatter","_splat","percents","escapes","expectedSplat","extraSplat","metas","metalen","alias","isFinite","long","fmtLong","fmtShort","msAbs","plural","isPlural","one","called","onetime","$protobuf","Field","MapField","OneOf","Method","fileDescriptor","filePackage","define","files","messageType","syntax","extension","fromDescriptorOptions","FileOptions","ks","setOption","Root_toDescriptorRecursive","ns","fullName","nestedArray","_nestedArray","toDescriptorOptions","unnamedMessageIndex","DescriptorProto","MessageOptions","oneofDecl","oneofsArray","oneofIndex","nestedType","extensionRange","extensions","reservedRange","reservedName","reserved","fieldsArray","fieldDescriptor","_fieldsArray","keyType","toDescriptorType","resolvedKeyType","valueType","resolvedType","valueTypeName","shortname","FieldDescriptorProto","number","_oneofsArray","ExtensionRange","ReservedRange","numberRe","fieldType","fromDescriptorType","fieldRule","extendee","FieldOptions","defaultValue","packableDescriptorType","packed","ucFirst","rule","extensionField","extend","partOf","unnamedEnumIndex","EnumDescriptorProto","EnumOptions","EnumValueDescriptorProto","unnamedOneofIndex","OneofDescriptorProto","unnamedServiceIndex","ServiceDescriptorProto","ServiceOptions","_methodsArray","unnamedMethodIndex","MethodDescriptorProto","inputType","outputType","clientStreaming","serverStreaming","MethodOptions","group","valuesById","underScore","fields","fromPath","toPath","commonRe","Any","type_url","timeType","Duration","Timestamp","Empty","Struct","Value","oneof","nullValue","numberValue","stringValue","boolValue","structValue","listValue","NullValue","NULL_VALUE","ListValue","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","FieldMask","paths","converter","genValuePartial_fromObject","fieldIndex","prop","defaultAlreadyEmitted","typeDefault","repeated","isUnsigned","mtype","safeProp","genValuePartial_toObject","compareFieldsById","repeatedFields","mapFields","normalFields","low","high","unsigned","toNumber","arrayDefault","hasKs2","types","missing","basic","rfield","required","encoder","genTypePartial","wireType","optional","ReflectionObject","className","comment","comments","valuesOptions","enm","toJSONOptions","keepComments","isString","isReservedId","isReservedName","allow_alias","ruleRe","isObject","declaringField","_packed","getOption","ifNotSet","lookupTypeOrEnum","proto3_optional","fromNumber","newBuffer","emptyObject","emptyArray","decorateField","fieldId","decorateType","decorateEnum","fieldDecorator","_configure","Type_","verifier","Message","wrappers","Writer","BufferWriter","Reader","BufferReader","rpc","roots","tokenize","decorateMapField","fieldKeyType","fieldValueType","mapFieldDecorator","properties","writer","encodeDelimited","reader","decodeDelimited","verify","parsedOptions","lookupType","addJSON","arrayToJSON","clearCache","toArray","nestedJson","names","getEnum","prev","onAdd","onRemove","ptr","part","filterTypes","parentAlreadyChecked","found","lookupEnum","lookupService","Service_","Enum_","_handleAdd","_handleRemove","setParsedOption","propName","opt","find","newValue","setProperty","newOpt","Root_","fieldNames","addFieldsToParent","decorateOneOf","oneOfDecorator","oneofName","oneOfGetter","oneOfSetter","keepCase","base10Re","base10NegRe","base16Re","base16NegRe","base8Re","base8NegRe","nameRe","typeRefRe","fqTypeRefRe","preferTrailingComment","tn","alternateCommentMode","peek","skip","cmnt","pkg","imports","weakImports","isProto3","applyCase","illegal","insideTryCatch","line","readString","readValue","acceptTypeRef","parseNumber","readRanges","acceptStrings","parseId","acceptNegative","parsePackage","parseImport","whichImports","parseSyntax","parseCommon","parseOption","parseType","parseEnum","parseService","parseExtension","ifBlock","fnIf","fnElse","trailingLine","parseType_block","parseMapField","parseField","parseOneOf","parseGroup","parseField_block","parseField_line","parseInlineOptions","lcFirst","parseGroup_block","parseMapField_block","parseMapField_line","parseOneOf_block","parseEnum_block","parseEnumValue","dummy","parseEnumValue_block","parseEnumValue_line","isCustom","optionValue","parseOptionValue","objectResult","lastValue","prevValue","simpleValue","parseService_block","parseMethod","commentText","parseMethod_block","reference","parseExtension_block","package","LongBits","indexOutOfRange","writeLength","create_array","create_typed_array","create_buffer_setup","create_buffer","uint32","read_uint32_setup","read_uint32","int32","read_int32","sint32","read_sint32","readLongVarint","bits","read_bool","readFixed32_end","fixed32","read_fixed32","sfixed32","read_sfixed32","readFixed64","float","read_float","double","read_double","read_bytes","nativeBuffer","read_string","skipType","BufferReader_","int64","read_int64","uint64","read_uint64","sint64","read_sint64","zzDecode","fixed64","read_fixed64","sfixed64","read_sfixed64","read_string_buffer","utf8Slice","deferred","SYNC","sync","getBundledFileName","lastIndexOf","altname","parsed","queued","weak","isNode","exposeRe","tryHandleExtension","extendedType","sisterField","parse_","common_","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","rpcCallback","endedByRPC","inherited","rpcService","isReserved","delimRe","stringDoubleRe","stringSingleRe","setCommentRe","setCommentAltRe","setCommentSplitRe","whitespaceRe","unescapeRe","unescapeMap","unescape","lastCommentLine","stringDelim","subject","re","lastIndex","setComment","isLeading","lineEmpty","leading","lookback","commentOffset","lines","isDoubleSlashCommentLine","startOffset","endOffset","findEndOfLine","lineText","isComment","cursor","isDoc","isLeadingComment","delim","expected","actual","_fieldsById","_ctor","fieldsById","generateConstructor","ctorProperties","originalThis","encode_setup","fork","ldelim","decode_setup","verify_setup","typeDecorator","bake","safePropBackslashRe","safePropQuoteRe","camelCaseRe","decorateRoot","decorateEnumIndex","dst","setProp","zero","zzEncode","zeroHash","fromString","toLong","fromHash","hash","toHash","part0","part1","part2","window","isset","isSet","utf8Write","_Buffer_from","_Buffer_allocUnsafe","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","fromBits","src","newError","CustomError","ProtocolError","getOneOf","fieldMap","setOneOf","Buffer_from","Buffer_allocUnsafe","invalid","genVerifyValue","genVerifyKey","seenFirstField","oneofProp","googleApi","messageName","Op","State","tail","states","_push","writeByte","writeVarint32","VarintOp","write_uint32","write_int32","writeVarint64","write_sint32","write_uint64","write_sint64","write_bool","writeFixed32","write_fixed32","write_fixed64","write_float","write_double","writeBytes","writeBytes_set","writeBytes_for","write_bytes","write_string","BufferWriter_","writeBytesBuffer","writeBytesBuffer_set","writeBytesBuffer_copy","write_bytes_buffer","writeStringBuffer","write_string_buffer","copyProps","allocUnsafeSlow","SafeBuffer","encodingOrOffset","SlowBuffer","strEscapeSequencesRegExp","strEscape","insertSort","position","typedArrayPrototypeGetSymbolToStringTag","getPrototypeOf","Int8Array","isTypedArrayWithEntries","stringifyTypedArray","separator","maximumBreadth","whitespace","getCircularValueOption","circularValue","getBooleanOption","getPositiveIntegerOption","getItemCount","getUniqueReplacerSet","replacerArray","replacerSet","getStrictOption","strict","fail","bigint","deterministic","maximumDepth","stringifyFnReplacer","spacer","indentation","originalIndentation","maximumValuesToStringify","tmp","removedKeys","keyLength","maximumPropertiesToStringify","stringifyArrayReplacer","stringifyIndent","stringifySimple","isArrayish","belowFn","oldLimit","stackTraceLimit","dummyObject","v8Handler","prepareStackTrace","v8StackTrace","_createParsedCallSite","fileName","lineNumber","columnNumber","native","lineMatch","isNative","methodStart","objectEnd","callSite","CallSite","property","strProperties","boolProperties","isEncoding","_normalizeEncoding","enc","normalizeEncoding","nenc","StringDecoder","nb","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","utf8CheckExtraBytes","total","warn","help","prompt","input","silly","emerg","alert","crit","warning","notice","for","LegacyTransportStream","TransportStream","handleExceptions","_deprecated","transportError","__winstonError","silent","exception","_nop","_writev","chunks","_accept","highWaterMark","handleRejections","logv","errState","transformed","infos","createErrorType","Base","getMessage","NodeError","oneOf","thing","search","this_len","determiner","objectKeys","allowHalfOpen","onend","getBuffer","onEndNT","ReadableState","EE","EElistenerCount","Stream","OurUint8Array","_uint8ArrayToBuffer","_isUint8Array","debugUtil","debuglog","BufferList","destroyImpl","_require","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","createReadableStreamAsyncIterator","errorOrDestroy","kProxyEvents","prependListener","event","_events","isDuplex","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","_undestroy","undestroy","skipChunkCheck","readableAddChunk","addToFront","onEofChunk","er","chunkInvalid","addChunk","maybeReadMore","emitReadable","isPaused","setEncoding","content","MAX_HWM","computeNewHighWaterMark","howMuchToRead","nOrig","endReadable","doRead","fromList","emitReadable_","flow","maybeReadMore_","dest","pipeOpts","doEnd","endFn","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanup","ondrain","pipeOnDrain","cleanedUp","onclose","onfinish","onerror","ondata","needDrain","pipeOnDrainFunctionResult","dests","ev","listenerCount","nReadingNextTick","addListener","updateReadableListening","resume_","_this","methodWrap","methodWrapReturnFunction","_fromList","consume","endReadableNT","wState","finished","iterable","xs","WriteReq","CorkedRequest","onCorkedFinish","WritableState","internalUtil","ERR_MULTIPLE_CALLBACK","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writecb","writelen","bufferedRequest","lastBufferedRequest","pendingcb","prefinished","errorEmitted","bufferedRequestCount","corkedRequestsFree","writableStateBufferGetter","realHasInstance","hasInstance","writev","final","writeAfterEnd","validChunk","isBuf","writeOrBuffer","cork","uncork","clearBuffer","setDefaultEncoding","decodeChunk","newChunk","last","doWrite","onwriteError","finishMaybe","onwriteStateUpdate","needFinish","afterWrite","onwriteDrain","holder","allBuffers","endWritable","callFinal","prefinish","need","rState","corkReq","_Object$setPrototypeO","_defineProperty","_toPropertyKey","_toPrimitive","hint","prim","toPrimitive","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","wrapForNext","lastPromise","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","_return","_this2","_Object$create","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","getOwnPropertyDescriptors","_classCallCheck","Constructor","_defineProperties","props","_createClass","protoProps","staticProps","_require2","copyBuffer","hasStrings","_getString","_getBuffer","customInspect","readableDestroyed","writableDestroyed","emitErrorNT","emitErrorAndCloseNT","emitCloseNT","ERR_STREAM_PREMATURE_CLOSE","_len","_key","isRequest","setHeader","abort","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","asyncGeneratorStep","_next","_throw","_asyncToGenerator","_next2","_yield$iterator$next","ERR_INVALID_OPT_VALUE","highWaterMarkFrom","duplexKey","hwm","logform","transports","createLogger","Logger","ExceptionHandler","RejectionHandler","Container","Transport","loggers","defaultLogger","exceptions","rejections","exceptionHandlers","rejectionHandlers","deprecated","forFunctions","forProperties","useFormat","syslog","existing","_delete","_removeLogger","isLevelEnabledFunctionName","DerivedLogger","_addDefaultMeta","isLevelEnabled","asyncForEach","stackTrace","ExceptionStream","handle","_addHandler","catcher","_uncaughtException","unhandle","getAllInfo","date","getProcessInfo","getOsInfo","getTrace","uid","getuid","gid","getgid","cwd","execPath","memoryUsage","loadavg","uptime","site","column","getColumnNumber","getFileName","function","getFunctionName","getLineNumber","getMethodName","_getExceptionHandlers","doExit","exitOnError","gracefulExit","_exiting","exit","onDone","_ending","Transform","Profiler","defaultRequestMetadata","infoClone","defaultMeta","emitErrs","formatters","padLevels","rewriters","profilers","givenLevelValue","getLevelValue","configuredLevelValue","transportLevelValue","_onEvent","setLevels","query","queryObject","queryTransport","formatQuery","formatResults","addResults","streams","_streams","profile","time","timeEnd","durationMs","unhandleExceptions","transportEvent","RejectionStream","_unhandledRejection","rejection","_getRejectionHandlers","buff","row","fd","Console","stderrLevels","_stringArrayToSet","consoleWarnLevels","eol","EOL","setMaxListeners","_stderr","_stdout","strArray","errMsg","el","asyncSeries","PassThrough","tailFile","File","throwIf","_stream","_onError","dirname","_basename","basename","_dest","_setupStream","maxsize","rotationFormat","zippedArchive","maxFiles","tailable","lazy","_pendingSize","_created","_drain","_opening","_fileExist","_createLogDirIfNotExist","finishIfEnding","_rotate","_needsNewFile","logged","_endStream","_rotateFile","rotatedWhileOpening","written","normalizeQuery","createReadStream","order","reverse","attempt","check","rows","until","stat","_createStream","eventNames","_getFile","fullpath","_incFile","_cleanupStream","createWriteStream","bytesWritten","ext","extname","_compressFile","_checkMaxFilesIncrementing","_checkMaxFilesTailable","isRotation","oldest","isOldest","isZipped","filePath","unlink","tmppath","exists","rename","F_OK","createGzip","inp","dirPath","existsSync","mkdirSync","recursive","https","Http","ssl","auth","agent","batch","batchInterval","batchCount","batchOptions","batchTimeoutID","batchCallback","_request","_doBatch","_doRequest","me","_doBatchRequest","batchOptionsCopy","bearer","Authorization","isObjectMode","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needTransform","writeencoding","flush","_flush","err2","ERR_MISSING_ARGS","destroyer","popCallback","pipeline","destroys","READABLE_STREAM","__WEBPACK_EXTERNAL_createRequire","url","wasm","WebAssembly","Instance","Module","__isLong__","isLong","ctz32","clz32","INT_CACHE","UINT_CACHE","fromInt","cachedObj","cache","UZERO","ZERO","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","pow_dbl","radix","radixToPower","power","mul","fromValue","TWO_PWR_16_DBL","TWO_PWR_24_DBL","TWO_PWR_24","ONE","UONE","NEG_ONE","LongPrototype","toInt","isZero","isNegative","eq","radixLong","div","rem1","sub","remDiv","intval","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","bit","eqz","isPositive","isOdd","isEven","notEquals","neq","ne","lessThan","lt","lessThanOrEqual","lte","greaterThan","gt","greaterThanOrEqual","gte","ge","compare","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","b00","c48","c32","c16","c00","subtract","subtrahend","multiply","divide","divisor","approx","halfThis","shr","shl","toUnsigned","shru","log2","approxRes","approxRem","modulo","countLeadingZeros","clz","countTrailingZeros","ctz","and","or","xor","shiftLeft","numBits","shiftRight","shiftRightUnsigned","shr_u","rotateLeft","rotl","rotateRight","rotr","toSigned","toBytes","toBytesLE","toBytesBE","fromBytes","fromBytesLE","fromBytesBE","_default","amd","__webpack_module_cache__","moduleId","cachedModule","threw","__webpack_modules__","definition","pathname","ANSI_BACKGROUND_OFFSET","wrapAnsi16","wrapAnsi256","wrapAnsi16m","overline","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgColor","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","modifierNames","foregroundColorNames","backgroundColorNames","assembleStyles","groupName","styleName","ansi16m","rgbToAnsi256","hexToRgb","hexToAnsi256","ansi256ToAnsi","remainder","rgbToAnsi","hexToAnsi","ansi_styles","external_node_process_namespaceObject","external_node_os_namespaceObject","external_node_tty_namespaceObject","globalThis","Deno","terminatorPosition","flagForceColor","envForceColor","_supportsColor","haveStream","streamIsTTY","sniffFlags","noFlagForceColor","COLORTERM","createSupportsColor","isatty","supports_color","stringReplaceAll","substringLength","endIndex","returnValue","stringEncaseCRLFWithFirstIndex","postfix","gotCR","stdoutColor","stderrColor","GENERATOR","STYLER","IS_EMPTY","levelMapping","source_styles","applyOptions","colorLevel","Chalk","chalkFactory","chalk","strings","createChalk","createBuilder","createStyler","visible","getModelAnsi","arguments_","usedModels","styler","bgModel","openAll","closeAll","_styler","_isEmpty","lfIndex","chalkStderr","customSimpleFormat","colorizeText","winston","printf","formattedLevel","formatLevel","getLevelColor","initLogger","combine","external_crypto_namespaceObject","ErrInvalidHmacKeyID","ErrInvalidHmacSignature","ErrMissingHmacSignature","ErrMissingMetadata","ErrInternal","ErrInvalidMetadata","ErrUnauthenticated","isEmptyObject","HMAC","buildMessage","methodKey","requestKey","requestString","generateSignature","secretKey","mac","createHmac","update","digest","verifySignature","getSecret","keyId","signature","secret","expectedSignature","timingSafeEqual","external_buffer_","client_log","ClientInterceptorImpl","hmacKeyId","hmacSecret","hmac","Interceptor","savedMetadata","savedListener","startNext","encodeErr","signErr","WithInterceptor","NewClientInterceptor","server_log","ServerInterceptorImpl","ServerInterceptor","methodDescriptor","authListener","mdNext","msgNext","NewServerInterceptor"],"sources":[".././node_modules/@dabh/diagnostics/adapters/index.js",".././node_modules/@dabh/diagnostics/adapters/process.env.js",".././node_modules/@dabh/diagnostics/diagnostics.js",".././node_modules/@dabh/diagnostics/logger/console.js",".././node_modules/@dabh/diagnostics/modifiers/namespace-ansi.js",".././node_modules/@dabh/diagnostics/node/development.js",".././node_modules/@dabh/diagnostics/node/index.js",".././node_modules/@dabh/diagnostics/node/production.js",".././node_modules/@grpc/grpc-js/build/src/admin.js",".././node_modules/@grpc/grpc-js/build/src/backoff-timeout.js",".././node_modules/@grpc/grpc-js/build/src/call-credentials.js",".././node_modules/@grpc/grpc-js/build/src/call-interface.js",".././node_modules/@grpc/grpc-js/build/src/call-number.js",".././node_modules/@grpc/grpc-js/build/src/call.js",".././node_modules/@grpc/grpc-js/build/src/channel-credentials.js",".././node_modules/@grpc/grpc-js/build/src/channel-options.js",".././node_modules/@grpc/grpc-js/build/src/channel.js",".././node_modules/@grpc/grpc-js/build/src/channelz.js",".././node_modules/@grpc/grpc-js/build/src/client-interceptors.js",".././node_modules/@grpc/grpc-js/build/src/client.js",".././node_modules/@grpc/grpc-js/build/src/compression-algorithms.js",".././node_modules/@grpc/grpc-js/build/src/compression-filter.js",".././node_modules/@grpc/grpc-js/build/src/connectivity-state.js",".././node_modules/@grpc/grpc-js/build/src/constants.js",".././node_modules/@grpc/grpc-js/build/src/control-plane-status.js",".././node_modules/@grpc/grpc-js/build/src/deadline.js",".././node_modules/@grpc/grpc-js/build/src/duration.js",".././node_modules/@grpc/grpc-js/build/src/error.js",".././node_modules/@grpc/grpc-js/build/src/experimental.js",".././node_modules/@grpc/grpc-js/build/src/filter-stack.js",".././node_modules/@grpc/grpc-js/build/src/filter.js",".././node_modules/@grpc/grpc-js/build/src/http_proxy.js",".././node_modules/@grpc/grpc-js/build/src/index.js",".././node_modules/@grpc/grpc-js/build/src/internal-channel.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-child-handler.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-outlier-detection.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-pick-first.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer-round-robin.js",".././node_modules/@grpc/grpc-js/build/src/load-balancer.js",".././node_modules/@grpc/grpc-js/build/src/load-balancing-call.js",".././node_modules/@grpc/grpc-js/build/src/logging.js",".././node_modules/@grpc/grpc-js/build/src/make-client.js",".././node_modules/@grpc/grpc-js/build/src/max-message-size-filter.js",".././node_modules/@grpc/grpc-js/build/src/metadata.js",".././node_modules/@grpc/grpc-js/build/src/picker.js",".././node_modules/@grpc/grpc-js/build/src/resolver-dns.js",".././node_modules/@grpc/grpc-js/build/src/resolver-ip.js",".././node_modules/@grpc/grpc-js/build/src/resolver-uds.js",".././node_modules/@grpc/grpc-js/build/src/resolver.js",".././node_modules/@grpc/grpc-js/build/src/resolving-call.js",".././node_modules/@grpc/grpc-js/build/src/resolving-load-balancer.js",".././node_modules/@grpc/grpc-js/build/src/retrying-call.js",".././node_modules/@grpc/grpc-js/build/src/server-call.js",".././node_modules/@grpc/grpc-js/build/src/server-credentials.js",".././node_modules/@grpc/grpc-js/build/src/server-interceptors.js",".././node_modules/@grpc/grpc-js/build/src/server.js",".././node_modules/@grpc/grpc-js/build/src/service-config.js",".././node_modules/@grpc/grpc-js/build/src/status-builder.js",".././node_modules/@grpc/grpc-js/build/src/stream-decoder.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-address.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-call.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-interface.js",".././node_modules/@grpc/grpc-js/build/src/subchannel-pool.js",".././node_modules/@grpc/grpc-js/build/src/subchannel.js",".././node_modules/@grpc/grpc-js/build/src/tls-helpers.js",".././node_modules/@grpc/grpc-js/build/src/transport.js",".././node_modules/@grpc/grpc-js/build/src/uri-parser.js",".././node_modules/@grpc/proto-loader/build/src/index.js",".././node_modules/@grpc/proto-loader/build/src/util.js",".././node_modules/@protobufjs/aspromise/index.js",".././node_modules/@protobufjs/base64/index.js",".././node_modules/@protobufjs/codegen/index.js",".././node_modules/@protobufjs/eventemitter/index.js",".././node_modules/@protobufjs/fetch/index.js",".././node_modules/@protobufjs/float/index.js",".././node_modules/@protobufjs/inquire/index.js",".././node_modules/@protobufjs/path/index.js",".././node_modules/@protobufjs/pool/index.js",".././node_modules/@protobufjs/utf8/index.js",".././node_modules/async/asyncify.js",".././node_modules/async/eachOf.js",".././node_modules/async/eachOfLimit.js",".././node_modules/async/eachOfSeries.js",".././node_modules/async/forEach.js",".././node_modules/async/internal/asyncEachOfLimit.js",".././node_modules/async/internal/awaitify.js",".././node_modules/async/internal/breakLoop.js",".././node_modules/async/internal/eachOfLimit.js",".././node_modules/async/internal/getIterator.js",".././node_modules/async/internal/initialParams.js",".././node_modules/async/internal/isArrayLike.js",".././node_modules/async/internal/iterator.js",".././node_modules/async/internal/once.js",".././node_modules/async/internal/onlyOnce.js",".././node_modules/async/internal/parallel.js",".././node_modules/async/internal/setImmediate.js",".././node_modules/async/internal/withoutIndex.js",".././node_modules/async/internal/wrapAsync.js",".././node_modules/async/series.js",".././node_modules/color-convert/conversions.js",".././node_modules/color-convert/index.js",".././node_modules/color-convert/route.js",".././node_modules/color-name/index.js",".././node_modules/color-string/index.js",".././node_modules/color/index.js",".././node_modules/colorspace/index.js",".././node_modules/enabled/index.js",".././node_modules/fecha/lib/fecha.umd.js",".././node_modules/fn.name/index.js",".././node_modules/inherits/inherits.js",".././node_modules/inherits/inherits_browser.js",".././node_modules/is-stream/index.js",".././node_modules/kuler/index.js",".././node_modules/lodash.camelcase/index.js",".././node_modules/logform/align.js",".././node_modules/logform/cli.js",".././node_modules/logform/colorize.js",".././node_modules/logform/combine.js",".././node_modules/logform/errors.js",".././node_modules/logform/format.js",".././node_modules/logform/index.js",".././node_modules/logform/json.js",".././node_modules/logform/label.js",".././node_modules/logform/levels.js",".././node_modules/logform/logstash.js",".././node_modules/logform/metadata.js",".././node_modules/logform/ms.js",".././node_modules/logform/node_modules/@colors/colors/lib/colors.js",".././node_modules/logform/node_modules/@colors/colors/lib/custom/trap.js",".././node_modules/logform/node_modules/@colors/colors/lib/custom/zalgo.js",".././node_modules/logform/node_modules/@colors/colors/lib/maps/america.js",".././node_modules/logform/node_modules/@colors/colors/lib/maps/rainbow.js",".././node_modules/logform/node_modules/@colors/colors/lib/maps/random.js",".././node_modules/logform/node_modules/@colors/colors/lib/maps/zebra.js",".././node_modules/logform/node_modules/@colors/colors/lib/styles.js",".././node_modules/logform/node_modules/@colors/colors/lib/system/has-flag.js",".././node_modules/logform/node_modules/@colors/colors/lib/system/supports-colors.js",".././node_modules/logform/node_modules/@colors/colors/safe.js",".././node_modules/logform/pad-levels.js",".././node_modules/logform/pretty-print.js",".././node_modules/logform/printf.js",".././node_modules/logform/simple.js",".././node_modules/logform/splat.js",".././node_modules/logform/timestamp.js",".././node_modules/logform/uncolorize.js",".././node_modules/ms/index.js",".././node_modules/one-time/index.js",".././node_modules/protobufjs/ext/descriptor/index.js",".././node_modules/protobufjs/index.js",".././node_modules/protobufjs/src/common.js",".././node_modules/protobufjs/src/converter.js",".././node_modules/protobufjs/src/decoder.js",".././node_modules/protobufjs/src/encoder.js",".././node_modules/protobufjs/src/enum.js",".././node_modules/protobufjs/src/field.js",".././node_modules/protobufjs/src/index-light.js",".././node_modules/protobufjs/src/index-minimal.js",".././node_modules/protobufjs/src/index.js",".././node_modules/protobufjs/src/mapfield.js",".././node_modules/protobufjs/src/message.js",".././node_modules/protobufjs/src/method.js",".././node_modules/protobufjs/src/namespace.js",".././node_modules/protobufjs/src/object.js",".././node_modules/protobufjs/src/oneof.js",".././node_modules/protobufjs/src/parse.js",".././node_modules/protobufjs/src/reader.js",".././node_modules/protobufjs/src/reader_buffer.js",".././node_modules/protobufjs/src/root.js",".././node_modules/protobufjs/src/roots.js",".././node_modules/protobufjs/src/rpc.js",".././node_modules/protobufjs/src/rpc/service.js",".././node_modules/protobufjs/src/service.js",".././node_modules/protobufjs/src/tokenize.js",".././node_modules/protobufjs/src/type.js",".././node_modules/protobufjs/src/types.js",".././node_modules/protobufjs/src/util.js",".././node_modules/protobufjs/src/util/longbits.js",".././node_modules/protobufjs/src/util/minimal.js",".././node_modules/protobufjs/src/verifier.js",".././node_modules/protobufjs/src/wrappers.js",".././node_modules/protobufjs/src/writer.js",".././node_modules/protobufjs/src/writer_buffer.js",".././node_modules/safe-buffer/index.js",".././node_modules/safe-stable-stringify/index.js",".././node_modules/simple-swizzle/index.js",".././node_modules/simple-swizzle/node_modules/is-arrayish/index.js",".././node_modules/stack-trace/lib/stack-trace.js",".././node_modules/string_decoder/lib/string_decoder.js",".././node_modules/text-hex/index.js",".././node_modules/triple-beam/config/cli.js",".././node_modules/triple-beam/config/index.js",".././node_modules/triple-beam/config/npm.js",".././node_modules/triple-beam/config/syslog.js",".././node_modules/triple-beam/index.js",".././node_modules/util-deprecate/node.js",".././node_modules/winston-transport/index.js",".././node_modules/winston-transport/legacy.js",".././node_modules/winston-transport/modern.js",".././node_modules/winston-transport/node_modules/readable-stream/errors.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/_stream_duplex.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/_stream_readable.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/async_iterator.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/buffer_list.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/destroy.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/end-of-stream.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/from.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/state.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/stream.js",".././node_modules/winston/lib/winston.js",".././node_modules/winston/lib/winston/common.js",".././node_modules/winston/lib/winston/config/index.js",".././node_modules/winston/lib/winston/container.js",".././node_modules/winston/lib/winston/create-logger.js",".././node_modules/winston/lib/winston/exception-handler.js",".././node_modules/winston/lib/winston/exception-stream.js",".././node_modules/winston/lib/winston/logger.js",".././node_modules/winston/lib/winston/profiler.js",".././node_modules/winston/lib/winston/rejection-handler.js",".././node_modules/winston/lib/winston/rejection-stream.js",".././node_modules/winston/lib/winston/tail-file.js",".././node_modules/winston/lib/winston/transports/console.js",".././node_modules/winston/lib/winston/transports/file.js",".././node_modules/winston/lib/winston/transports/http.js",".././node_modules/winston/lib/winston/transports/index.js",".././node_modules/winston/lib/winston/transports/stream.js",".././node_modules/winston/node_modules/readable-stream/errors.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_duplex.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_passthrough.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_readable.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_transform.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/async_iterator.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/buffer_list.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/destroy.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/end-of-stream.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/from.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/pipeline.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/state.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/stream.js",".././node_modules/winston/node_modules/readable-stream/readable.js","../external node-commonjs \"buffer\"","../external node-commonjs \"dns\"","../external node-commonjs \"events\"","../external node-commonjs \"fs\"","../external node-commonjs \"http\"","../external node-commonjs \"http2\"","../external node-commonjs \"https\"","../external node-commonjs \"net\"","../external node-commonjs \"os\"","../external node-commonjs \"path\"","../external node-commonjs \"process\"","../external node-commonjs \"stream\"","../external node-commonjs \"string_decoder\"","../external node-commonjs \"tls\"","../external node-commonjs \"tty\"","../external node-commonjs \"url\"","../external node-commonjs \"util\"","../external node-commonjs \"zlib\"",".././node_modules/long/umd/index.js","../webpack/bootstrap","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/compat",".././node_modules/chalk/source/vendor/ansi-styles/index.js","../external node-commonjs \"node:process\"","../external node-commonjs \"node:os\"","../external node-commonjs \"node:tty\"",".././node_modules/chalk/source/vendor/supports-color/index.js",".././node_modules/chalk/source/utilities.js",".././node_modules/chalk/source/index.js",".././src/lib/logger/index.ts","../external node-commonjs \"crypto\"",".././src/lib/hmac/status.ts",".././src/lib/util.ts",".././src/lib/hmac/index.ts",".././src/client/index.ts",".././src/server/index.ts"],"sourcesContent":["var enabled = require('enabled');\n\n/**\n * Creates a new Adapter.\n *\n * @param {Function} fn Function that returns the value.\n * @returns {Function} The adapter logic.\n * @public\n */\nmodule.exports = function create(fn) {\n return function adapter(namespace) {\n try {\n return enabled(namespace, fn());\n } catch (e) { /* Any failure means that we found nothing */ }\n\n return false;\n };\n}\n","var adapter = require('./');\n\n/**\n * Extracts the values from process.env.\n *\n * @type {Function}\n * @public\n */\nmodule.exports = adapter(function processenv() {\n return process.env.DEBUG || process.env.DIAGNOSTICS;\n});\n","/**\n * Contains all configured adapters for the given environment.\n *\n * @type {Array}\n * @public\n */\nvar adapters = [];\n\n/**\n * Contains all modifier functions.\n *\n * @typs {Array}\n * @public\n */\nvar modifiers = [];\n\n/**\n * Our default logger.\n *\n * @public\n */\nvar logger = function devnull() {};\n\n/**\n * Register a new adapter that will used to find environments.\n *\n * @param {Function} adapter A function that will return the possible env.\n * @returns {Boolean} Indication of a successful add.\n * @public\n */\nfunction use(adapter) {\n if (~adapters.indexOf(adapter)) return false;\n\n adapters.push(adapter);\n return true;\n}\n\n/**\n * Assign a new log method.\n *\n * @param {Function} custom The log method.\n * @public\n */\nfunction set(custom) {\n logger = custom;\n}\n\n/**\n * Check if the namespace is allowed by any of our adapters.\n *\n * @param {String} namespace The namespace that needs to be enabled\n * @returns {Boolean|Promise} Indication if the namespace is enabled by our adapters.\n * @public\n */\nfunction enabled(namespace) {\n var async = [];\n\n for (var i = 0; i < adapters.length; i++) {\n if (adapters[i].async) {\n async.push(adapters[i]);\n continue;\n }\n\n if (adapters[i](namespace)) return true;\n }\n\n if (!async.length) return false;\n\n //\n // Now that we know that we Async functions, we know we run in an ES6\n // environment and can use all the API's that they offer, in this case\n // we want to return a Promise so that we can `await` in React-Native\n // for an async adapter.\n //\n return new Promise(function pinky(resolve) {\n Promise.all(\n async.map(function prebind(fn) {\n return fn(namespace);\n })\n ).then(function resolved(values) {\n resolve(values.some(Boolean));\n });\n });\n}\n\n/**\n * Add a new message modifier to the debugger.\n *\n * @param {Function} fn Modification function.\n * @returns {Boolean} Indication of a successful add.\n * @public\n */\nfunction modify(fn) {\n if (~modifiers.indexOf(fn)) return false;\n\n modifiers.push(fn);\n return true;\n}\n\n/**\n * Write data to the supplied logger.\n *\n * @param {Object} meta Meta information about the log.\n * @param {Array} args Arguments for console.log.\n * @public\n */\nfunction write() {\n logger.apply(logger, arguments);\n}\n\n/**\n * Process the message with the modifiers.\n *\n * @param {Mixed} message The message to be transformed by modifers.\n * @returns {String} Transformed message.\n * @public\n */\nfunction process(message) {\n for (var i = 0; i < modifiers.length; i++) {\n message = modifiers[i].apply(modifiers[i], arguments);\n }\n\n return message;\n}\n\n/**\n * Introduce options to the logger function.\n *\n * @param {Function} fn Calback function.\n * @param {Object} options Properties to introduce on fn.\n * @returns {Function} The passed function\n * @public\n */\nfunction introduce(fn, options) {\n var has = Object.prototype.hasOwnProperty;\n\n for (var key in options) {\n if (has.call(options, key)) {\n fn[key] = options[key];\n }\n }\n\n return fn;\n}\n\n/**\n * Nope, we're not allowed to write messages.\n *\n * @returns {Boolean} false\n * @public\n */\nfunction nope(options) {\n options.enabled = false;\n options.modify = modify;\n options.set = set;\n options.use = use;\n\n return introduce(function diagnopes() {\n return false;\n }, options);\n}\n\n/**\n * Yep, we're allowed to write debug messages.\n *\n * @param {Object} options The options for the process.\n * @returns {Function} The function that does the logging.\n * @public\n */\nfunction yep(options) {\n /**\n * The function that receives the actual debug information.\n *\n * @returns {Boolean} indication that we're logging.\n * @public\n */\n function diagnostics() {\n var args = Array.prototype.slice.call(arguments, 0);\n\n write.call(write, options, process(args, options));\n return true;\n }\n\n options.enabled = true;\n options.modify = modify;\n options.set = set;\n options.use = use;\n\n return introduce(diagnostics, options);\n}\n\n/**\n * Simple helper function to introduce various of helper methods to our given\n * diagnostics function.\n *\n * @param {Function} diagnostics The diagnostics function.\n * @returns {Function} diagnostics\n * @public\n */\nmodule.exports = function create(diagnostics) {\n diagnostics.introduce = introduce;\n diagnostics.enabled = enabled;\n diagnostics.process = process;\n diagnostics.modify = modify;\n diagnostics.write = write;\n diagnostics.nope = nope;\n diagnostics.yep = yep;\n diagnostics.set = set;\n diagnostics.use = use;\n\n return diagnostics;\n}\n","/**\n * An idiot proof logger to be used as default. We've wrapped it in a try/catch\n * statement to ensure the environments without the `console` API do not crash\n * as well as an additional fix for ancient browsers like IE8 where the\n * `console.log` API doesn't have an `apply`, so we need to use the Function's\n * apply functionality to apply the arguments.\n *\n * @param {Object} meta Options of the logger.\n * @param {Array} messages The actuall message that needs to be logged.\n * @public\n */\nmodule.exports = function (meta, messages) {\n //\n // So yea. IE8 doesn't have an apply so we need a work around to puke the\n // arguments in place.\n //\n try { Function.prototype.apply.call(console.log, console, messages); }\n catch (e) {}\n}\n","var colorspace = require('colorspace');\nvar kuler = require('kuler');\n\n/**\n * Prefix the messages with a colored namespace.\n *\n * @param {Array} args The messages array that is getting written.\n * @param {Object} options Options for diagnostics.\n * @returns {Array} Altered messages array.\n * @public\n */\nmodule.exports = function ansiModifier(args, options) {\n var namespace = options.namespace;\n var ansi = options.colors !== false\n ? kuler(namespace +':', colorspace(namespace))\n : namespace +':';\n\n args[0] = ansi +' '+ args[0];\n return args;\n};\n","var create = require('../diagnostics');\nvar tty = require('tty').isatty(1);\n\n/**\n * Create a new diagnostics logger.\n *\n * @param {String} namespace The namespace it should enable.\n * @param {Object} options Additional options.\n * @returns {Function} The logger.\n * @public\n */\nvar diagnostics = create(function dev(namespace, options) {\n options = options || {};\n options.colors = 'colors' in options ? options.colors : tty;\n options.namespace = namespace;\n options.prod = false;\n options.dev = true;\n\n if (!dev.enabled(namespace) && !(options.force || dev.force)) {\n return dev.nope(options);\n }\n \n return dev.yep(options);\n});\n\n//\n// Configure the logger for the given environment.\n//\ndiagnostics.modify(require('../modifiers/namespace-ansi'));\ndiagnostics.use(require('../adapters/process.env'));\ndiagnostics.set(require('../logger/console'));\n\n//\n// Expose the diagnostics logger.\n//\nmodule.exports = diagnostics;\n","//\n// Select the correct build version depending on the environment.\n//\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./production.js');\n} else {\n module.exports = require('./development.js');\n}\n","var create = require('../diagnostics');\n\n/**\n * Create a new diagnostics logger.\n *\n * @param {String} namespace The namespace it should enable.\n * @param {Object} options Additional options.\n * @returns {Function} The logger.\n * @public\n */\nvar diagnostics = create(function prod(namespace, options) {\n options = options || {};\n options.namespace = namespace;\n options.prod = true;\n options.dev = false;\n\n if (!(options.force || prod.force)) return prod.nope(options);\n return prod.yep(options);\n});\n\n//\n// Expose the diagnostics logger.\n//\nmodule.exports = diagnostics;\n","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addAdminServicesToServer = exports.registerAdminService = void 0;\nconst registeredAdminServices = [];\nfunction registerAdminService(getServiceDefinition, getHandlers) {\n registeredAdminServices.push({ getServiceDefinition, getHandlers });\n}\nexports.registerAdminService = registerAdminService;\nfunction addAdminServicesToServer(server) {\n for (const { getServiceDefinition, getHandlers } of registeredAdminServices) {\n server.addService(getServiceDefinition(), getHandlers());\n }\n}\nexports.addAdminServicesToServer = addAdminServicesToServer;\n//# sourceMappingURL=admin.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BackoffTimeout = void 0;\nconst INITIAL_BACKOFF_MS = 1000;\nconst BACKOFF_MULTIPLIER = 1.6;\nconst MAX_BACKOFF_MS = 120000;\nconst BACKOFF_JITTER = 0.2;\n/**\n * Get a number uniformly at random in the range [min, max)\n * @param min\n * @param max\n */\nfunction uniformRandom(min, max) {\n return Math.random() * (max - min) + min;\n}\nclass BackoffTimeout {\n constructor(callback, options) {\n this.callback = callback;\n /**\n * The delay time at the start, and after each reset.\n */\n this.initialDelay = INITIAL_BACKOFF_MS;\n /**\n * The exponential backoff multiplier.\n */\n this.multiplier = BACKOFF_MULTIPLIER;\n /**\n * The maximum delay time\n */\n this.maxDelay = MAX_BACKOFF_MS;\n /**\n * The maximum fraction by which the delay time can randomly vary after\n * applying the multiplier.\n */\n this.jitter = BACKOFF_JITTER;\n /**\n * Indicates whether the timer is currently running.\n */\n this.running = false;\n /**\n * Indicates whether the timer should keep the Node process running if no\n * other async operation is doing so.\n */\n this.hasRef = true;\n /**\n * The time that the currently running timer was started. Only valid if\n * running is true.\n */\n this.startTime = new Date();\n /**\n * The approximate time that the currently running timer will end. Only valid\n * if running is true.\n */\n this.endTime = new Date();\n if (options) {\n if (options.initialDelay) {\n this.initialDelay = options.initialDelay;\n }\n if (options.multiplier) {\n this.multiplier = options.multiplier;\n }\n if (options.jitter) {\n this.jitter = options.jitter;\n }\n if (options.maxDelay) {\n this.maxDelay = options.maxDelay;\n }\n }\n this.nextDelay = this.initialDelay;\n this.timerId = setTimeout(() => { }, 0);\n clearTimeout(this.timerId);\n }\n runTimer(delay) {\n var _a, _b;\n this.endTime = this.startTime;\n this.endTime.setMilliseconds(this.endTime.getMilliseconds() + this.nextDelay);\n clearTimeout(this.timerId);\n this.timerId = setTimeout(() => {\n this.callback();\n this.running = false;\n }, delay);\n if (!this.hasRef) {\n (_b = (_a = this.timerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n /**\n * Call the callback after the current amount of delay time\n */\n runOnce() {\n this.running = true;\n this.startTime = new Date();\n this.runTimer(this.nextDelay);\n const nextBackoff = Math.min(this.nextDelay * this.multiplier, this.maxDelay);\n const jitterMagnitude = nextBackoff * this.jitter;\n this.nextDelay =\n nextBackoff + uniformRandom(-jitterMagnitude, jitterMagnitude);\n }\n /**\n * Stop the timer. The callback will not be called until `runOnce` is called\n * again.\n */\n stop() {\n clearTimeout(this.timerId);\n this.running = false;\n }\n /**\n * Reset the delay time to its initial value. If the timer is still running,\n * retroactively apply that reset to the current timer.\n */\n reset() {\n this.nextDelay = this.initialDelay;\n if (this.running) {\n const now = new Date();\n const newEndTime = this.startTime;\n newEndTime.setMilliseconds(newEndTime.getMilliseconds() + this.nextDelay);\n clearTimeout(this.timerId);\n if (now < newEndTime) {\n this.runTimer(newEndTime.getTime() - now.getTime());\n }\n else {\n this.running = false;\n }\n }\n }\n /**\n * Check whether the timer is currently running.\n */\n isRunning() {\n return this.running;\n }\n /**\n * Set that while the timer is running, it should keep the Node process\n * running.\n */\n ref() {\n var _a, _b;\n this.hasRef = true;\n (_b = (_a = this.timerId).ref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Set that while the timer is running, it should not keep the Node process\n * running.\n */\n unref() {\n var _a, _b;\n this.hasRef = false;\n (_b = (_a = this.timerId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Get the approximate timestamp of when the timer will fire. Only valid if\n * this.isRunning() is true.\n */\n getEndTime() {\n return this.endTime;\n }\n}\nexports.BackoffTimeout = BackoffTimeout;\n//# sourceMappingURL=backoff-timeout.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallCredentials = void 0;\nconst metadata_1 = require(\"./metadata\");\nfunction isCurrentOauth2Client(client) {\n return ('getRequestHeaders' in client &&\n typeof client.getRequestHeaders === 'function');\n}\n/**\n * A class that represents a generic method of adding authentication-related\n * metadata on a per-request basis.\n */\nclass CallCredentials {\n /**\n * Creates a new CallCredentials object from a given function that generates\n * Metadata objects.\n * @param metadataGenerator A function that accepts a set of options, and\n * generates a Metadata object based on these options, which is passed back\n * to the caller via a supplied (err, metadata) callback.\n */\n static createFromMetadataGenerator(metadataGenerator) {\n return new SingleCallCredentials(metadataGenerator);\n }\n /**\n * Create a gRPC credential from a Google credential object.\n * @param googleCredentials The authentication client to use.\n * @return The resulting CallCredentials object.\n */\n static createFromGoogleCredential(googleCredentials) {\n return CallCredentials.createFromMetadataGenerator((options, callback) => {\n let getHeaders;\n if (isCurrentOauth2Client(googleCredentials)) {\n getHeaders = googleCredentials.getRequestHeaders(options.service_url);\n }\n else {\n getHeaders = new Promise((resolve, reject) => {\n googleCredentials.getRequestMetadata(options.service_url, (err, headers) => {\n if (err) {\n reject(err);\n return;\n }\n if (!headers) {\n reject(new Error('Headers not set by metadata plugin'));\n return;\n }\n resolve(headers);\n });\n });\n }\n getHeaders.then(headers => {\n const metadata = new metadata_1.Metadata();\n for (const key of Object.keys(headers)) {\n metadata.add(key, headers[key]);\n }\n callback(null, metadata);\n }, err => {\n callback(err);\n });\n });\n }\n static createEmpty() {\n return new EmptyCallCredentials();\n }\n}\nexports.CallCredentials = CallCredentials;\nclass ComposedCallCredentials extends CallCredentials {\n constructor(creds) {\n super();\n this.creds = creds;\n }\n async generateMetadata(options) {\n const base = new metadata_1.Metadata();\n const generated = await Promise.all(this.creds.map(cred => cred.generateMetadata(options)));\n for (const gen of generated) {\n base.merge(gen);\n }\n return base;\n }\n compose(other) {\n return new ComposedCallCredentials(this.creds.concat([other]));\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ComposedCallCredentials) {\n return this.creds.every((value, index) => value._equals(other.creds[index]));\n }\n else {\n return false;\n }\n }\n}\nclass SingleCallCredentials extends CallCredentials {\n constructor(metadataGenerator) {\n super();\n this.metadataGenerator = metadataGenerator;\n }\n generateMetadata(options) {\n return new Promise((resolve, reject) => {\n this.metadataGenerator(options, (err, metadata) => {\n if (metadata !== undefined) {\n resolve(metadata);\n }\n else {\n reject(err);\n }\n });\n });\n }\n compose(other) {\n return new ComposedCallCredentials([this, other]);\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof SingleCallCredentials) {\n return this.metadataGenerator === other.metadataGenerator;\n }\n else {\n return false;\n }\n }\n}\nclass EmptyCallCredentials extends CallCredentials {\n generateMetadata(options) {\n return Promise.resolve(new metadata_1.Metadata());\n }\n compose(other) {\n return other;\n }\n _equals(other) {\n return other instanceof EmptyCallCredentials;\n }\n}\n//# sourceMappingURL=call-credentials.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InterceptingListenerImpl = exports.isInterceptingListener = void 0;\nfunction isInterceptingListener(listener) {\n return (listener.onReceiveMetadata !== undefined &&\n listener.onReceiveMetadata.length === 1);\n}\nexports.isInterceptingListener = isInterceptingListener;\nclass InterceptingListenerImpl {\n constructor(listener, nextListener) {\n this.listener = listener;\n this.nextListener = nextListener;\n this.processingMetadata = false;\n this.hasPendingMessage = false;\n this.processingMessage = false;\n this.pendingStatus = null;\n }\n processPendingMessage() {\n if (this.hasPendingMessage) {\n this.nextListener.onReceiveMessage(this.pendingMessage);\n this.pendingMessage = null;\n this.hasPendingMessage = false;\n }\n }\n processPendingStatus() {\n if (this.pendingStatus) {\n this.nextListener.onReceiveStatus(this.pendingStatus);\n }\n }\n onReceiveMetadata(metadata) {\n this.processingMetadata = true;\n this.listener.onReceiveMetadata(metadata, metadata => {\n this.processingMetadata = false;\n this.nextListener.onReceiveMetadata(metadata);\n this.processPendingMessage();\n this.processPendingStatus();\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n /* If this listener processes messages asynchronously, the last message may\n * be reordered with respect to the status */\n this.processingMessage = true;\n this.listener.onReceiveMessage(message, msg => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessage = msg;\n this.hasPendingMessage = true;\n }\n else {\n this.nextListener.onReceiveMessage(msg);\n this.processPendingStatus();\n }\n });\n }\n onReceiveStatus(status) {\n this.listener.onReceiveStatus(status, processedStatus => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingStatus = processedStatus;\n }\n else {\n this.nextListener.onReceiveStatus(processedStatus);\n }\n });\n }\n}\nexports.InterceptingListenerImpl = InterceptingListenerImpl;\n//# sourceMappingURL=call-interface.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNextCallNumber = void 0;\nlet nextCallNumber = 0;\nfunction getNextCallNumber() {\n return nextCallNumber++;\n}\nexports.getNextCallNumber = getNextCallNumber;\n//# sourceMappingURL=call-number.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientDuplexStreamImpl = exports.ClientWritableStreamImpl = exports.ClientReadableStreamImpl = exports.ClientUnaryCallImpl = exports.callErrorFromStatus = void 0;\nconst events_1 = require(\"events\");\nconst stream_1 = require(\"stream\");\nconst constants_1 = require(\"./constants\");\n/**\n * Construct a ServiceError from a StatusObject. This function exists primarily\n * as an attempt to make the error stack trace clearly communicate that the\n * error is not necessarily a problem in gRPC itself.\n * @param status\n */\nfunction callErrorFromStatus(status, callerStack) {\n const message = `${status.code} ${constants_1.Status[status.code]}: ${status.details}`;\n const error = new Error(message);\n const stack = `${error.stack}\\nfor call at\\n${callerStack}`;\n return Object.assign(new Error(message), status, { stack });\n}\nexports.callErrorFromStatus = callErrorFromStatus;\nclass ClientUnaryCallImpl extends events_1.EventEmitter {\n constructor() {\n super();\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n}\nexports.ClientUnaryCallImpl = ClientUnaryCallImpl;\nclass ClientReadableStreamImpl extends stream_1.Readable {\n constructor(deserialize) {\n super({ objectMode: true });\n this.deserialize = deserialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _read(_size) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.startRead();\n }\n}\nexports.ClientReadableStreamImpl = ClientReadableStreamImpl;\nclass ClientWritableStreamImpl extends stream_1.Writable {\n constructor(serialize) {\n super({ objectMode: true });\n this.serialize = serialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _write(chunk, encoding, cb) {\n var _a;\n const context = {\n callback: cb,\n };\n const flags = Number(encoding);\n if (!Number.isNaN(flags)) {\n context.flags = flags;\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.sendMessageWithContext(context, chunk);\n }\n _final(cb) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.halfClose();\n cb();\n }\n}\nexports.ClientWritableStreamImpl = ClientWritableStreamImpl;\nclass ClientDuplexStreamImpl extends stream_1.Duplex {\n constructor(serialize, deserialize) {\n super({ objectMode: true });\n this.serialize = serialize;\n this.deserialize = deserialize;\n }\n cancel() {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled on client');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.call) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : 'unknown';\n }\n _read(_size) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.startRead();\n }\n _write(chunk, encoding, cb) {\n var _a;\n const context = {\n callback: cb,\n };\n const flags = Number(encoding);\n if (!Number.isNaN(flags)) {\n context.flags = flags;\n }\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.sendMessageWithContext(context, chunk);\n }\n _final(cb) {\n var _a;\n (_a = this.call) === null || _a === void 0 ? void 0 : _a.halfClose();\n cb();\n }\n}\nexports.ClientDuplexStreamImpl = ClientDuplexStreamImpl;\n//# sourceMappingURL=call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChannelCredentials = void 0;\nconst tls_1 = require(\"tls\");\nconst call_credentials_1 = require(\"./call-credentials\");\nconst tls_helpers_1 = require(\"./tls-helpers\");\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction verifyIsBufferOrNull(obj, friendlyName) {\n if (obj && !(obj instanceof Buffer)) {\n throw new TypeError(`${friendlyName}, if provided, must be a Buffer.`);\n }\n}\n/**\n * A class that contains credentials for communicating over a channel, as well\n * as a set of per-call credentials, which are applied to every method call made\n * over a channel initialized with an instance of this class.\n */\nclass ChannelCredentials {\n constructor(callCredentials) {\n this.callCredentials = callCredentials || call_credentials_1.CallCredentials.createEmpty();\n }\n /**\n * Gets the set of per-call credentials associated with this instance.\n */\n _getCallCredentials() {\n return this.callCredentials;\n }\n /**\n * Return a new ChannelCredentials instance with a given set of credentials.\n * The resulting instance can be used to construct a Channel that communicates\n * over TLS.\n * @param rootCerts The root certificate data.\n * @param privateKey The client certificate private key, if available.\n * @param certChain The client certificate key chain, if available.\n * @param verifyOptions Additional options to modify certificate verification\n */\n static createSsl(rootCerts, privateKey, certChain, verifyOptions) {\n var _a;\n verifyIsBufferOrNull(rootCerts, 'Root certificate');\n verifyIsBufferOrNull(privateKey, 'Private key');\n verifyIsBufferOrNull(certChain, 'Certificate chain');\n if (privateKey && !certChain) {\n throw new Error('Private key must be given with accompanying certificate chain');\n }\n if (!privateKey && certChain) {\n throw new Error('Certificate chain must be given with accompanying private key');\n }\n const secureContext = (0, tls_1.createSecureContext)({\n ca: (_a = rootCerts !== null && rootCerts !== void 0 ? rootCerts : (0, tls_helpers_1.getDefaultRootsData)()) !== null && _a !== void 0 ? _a : undefined,\n key: privateKey !== null && privateKey !== void 0 ? privateKey : undefined,\n cert: certChain !== null && certChain !== void 0 ? certChain : undefined,\n ciphers: tls_helpers_1.CIPHER_SUITES,\n });\n return new SecureChannelCredentialsImpl(secureContext, verifyOptions !== null && verifyOptions !== void 0 ? verifyOptions : {});\n }\n /**\n * Return a new ChannelCredentials instance with credentials created using\n * the provided secureContext. The resulting instances can be used to\n * construct a Channel that communicates over TLS. gRPC will not override\n * anything in the provided secureContext, so the environment variables\n * GRPC_SSL_CIPHER_SUITES and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH will\n * not be applied.\n * @param secureContext The return value of tls.createSecureContext()\n * @param verifyOptions Additional options to modify certificate verification\n */\n static createFromSecureContext(secureContext, verifyOptions) {\n return new SecureChannelCredentialsImpl(secureContext, verifyOptions !== null && verifyOptions !== void 0 ? verifyOptions : {});\n }\n /**\n * Return a new ChannelCredentials instance with no credentials.\n */\n static createInsecure() {\n return new InsecureChannelCredentialsImpl();\n }\n}\nexports.ChannelCredentials = ChannelCredentials;\nclass InsecureChannelCredentialsImpl extends ChannelCredentials {\n constructor() {\n super();\n }\n compose(callCredentials) {\n throw new Error('Cannot compose insecure credentials');\n }\n _getConnectionOptions() {\n return null;\n }\n _isSecure() {\n return false;\n }\n _equals(other) {\n return other instanceof InsecureChannelCredentialsImpl;\n }\n}\nclass SecureChannelCredentialsImpl extends ChannelCredentials {\n constructor(secureContext, verifyOptions) {\n super();\n this.secureContext = secureContext;\n this.verifyOptions = verifyOptions;\n this.connectionOptions = {\n secureContext,\n };\n // Node asserts that this option is a function, so we cannot pass undefined\n if (verifyOptions === null || verifyOptions === void 0 ? void 0 : verifyOptions.checkServerIdentity) {\n this.connectionOptions.checkServerIdentity =\n verifyOptions.checkServerIdentity;\n }\n }\n compose(callCredentials) {\n const combinedCallCredentials = this.callCredentials.compose(callCredentials);\n return new ComposedChannelCredentialsImpl(this, combinedCallCredentials);\n }\n _getConnectionOptions() {\n // Copy to prevent callers from mutating this.connectionOptions\n return Object.assign({}, this.connectionOptions);\n }\n _isSecure() {\n return true;\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof SecureChannelCredentialsImpl) {\n return (this.secureContext === other.secureContext &&\n this.verifyOptions.checkServerIdentity ===\n other.verifyOptions.checkServerIdentity);\n }\n else {\n return false;\n }\n }\n}\nclass ComposedChannelCredentialsImpl extends ChannelCredentials {\n constructor(channelCredentials, callCreds) {\n super(callCreds);\n this.channelCredentials = channelCredentials;\n }\n compose(callCredentials) {\n const combinedCallCredentials = this.callCredentials.compose(callCredentials);\n return new ComposedChannelCredentialsImpl(this.channelCredentials, combinedCallCredentials);\n }\n _getConnectionOptions() {\n return this.channelCredentials._getConnectionOptions();\n }\n _isSecure() {\n return true;\n }\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (other instanceof ComposedChannelCredentialsImpl) {\n return (this.channelCredentials._equals(other.channelCredentials) &&\n this.callCredentials._equals(other.callCredentials));\n }\n else {\n return false;\n }\n }\n}\n//# sourceMappingURL=channel-credentials.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.channelOptionsEqual = exports.recognizedOptions = void 0;\n/**\n * This is for checking provided options at runtime. This is an object for\n * easier membership checking.\n */\nexports.recognizedOptions = {\n 'grpc.ssl_target_name_override': true,\n 'grpc.primary_user_agent': true,\n 'grpc.secondary_user_agent': true,\n 'grpc.default_authority': true,\n 'grpc.keepalive_time_ms': true,\n 'grpc.keepalive_timeout_ms': true,\n 'grpc.keepalive_permit_without_calls': true,\n 'grpc.service_config': true,\n 'grpc.max_concurrent_streams': true,\n 'grpc.initial_reconnect_backoff_ms': true,\n 'grpc.max_reconnect_backoff_ms': true,\n 'grpc.use_local_subchannel_pool': true,\n 'grpc.max_send_message_length': true,\n 'grpc.max_receive_message_length': true,\n 'grpc.enable_http_proxy': true,\n 'grpc.enable_channelz': true,\n 'grpc.dns_min_time_between_resolutions_ms': true,\n 'grpc.enable_retries': true,\n 'grpc.per_rpc_retry_buffer_size': true,\n 'grpc.retry_buffer_size': true,\n 'grpc.max_connection_age_ms': true,\n 'grpc.max_connection_age_grace_ms': true,\n 'grpc-node.max_session_memory': true,\n 'grpc.service_config_disable_resolution': true,\n 'grpc.client_idle_timeout_ms': true,\n 'grpc-node.tls_enable_trace': true,\n 'grpc.lb.ring_hash.ring_size_cap': true,\n};\nfunction channelOptionsEqual(options1, options2) {\n const keys1 = Object.keys(options1).sort();\n const keys2 = Object.keys(options2).sort();\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let i = 0; i < keys1.length; i += 1) {\n if (keys1[i] !== keys2[i]) {\n return false;\n }\n if (options1[keys1[i]] !== options2[keys2[i]]) {\n return false;\n }\n }\n return true;\n}\nexports.channelOptionsEqual = channelOptionsEqual;\n//# sourceMappingURL=channel-options.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChannelImplementation = void 0;\nconst channel_credentials_1 = require(\"./channel-credentials\");\nconst internal_channel_1 = require(\"./internal-channel\");\nclass ChannelImplementation {\n constructor(target, credentials, options) {\n if (typeof target !== 'string') {\n throw new TypeError('Channel target must be a string');\n }\n if (!(credentials instanceof channel_credentials_1.ChannelCredentials)) {\n throw new TypeError('Channel credentials must be a ChannelCredentials object');\n }\n if (options) {\n if (typeof options !== 'object') {\n throw new TypeError('Channel options must be an object');\n }\n }\n this.internalChannel = new internal_channel_1.InternalChannel(target, credentials, options);\n }\n close() {\n this.internalChannel.close();\n }\n getTarget() {\n return this.internalChannel.getTarget();\n }\n getConnectivityState(tryToConnect) {\n return this.internalChannel.getConnectivityState(tryToConnect);\n }\n watchConnectivityState(currentState, deadline, callback) {\n this.internalChannel.watchConnectivityState(currentState, deadline, callback);\n }\n /**\n * Get the channelz reference object for this channel. The returned value is\n * garbage if channelz is disabled for this channel.\n * @returns\n */\n getChannelzRef() {\n return this.internalChannel.getChannelzRef();\n }\n createCall(method, deadline, host, parentCall, propagateFlags) {\n if (typeof method !== 'string') {\n throw new TypeError('Channel#createCall: method must be a string');\n }\n if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n throw new TypeError('Channel#createCall: deadline must be a number or Date');\n }\n return this.internalChannel.createCall(method, deadline, host, parentCall, propagateFlags);\n }\n}\nexports.ChannelImplementation = ChannelImplementation;\n//# sourceMappingURL=channel.js.map",null,"\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInterceptingCall = exports.InterceptingCall = exports.RequesterBuilder = exports.ListenerBuilder = exports.InterceptorConfigurationError = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst call_interface_1 = require(\"./call-interface\");\nconst constants_1 = require(\"./constants\");\nconst error_1 = require(\"./error\");\n/**\n * Error class associated with passing both interceptors and interceptor\n * providers to a client constructor or as call options.\n */\nclass InterceptorConfigurationError extends Error {\n constructor(message) {\n super(message);\n this.name = 'InterceptorConfigurationError';\n Error.captureStackTrace(this, InterceptorConfigurationError);\n }\n}\nexports.InterceptorConfigurationError = InterceptorConfigurationError;\nclass ListenerBuilder {\n constructor() {\n this.metadata = undefined;\n this.message = undefined;\n this.status = undefined;\n }\n withOnReceiveMetadata(onReceiveMetadata) {\n this.metadata = onReceiveMetadata;\n return this;\n }\n withOnReceiveMessage(onReceiveMessage) {\n this.message = onReceiveMessage;\n return this;\n }\n withOnReceiveStatus(onReceiveStatus) {\n this.status = onReceiveStatus;\n return this;\n }\n build() {\n return {\n onReceiveMetadata: this.metadata,\n onReceiveMessage: this.message,\n onReceiveStatus: this.status,\n };\n }\n}\nexports.ListenerBuilder = ListenerBuilder;\nclass RequesterBuilder {\n constructor() {\n this.start = undefined;\n this.message = undefined;\n this.halfClose = undefined;\n this.cancel = undefined;\n }\n withStart(start) {\n this.start = start;\n return this;\n }\n withSendMessage(sendMessage) {\n this.message = sendMessage;\n return this;\n }\n withHalfClose(halfClose) {\n this.halfClose = halfClose;\n return this;\n }\n withCancel(cancel) {\n this.cancel = cancel;\n return this;\n }\n build() {\n return {\n start: this.start,\n sendMessage: this.message,\n halfClose: this.halfClose,\n cancel: this.cancel,\n };\n }\n}\nexports.RequesterBuilder = RequesterBuilder;\n/**\n * A Listener with a default pass-through implementation of each method. Used\n * for filling out Listeners with some methods omitted.\n */\nconst defaultListener = {\n onReceiveMetadata: (metadata, next) => {\n next(metadata);\n },\n onReceiveMessage: (message, next) => {\n next(message);\n },\n onReceiveStatus: (status, next) => {\n next(status);\n },\n};\n/**\n * A Requester with a default pass-through implementation of each method. Used\n * for filling out Requesters with some methods omitted.\n */\nconst defaultRequester = {\n start: (metadata, listener, next) => {\n next(metadata, listener);\n },\n sendMessage: (message, next) => {\n next(message);\n },\n halfClose: next => {\n next();\n },\n cancel: next => {\n next();\n },\n};\nclass InterceptingCall {\n constructor(nextCall, requester) {\n var _a, _b, _c, _d;\n this.nextCall = nextCall;\n /**\n * Indicates that metadata has been passed to the requester's start\n * method but it has not been passed to the corresponding next callback\n */\n this.processingMetadata = false;\n /**\n * Message context for a pending message that is waiting for\n */\n this.pendingMessageContext = null;\n /**\n * Indicates that a message has been passed to the requester's sendMessage\n * method but it has not been passed to the corresponding next callback\n */\n this.processingMessage = false;\n /**\n * Indicates that a status was received but could not be propagated because\n * a message was still being processed.\n */\n this.pendingHalfClose = false;\n if (requester) {\n this.requester = {\n start: (_a = requester.start) !== null && _a !== void 0 ? _a : defaultRequester.start,\n sendMessage: (_b = requester.sendMessage) !== null && _b !== void 0 ? _b : defaultRequester.sendMessage,\n halfClose: (_c = requester.halfClose) !== null && _c !== void 0 ? _c : defaultRequester.halfClose,\n cancel: (_d = requester.cancel) !== null && _d !== void 0 ? _d : defaultRequester.cancel,\n };\n }\n else {\n this.requester = defaultRequester;\n }\n }\n cancelWithStatus(status, details) {\n this.requester.cancel(() => {\n this.nextCall.cancelWithStatus(status, details);\n });\n }\n getPeer() {\n return this.nextCall.getPeer();\n }\n processPendingMessage() {\n if (this.pendingMessageContext) {\n this.nextCall.sendMessageWithContext(this.pendingMessageContext, this.pendingMessage);\n this.pendingMessageContext = null;\n this.pendingMessage = null;\n }\n }\n processPendingHalfClose() {\n if (this.pendingHalfClose) {\n this.nextCall.halfClose();\n }\n }\n start(metadata, interceptingListener) {\n var _a, _b, _c, _d, _e, _f;\n const fullInterceptingListener = {\n onReceiveMetadata: (_b = (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.bind(interceptingListener)) !== null && _b !== void 0 ? _b : (metadata => { }),\n onReceiveMessage: (_d = (_c = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMessage) === null || _c === void 0 ? void 0 : _c.bind(interceptingListener)) !== null && _d !== void 0 ? _d : (message => { }),\n onReceiveStatus: (_f = (_e = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _e === void 0 ? void 0 : _e.bind(interceptingListener)) !== null && _f !== void 0 ? _f : (status => { }),\n };\n this.processingMetadata = true;\n this.requester.start(metadata, fullInterceptingListener, (md, listener) => {\n var _a, _b, _c;\n this.processingMetadata = false;\n let finalInterceptingListener;\n if ((0, call_interface_1.isInterceptingListener)(listener)) {\n finalInterceptingListener = listener;\n }\n else {\n const fullListener = {\n onReceiveMetadata: (_a = listener.onReceiveMetadata) !== null && _a !== void 0 ? _a : defaultListener.onReceiveMetadata,\n onReceiveMessage: (_b = listener.onReceiveMessage) !== null && _b !== void 0 ? _b : defaultListener.onReceiveMessage,\n onReceiveStatus: (_c = listener.onReceiveStatus) !== null && _c !== void 0 ? _c : defaultListener.onReceiveStatus,\n };\n finalInterceptingListener = new call_interface_1.InterceptingListenerImpl(fullListener, fullInterceptingListener);\n }\n this.nextCall.start(md, finalInterceptingListener);\n this.processPendingMessage();\n this.processPendingHalfClose();\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessageWithContext(context, message) {\n this.processingMessage = true;\n this.requester.sendMessage(message, finalMessage => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessageContext = context;\n this.pendingMessage = message;\n }\n else {\n this.nextCall.sendMessageWithContext(context, finalMessage);\n this.processPendingHalfClose();\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessage(message) {\n this.sendMessageWithContext({}, message);\n }\n startRead() {\n this.nextCall.startRead();\n }\n halfClose() {\n this.requester.halfClose(() => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingHalfClose = true;\n }\n else {\n this.nextCall.halfClose();\n }\n });\n }\n}\nexports.InterceptingCall = InterceptingCall;\nfunction getCall(channel, path, options) {\n var _a, _b;\n const deadline = (_a = options.deadline) !== null && _a !== void 0 ? _a : Infinity;\n const host = options.host;\n const parent = (_b = options.parent) !== null && _b !== void 0 ? _b : null;\n const propagateFlags = options.propagate_flags;\n const credentials = options.credentials;\n const call = channel.createCall(path, deadline, host, parent, propagateFlags);\n if (credentials) {\n call.setCredentials(credentials);\n }\n return call;\n}\n/**\n * InterceptingCall implementation that directly owns the underlying Call\n * object and handles serialization and deseraizliation.\n */\nclass BaseInterceptingCall {\n constructor(call, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n methodDefinition) {\n this.call = call;\n this.methodDefinition = methodDefinition;\n }\n cancelWithStatus(status, details) {\n this.call.cancelWithStatus(status, details);\n }\n getPeer() {\n return this.call.getPeer();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessageWithContext(context, message) {\n let serialized;\n try {\n serialized = this.methodDefinition.requestSerialize(message);\n }\n catch (e) {\n this.call.cancelWithStatus(constants_1.Status.INTERNAL, `Request message serialization failure: ${(0, error_1.getErrorMessage)(e)}`);\n return;\n }\n this.call.sendMessageWithContext(context, serialized);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sendMessage(message) {\n this.sendMessageWithContext({}, message);\n }\n start(metadata, interceptingListener) {\n let readError = null;\n this.call.start(metadata, {\n onReceiveMetadata: metadata => {\n var _a;\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, metadata);\n },\n onReceiveMessage: message => {\n var _a;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let deserialized;\n try {\n deserialized = this.methodDefinition.responseDeserialize(message);\n }\n catch (e) {\n readError = {\n code: constants_1.Status.INTERNAL,\n details: `Response message parsing error: ${(0, error_1.getErrorMessage)(e)}`,\n metadata: new metadata_1.Metadata(),\n };\n this.call.cancelWithStatus(readError.code, readError.details);\n return;\n }\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, deserialized);\n },\n onReceiveStatus: status => {\n var _a, _b;\n if (readError) {\n (_a = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _a === void 0 ? void 0 : _a.call(interceptingListener, readError);\n }\n else {\n (_b = interceptingListener === null || interceptingListener === void 0 ? void 0 : interceptingListener.onReceiveStatus) === null || _b === void 0 ? void 0 : _b.call(interceptingListener, status);\n }\n },\n });\n }\n startRead() {\n this.call.startRead();\n }\n halfClose() {\n this.call.halfClose();\n }\n}\n/**\n * BaseInterceptingCall with special-cased behavior for methods with unary\n * responses.\n */\nclass BaseUnaryInterceptingCall extends BaseInterceptingCall {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n constructor(call, methodDefinition) {\n super(call, methodDefinition);\n }\n start(metadata, listener) {\n var _a, _b;\n let receivedMessage = false;\n const wrapperListener = {\n onReceiveMetadata: (_b = (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMetadata) === null || _a === void 0 ? void 0 : _a.bind(listener)) !== null && _b !== void 0 ? _b : (metadata => { }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage: (message) => {\n var _a;\n receivedMessage = true;\n (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(listener, message);\n },\n onReceiveStatus: (status) => {\n var _a, _b;\n if (!receivedMessage) {\n (_a = listener === null || listener === void 0 ? void 0 : listener.onReceiveMessage) === null || _a === void 0 ? void 0 : _a.call(listener, null);\n }\n (_b = listener === null || listener === void 0 ? void 0 : listener.onReceiveStatus) === null || _b === void 0 ? void 0 : _b.call(listener, status);\n },\n };\n super.start(metadata, wrapperListener);\n this.call.startRead();\n }\n}\n/**\n * BaseInterceptingCall with special-cased behavior for methods with streaming\n * responses.\n */\nclass BaseStreamingInterceptingCall extends BaseInterceptingCall {\n}\nfunction getBottomInterceptingCall(channel, options, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nmethodDefinition) {\n const call = getCall(channel, methodDefinition.path, options);\n if (methodDefinition.responseStream) {\n return new BaseStreamingInterceptingCall(call, methodDefinition);\n }\n else {\n return new BaseUnaryInterceptingCall(call, methodDefinition);\n }\n}\nfunction getInterceptingCall(interceptorArgs, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nmethodDefinition, options, channel) {\n if (interceptorArgs.clientInterceptors.length > 0 &&\n interceptorArgs.clientInterceptorProviders.length > 0) {\n throw new InterceptorConfigurationError('Both interceptors and interceptor_providers were passed as options ' +\n 'to the client constructor. Only one of these is allowed.');\n }\n if (interceptorArgs.callInterceptors.length > 0 &&\n interceptorArgs.callInterceptorProviders.length > 0) {\n throw new InterceptorConfigurationError('Both interceptors and interceptor_providers were passed as call ' +\n 'options. Only one of these is allowed.');\n }\n let interceptors = [];\n // Interceptors passed to the call override interceptors passed to the client constructor\n if (interceptorArgs.callInterceptors.length > 0 ||\n interceptorArgs.callInterceptorProviders.length > 0) {\n interceptors = []\n .concat(interceptorArgs.callInterceptors, interceptorArgs.callInterceptorProviders.map(provider => provider(methodDefinition)))\n .filter(interceptor => interceptor);\n // Filter out falsy values when providers return nothing\n }\n else {\n interceptors = []\n .concat(interceptorArgs.clientInterceptors, interceptorArgs.clientInterceptorProviders.map(provider => provider(methodDefinition)))\n .filter(interceptor => interceptor);\n // Filter out falsy values when providers return nothing\n }\n const interceptorOptions = Object.assign({}, options, {\n method_definition: methodDefinition,\n });\n /* For each interceptor in the list, the nextCall function passed to it is\n * based on the next interceptor in the list, using a nextCall function\n * constructed with the following interceptor in the list, and so on. The\n * initialValue, which is effectively at the end of the list, is a nextCall\n * function that invokes getBottomInterceptingCall, the result of which\n * handles (de)serialization and also gets the underlying call from the\n * channel. */\n const getCall = interceptors.reduceRight((nextCall, nextInterceptor) => {\n return currentOptions => nextInterceptor(currentOptions, nextCall);\n }, (finalOptions) => getBottomInterceptingCall(channel, finalOptions, methodDefinition));\n return getCall(interceptorOptions);\n}\nexports.getInterceptingCall = getInterceptingCall;\n//# sourceMappingURL=client-interceptors.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nconst call_1 = require(\"./call\");\nconst channel_1 = require(\"./channel\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst client_interceptors_1 = require(\"./client-interceptors\");\nconst CHANNEL_SYMBOL = Symbol();\nconst INTERCEPTOR_SYMBOL = Symbol();\nconst INTERCEPTOR_PROVIDER_SYMBOL = Symbol();\nconst CALL_INVOCATION_TRANSFORMER_SYMBOL = Symbol();\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nfunction getErrorStackString(error) {\n return error.stack.split('\\n').slice(1).join('\\n');\n}\n/**\n * A generic gRPC client. Primarily useful as a base class for all generated\n * clients.\n */\nclass Client {\n constructor(address, credentials, options = {}) {\n var _a, _b;\n options = Object.assign({}, options);\n this[INTERCEPTOR_SYMBOL] = (_a = options.interceptors) !== null && _a !== void 0 ? _a : [];\n delete options.interceptors;\n this[INTERCEPTOR_PROVIDER_SYMBOL] = (_b = options.interceptor_providers) !== null && _b !== void 0 ? _b : [];\n delete options.interceptor_providers;\n if (this[INTERCEPTOR_SYMBOL].length > 0 &&\n this[INTERCEPTOR_PROVIDER_SYMBOL].length > 0) {\n throw new Error('Both interceptors and interceptor_providers were passed as options ' +\n 'to the client constructor. Only one of these is allowed.');\n }\n this[CALL_INVOCATION_TRANSFORMER_SYMBOL] =\n options.callInvocationTransformer;\n delete options.callInvocationTransformer;\n if (options.channelOverride) {\n this[CHANNEL_SYMBOL] = options.channelOverride;\n }\n else if (options.channelFactoryOverride) {\n const channelFactoryOverride = options.channelFactoryOverride;\n delete options.channelFactoryOverride;\n this[CHANNEL_SYMBOL] = channelFactoryOverride(address, credentials, options);\n }\n else {\n this[CHANNEL_SYMBOL] = new channel_1.ChannelImplementation(address, credentials, options);\n }\n }\n close() {\n this[CHANNEL_SYMBOL].close();\n }\n getChannel() {\n return this[CHANNEL_SYMBOL];\n }\n waitForReady(deadline, callback) {\n const checkState = (err) => {\n if (err) {\n callback(new Error('Failed to connect before the deadline'));\n return;\n }\n let newState;\n try {\n newState = this[CHANNEL_SYMBOL].getConnectivityState(true);\n }\n catch (e) {\n callback(new Error('The channel has been closed'));\n return;\n }\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n callback();\n }\n else {\n try {\n this[CHANNEL_SYMBOL].watchConnectivityState(newState, deadline, checkState);\n }\n catch (e) {\n callback(new Error('The channel has been closed'));\n }\n }\n };\n setImmediate(checkState);\n }\n checkOptionalUnaryResponseArguments(arg1, arg2, arg3) {\n if (isFunction(arg1)) {\n return { metadata: new metadata_1.Metadata(), options: {}, callback: arg1 };\n }\n else if (isFunction(arg2)) {\n if (arg1 instanceof metadata_1.Metadata) {\n return { metadata: arg1, options: {}, callback: arg2 };\n }\n else {\n return { metadata: new metadata_1.Metadata(), options: arg1, callback: arg2 };\n }\n }\n else {\n if (!(arg1 instanceof metadata_1.Metadata &&\n arg2 instanceof Object &&\n isFunction(arg3))) {\n throw new Error('Incorrect arguments passed');\n }\n return { metadata: arg1, options: arg2, callback: arg3 };\n }\n }\n makeUnaryRequest(method, serialize, deserialize, argument, metadata, options, callback) {\n var _a, _b;\n const checkedArguments = this.checkOptionalUnaryResponseArguments(metadata, options, callback);\n const methodDefinition = {\n path: method,\n requestStream: false,\n responseStream: false,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n argument: argument,\n metadata: checkedArguments.metadata,\n call: new call_1.ClientUnaryCallImpl(),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n callback: checkedArguments.callback,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const emitter = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n emitter.call = call;\n let responseMessage = null;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata: metadata => {\n emitter.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n if (responseMessage !== null) {\n call.cancelWithStatus(constants_1.Status.INTERNAL, 'Too many responses received');\n }\n responseMessage = message;\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n if (status.code === constants_1.Status.OK) {\n if (responseMessage === null) {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)({\n code: constants_1.Status.INTERNAL,\n details: 'No message received',\n metadata: status.metadata,\n }, callerStack));\n }\n else {\n callProperties.callback(null, responseMessage);\n }\n }\n else {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n emitter.emit('status', status);\n },\n });\n call.sendMessage(argument);\n call.halfClose();\n return emitter;\n }\n makeClientStreamRequest(method, serialize, deserialize, metadata, options, callback) {\n var _a, _b;\n const checkedArguments = this.checkOptionalUnaryResponseArguments(metadata, options, callback);\n const methodDefinition = {\n path: method,\n requestStream: true,\n responseStream: false,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n metadata: checkedArguments.metadata,\n call: new call_1.ClientWritableStreamImpl(serialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n callback: checkedArguments.callback,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const emitter = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n emitter.call = call;\n let responseMessage = null;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata: metadata => {\n emitter.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n if (responseMessage !== null) {\n call.cancelWithStatus(constants_1.Status.INTERNAL, 'Too many responses received');\n }\n responseMessage = message;\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n if (status.code === constants_1.Status.OK) {\n if (responseMessage === null) {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)({\n code: constants_1.Status.INTERNAL,\n details: 'No message received',\n metadata: status.metadata,\n }, callerStack));\n }\n else {\n callProperties.callback(null, responseMessage);\n }\n }\n else {\n const callerStack = getErrorStackString(callerStackError);\n callProperties.callback((0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n emitter.emit('status', status);\n },\n });\n return emitter;\n }\n checkMetadataAndOptions(arg1, arg2) {\n let metadata;\n let options;\n if (arg1 instanceof metadata_1.Metadata) {\n metadata = arg1;\n if (arg2) {\n options = arg2;\n }\n else {\n options = {};\n }\n }\n else {\n if (arg1) {\n options = arg1;\n }\n else {\n options = {};\n }\n metadata = new metadata_1.Metadata();\n }\n return { metadata, options };\n }\n makeServerStreamRequest(method, serialize, deserialize, argument, metadata, options) {\n var _a, _b;\n const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n const methodDefinition = {\n path: method,\n requestStream: false,\n responseStream: true,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n argument: argument,\n metadata: checkedArguments.metadata,\n call: new call_1.ClientReadableStreamImpl(deserialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const stream = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n stream.call = call;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata(metadata) {\n stream.emit('metadata', metadata);\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n stream.push(null);\n if (status.code !== constants_1.Status.OK) {\n const callerStack = getErrorStackString(callerStackError);\n stream.emit('error', (0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n stream.emit('status', status);\n },\n });\n call.sendMessage(argument);\n call.halfClose();\n return stream;\n }\n makeBidiStreamRequest(method, serialize, deserialize, metadata, options) {\n var _a, _b;\n const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n const methodDefinition = {\n path: method,\n requestStream: true,\n responseStream: true,\n requestSerialize: serialize,\n responseDeserialize: deserialize,\n };\n let callProperties = {\n metadata: checkedArguments.metadata,\n call: new call_1.ClientDuplexStreamImpl(serialize, deserialize),\n channel: this[CHANNEL_SYMBOL],\n methodDefinition: methodDefinition,\n callOptions: checkedArguments.options,\n };\n if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL](callProperties);\n }\n const stream = callProperties.call;\n const interceptorArgs = {\n clientInterceptors: this[INTERCEPTOR_SYMBOL],\n clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n callInterceptors: (_a = callProperties.callOptions.interceptors) !== null && _a !== void 0 ? _a : [],\n callInterceptorProviders: (_b = callProperties.callOptions.interceptor_providers) !== null && _b !== void 0 ? _b : [],\n };\n const call = (0, client_interceptors_1.getInterceptingCall)(interceptorArgs, callProperties.methodDefinition, callProperties.callOptions, callProperties.channel);\n /* This needs to happen before the emitter is used. Unfortunately we can't\n * enforce this with the type system. We need to construct this emitter\n * before calling the CallInvocationTransformer, and we need to create the\n * call after that. */\n stream.call = call;\n let receivedStatus = false;\n let callerStackError = new Error();\n call.start(callProperties.metadata, {\n onReceiveMetadata(metadata) {\n stream.emit('metadata', metadata);\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveStatus(status) {\n if (receivedStatus) {\n return;\n }\n receivedStatus = true;\n stream.push(null);\n if (status.code !== constants_1.Status.OK) {\n const callerStack = getErrorStackString(callerStackError);\n stream.emit('error', (0, call_1.callErrorFromStatus)(status, callerStack));\n }\n /* Avoid retaining the callerStackError object in the call context of\n * the status event handler. */\n callerStackError = null;\n stream.emit('status', status);\n },\n });\n return stream;\n }\n}\nexports.Client = Client;\n//# sourceMappingURL=client.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionAlgorithms = void 0;\nvar CompressionAlgorithms;\n(function (CompressionAlgorithms) {\n CompressionAlgorithms[CompressionAlgorithms[\"identity\"] = 0] = \"identity\";\n CompressionAlgorithms[CompressionAlgorithms[\"deflate\"] = 1] = \"deflate\";\n CompressionAlgorithms[CompressionAlgorithms[\"gzip\"] = 2] = \"gzip\";\n})(CompressionAlgorithms || (exports.CompressionAlgorithms = CompressionAlgorithms = {}));\n//# sourceMappingURL=compression-algorithms.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompressionFilterFactory = exports.CompressionFilter = void 0;\nconst zlib = require(\"zlib\");\nconst compression_algorithms_1 = require(\"./compression-algorithms\");\nconst constants_1 = require(\"./constants\");\nconst filter_1 = require(\"./filter\");\nconst logging = require(\"./logging\");\nconst isCompressionAlgorithmKey = (key) => {\n return (typeof key === 'number' && typeof compression_algorithms_1.CompressionAlgorithms[key] === 'string');\n};\nclass CompressionHandler {\n /**\n * @param message Raw uncompressed message bytes\n * @param compress Indicates whether the message should be compressed\n * @return Framed message, compressed if applicable\n */\n async writeMessage(message, compress) {\n let messageBuffer = message;\n if (compress) {\n messageBuffer = await this.compressMessage(messageBuffer);\n }\n const output = Buffer.allocUnsafe(messageBuffer.length + 5);\n output.writeUInt8(compress ? 1 : 0, 0);\n output.writeUInt32BE(messageBuffer.length, 1);\n messageBuffer.copy(output, 5);\n return output;\n }\n /**\n * @param data Framed message, possibly compressed\n * @return Uncompressed message\n */\n async readMessage(data) {\n const compressed = data.readUInt8(0) === 1;\n let messageBuffer = data.slice(5);\n if (compressed) {\n messageBuffer = await this.decompressMessage(messageBuffer);\n }\n return messageBuffer;\n }\n}\nclass IdentityHandler extends CompressionHandler {\n async compressMessage(message) {\n return message;\n }\n async writeMessage(message, compress) {\n const output = Buffer.allocUnsafe(message.length + 5);\n /* With \"identity\" compression, messages should always be marked as\n * uncompressed */\n output.writeUInt8(0, 0);\n output.writeUInt32BE(message.length, 1);\n message.copy(output, 5);\n return output;\n }\n decompressMessage(message) {\n return Promise.reject(new Error('Received compressed message but \"grpc-encoding\" header was identity'));\n }\n}\nclass DeflateHandler extends CompressionHandler {\n compressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.deflate(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n decompressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.inflate(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n}\nclass GzipHandler extends CompressionHandler {\n compressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.gzip(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n decompressMessage(message) {\n return new Promise((resolve, reject) => {\n zlib.unzip(message, (err, output) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(output);\n }\n });\n });\n }\n}\nclass UnknownHandler extends CompressionHandler {\n constructor(compressionName) {\n super();\n this.compressionName = compressionName;\n }\n compressMessage(message) {\n return Promise.reject(new Error(`Received message compressed with unsupported compression method ${this.compressionName}`));\n }\n decompressMessage(message) {\n // This should be unreachable\n return Promise.reject(new Error(`Compression method not supported: ${this.compressionName}`));\n }\n}\nfunction getCompressionHandler(compressionName) {\n switch (compressionName) {\n case 'identity':\n return new IdentityHandler();\n case 'deflate':\n return new DeflateHandler();\n case 'gzip':\n return new GzipHandler();\n default:\n return new UnknownHandler(compressionName);\n }\n}\nclass CompressionFilter extends filter_1.BaseFilter {\n constructor(channelOptions, sharedFilterConfig) {\n var _a;\n super();\n this.sharedFilterConfig = sharedFilterConfig;\n this.sendCompression = new IdentityHandler();\n this.receiveCompression = new IdentityHandler();\n this.currentCompressionAlgorithm = 'identity';\n const compressionAlgorithmKey = channelOptions['grpc.default_compression_algorithm'];\n if (compressionAlgorithmKey !== undefined) {\n if (isCompressionAlgorithmKey(compressionAlgorithmKey)) {\n const clientSelectedEncoding = compression_algorithms_1.CompressionAlgorithms[compressionAlgorithmKey];\n const serverSupportedEncodings = (_a = sharedFilterConfig.serverSupportedEncodingHeader) === null || _a === void 0 ? void 0 : _a.split(',');\n /**\n * There are two possible situations here:\n * 1) We don't have any info yet from the server about what compression it supports\n * In that case we should just use what the client tells us to use\n * 2) We've previously received a response from the server including a grpc-accept-encoding header\n * In that case we only want to use the encoding chosen by the client if the server supports it\n */\n if (!serverSupportedEncodings ||\n serverSupportedEncodings.includes(clientSelectedEncoding)) {\n this.currentCompressionAlgorithm = clientSelectedEncoding;\n this.sendCompression = getCompressionHandler(this.currentCompressionAlgorithm);\n }\n }\n else {\n logging.log(constants_1.LogVerbosity.ERROR, `Invalid value provided for grpc.default_compression_algorithm option: ${compressionAlgorithmKey}`);\n }\n }\n }\n async sendMetadata(metadata) {\n const headers = await metadata;\n headers.set('grpc-accept-encoding', 'identity,deflate,gzip');\n headers.set('accept-encoding', 'identity');\n // No need to send the header if it's \"identity\" - behavior is identical; save the bandwidth\n if (this.currentCompressionAlgorithm === 'identity') {\n headers.remove('grpc-encoding');\n }\n else {\n headers.set('grpc-encoding', this.currentCompressionAlgorithm);\n }\n return headers;\n }\n receiveMetadata(metadata) {\n const receiveEncoding = metadata.get('grpc-encoding');\n if (receiveEncoding.length > 0) {\n const encoding = receiveEncoding[0];\n if (typeof encoding === 'string') {\n this.receiveCompression = getCompressionHandler(encoding);\n }\n }\n metadata.remove('grpc-encoding');\n /* Check to see if the compression we're using to send messages is supported by the server\n * If not, reset the sendCompression filter and have it use the default IdentityHandler */\n const serverSupportedEncodingsHeader = metadata.get('grpc-accept-encoding')[0];\n if (serverSupportedEncodingsHeader) {\n this.sharedFilterConfig.serverSupportedEncodingHeader =\n serverSupportedEncodingsHeader;\n const serverSupportedEncodings = serverSupportedEncodingsHeader.split(',');\n if (!serverSupportedEncodings.includes(this.currentCompressionAlgorithm)) {\n this.sendCompression = new IdentityHandler();\n this.currentCompressionAlgorithm = 'identity';\n }\n }\n metadata.remove('grpc-accept-encoding');\n return metadata;\n }\n async sendMessage(message) {\n var _a;\n /* This filter is special. The input message is the bare message bytes,\n * and the output is a framed and possibly compressed message. For this\n * reason, this filter should be at the bottom of the filter stack */\n const resolvedMessage = await message;\n let compress;\n if (this.sendCompression instanceof IdentityHandler) {\n compress = false;\n }\n else {\n compress = (((_a = resolvedMessage.flags) !== null && _a !== void 0 ? _a : 0) & 2 /* WriteFlags.NoCompress */) === 0;\n }\n return {\n message: await this.sendCompression.writeMessage(resolvedMessage.message, compress),\n flags: resolvedMessage.flags,\n };\n }\n async receiveMessage(message) {\n /* This filter is also special. The input message is framed and possibly\n * compressed, and the output message is deframed and uncompressed. So\n * this is another reason that this filter should be at the bottom of the\n * filter stack. */\n return this.receiveCompression.readMessage(await message);\n }\n}\nexports.CompressionFilter = CompressionFilter;\nclass CompressionFilterFactory {\n constructor(channel, options) {\n this.options = options;\n this.sharedFilterConfig = {};\n }\n createFilter() {\n return new CompressionFilter(this.options, this.sharedFilterConfig);\n }\n}\nexports.CompressionFilterFactory = CompressionFilterFactory;\n//# sourceMappingURL=compression-filter.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConnectivityState = void 0;\nvar ConnectivityState;\n(function (ConnectivityState) {\n ConnectivityState[ConnectivityState[\"IDLE\"] = 0] = \"IDLE\";\n ConnectivityState[ConnectivityState[\"CONNECTING\"] = 1] = \"CONNECTING\";\n ConnectivityState[ConnectivityState[\"READY\"] = 2] = \"READY\";\n ConnectivityState[ConnectivityState[\"TRANSIENT_FAILURE\"] = 3] = \"TRANSIENT_FAILURE\";\n ConnectivityState[ConnectivityState[\"SHUTDOWN\"] = 4] = \"SHUTDOWN\";\n})(ConnectivityState || (exports.ConnectivityState = ConnectivityState = {}));\n//# sourceMappingURL=connectivity-state.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = exports.DEFAULT_MAX_SEND_MESSAGE_LENGTH = exports.Propagate = exports.LogVerbosity = exports.Status = void 0;\nvar Status;\n(function (Status) {\n Status[Status[\"OK\"] = 0] = \"OK\";\n Status[Status[\"CANCELLED\"] = 1] = \"CANCELLED\";\n Status[Status[\"UNKNOWN\"] = 2] = \"UNKNOWN\";\n Status[Status[\"INVALID_ARGUMENT\"] = 3] = \"INVALID_ARGUMENT\";\n Status[Status[\"DEADLINE_EXCEEDED\"] = 4] = \"DEADLINE_EXCEEDED\";\n Status[Status[\"NOT_FOUND\"] = 5] = \"NOT_FOUND\";\n Status[Status[\"ALREADY_EXISTS\"] = 6] = \"ALREADY_EXISTS\";\n Status[Status[\"PERMISSION_DENIED\"] = 7] = \"PERMISSION_DENIED\";\n Status[Status[\"RESOURCE_EXHAUSTED\"] = 8] = \"RESOURCE_EXHAUSTED\";\n Status[Status[\"FAILED_PRECONDITION\"] = 9] = \"FAILED_PRECONDITION\";\n Status[Status[\"ABORTED\"] = 10] = \"ABORTED\";\n Status[Status[\"OUT_OF_RANGE\"] = 11] = \"OUT_OF_RANGE\";\n Status[Status[\"UNIMPLEMENTED\"] = 12] = \"UNIMPLEMENTED\";\n Status[Status[\"INTERNAL\"] = 13] = \"INTERNAL\";\n Status[Status[\"UNAVAILABLE\"] = 14] = \"UNAVAILABLE\";\n Status[Status[\"DATA_LOSS\"] = 15] = \"DATA_LOSS\";\n Status[Status[\"UNAUTHENTICATED\"] = 16] = \"UNAUTHENTICATED\";\n})(Status || (exports.Status = Status = {}));\nvar LogVerbosity;\n(function (LogVerbosity) {\n LogVerbosity[LogVerbosity[\"DEBUG\"] = 0] = \"DEBUG\";\n LogVerbosity[LogVerbosity[\"INFO\"] = 1] = \"INFO\";\n LogVerbosity[LogVerbosity[\"ERROR\"] = 2] = \"ERROR\";\n LogVerbosity[LogVerbosity[\"NONE\"] = 3] = \"NONE\";\n})(LogVerbosity || (exports.LogVerbosity = LogVerbosity = {}));\n/**\n * NOTE: This enum is not currently used in any implemented API in this\n * library. It is included only for type parity with the other implementation.\n */\nvar Propagate;\n(function (Propagate) {\n Propagate[Propagate[\"DEADLINE\"] = 1] = \"DEADLINE\";\n Propagate[Propagate[\"CENSUS_STATS_CONTEXT\"] = 2] = \"CENSUS_STATS_CONTEXT\";\n Propagate[Propagate[\"CENSUS_TRACING_CONTEXT\"] = 4] = \"CENSUS_TRACING_CONTEXT\";\n Propagate[Propagate[\"CANCELLATION\"] = 8] = \"CANCELLATION\";\n // https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/propagation_bits.h#L43\n Propagate[Propagate[\"DEFAULTS\"] = 65535] = \"DEFAULTS\";\n})(Propagate || (exports.Propagate = Propagate = {}));\n// -1 means unlimited\nexports.DEFAULT_MAX_SEND_MESSAGE_LENGTH = -1;\n// 4 MB default\nexports.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = 4 * 1024 * 1024;\n//# sourceMappingURL=constants.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.restrictControlPlaneStatusCode = void 0;\nconst constants_1 = require(\"./constants\");\nconst INAPPROPRIATE_CONTROL_PLANE_CODES = [\n constants_1.Status.OK,\n constants_1.Status.INVALID_ARGUMENT,\n constants_1.Status.NOT_FOUND,\n constants_1.Status.ALREADY_EXISTS,\n constants_1.Status.FAILED_PRECONDITION,\n constants_1.Status.ABORTED,\n constants_1.Status.OUT_OF_RANGE,\n constants_1.Status.DATA_LOSS,\n];\nfunction restrictControlPlaneStatusCode(code, details) {\n if (INAPPROPRIATE_CONTROL_PLANE_CODES.includes(code)) {\n return {\n code: constants_1.Status.INTERNAL,\n details: `Invalid status from control plane: ${code} ${constants_1.Status[code]} ${details}`,\n };\n }\n else {\n return { code, details };\n }\n}\nexports.restrictControlPlaneStatusCode = restrictControlPlaneStatusCode;\n//# sourceMappingURL=control-plane-status.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deadlineToString = exports.getRelativeTimeout = exports.getDeadlineTimeoutString = exports.minDeadline = void 0;\nfunction minDeadline(...deadlineList) {\n let minValue = Infinity;\n for (const deadline of deadlineList) {\n const deadlineMsecs = deadline instanceof Date ? deadline.getTime() : deadline;\n if (deadlineMsecs < minValue) {\n minValue = deadlineMsecs;\n }\n }\n return minValue;\n}\nexports.minDeadline = minDeadline;\nconst units = [\n ['m', 1],\n ['S', 1000],\n ['M', 60 * 1000],\n ['H', 60 * 60 * 1000],\n];\nfunction getDeadlineTimeoutString(deadline) {\n const now = new Date().getTime();\n if (deadline instanceof Date) {\n deadline = deadline.getTime();\n }\n const timeoutMs = Math.max(deadline - now, 0);\n for (const [unit, factor] of units) {\n const amount = timeoutMs / factor;\n if (amount < 1e8) {\n return String(Math.ceil(amount)) + unit;\n }\n }\n throw new Error('Deadline is too far in the future');\n}\nexports.getDeadlineTimeoutString = getDeadlineTimeoutString;\n/**\n * See https://nodejs.org/api/timers.html#settimeoutcallback-delay-args\n * In particular, \"When delay is larger than 2147483647 or less than 1, the\n * delay will be set to 1. Non-integer delays are truncated to an integer.\"\n * This number of milliseconds is almost 25 days.\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\n/**\n * Get the timeout value that should be passed to setTimeout now for the timer\n * to end at the deadline. For any deadline before now, the timer should end\n * immediately, represented by a value of 0. For any deadline more than\n * MAX_TIMEOUT_TIME milliseconds in the future, a timer cannot be set that will\n * end at that time, so it is treated as infinitely far in the future.\n * @param deadline\n * @returns\n */\nfunction getRelativeTimeout(deadline) {\n const deadlineMs = deadline instanceof Date ? deadline.getTime() : deadline;\n const now = new Date().getTime();\n const timeout = deadlineMs - now;\n if (timeout < 0) {\n return 0;\n }\n else if (timeout > MAX_TIMEOUT_TIME) {\n return Infinity;\n }\n else {\n return timeout;\n }\n}\nexports.getRelativeTimeout = getRelativeTimeout;\nfunction deadlineToString(deadline) {\n if (deadline instanceof Date) {\n return deadline.toISOString();\n }\n else {\n const dateDeadline = new Date(deadline);\n if (Number.isNaN(dateDeadline.getTime())) {\n return '' + deadline;\n }\n else {\n return dateDeadline.toISOString();\n }\n }\n}\nexports.deadlineToString = deadlineToString;\n//# sourceMappingURL=deadline.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDuration = exports.durationToMs = exports.msToDuration = void 0;\nfunction msToDuration(millis) {\n return {\n seconds: (millis / 1000) | 0,\n nanos: ((millis % 1000) * 1000000) | 0,\n };\n}\nexports.msToDuration = msToDuration;\nfunction durationToMs(duration) {\n return (duration.seconds * 1000 + duration.nanos / 1000000) | 0;\n}\nexports.durationToMs = durationToMs;\nfunction isDuration(value) {\n return typeof value.seconds === 'number' && typeof value.nanos === 'number';\n}\nexports.isDuration = isDuration;\n//# sourceMappingURL=duration.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getErrorCode = exports.getErrorMessage = void 0;\nfunction getErrorMessage(error) {\n if (error instanceof Error) {\n return error.message;\n }\n else {\n return String(error);\n }\n}\nexports.getErrorMessage = getErrorMessage;\nfunction getErrorCode(error) {\n if (typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n typeof error.code === 'number') {\n return error.code;\n }\n else {\n return null;\n }\n}\nexports.getErrorCode = getErrorCode;\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseSubchannelWrapper = exports.registerAdminService = exports.FilterStackFactory = exports.BaseFilter = exports.PickResultType = exports.QueuePicker = exports.UnavailablePicker = exports.ChildLoadBalancerHandler = exports.EndpointMap = exports.endpointHasAddress = exports.endpointToString = exports.subchannelAddressToString = exports.LeafLoadBalancer = exports.isLoadBalancerNameRegistered = exports.parseLoadBalancingConfig = exports.selectLbConfigFromList = exports.registerLoadBalancerType = exports.createChildChannelControlHelper = exports.BackoffTimeout = exports.durationToMs = exports.uriToString = exports.createResolver = exports.registerResolver = exports.log = exports.trace = void 0;\nvar logging_1 = require(\"./logging\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return logging_1.trace; } });\nObject.defineProperty(exports, \"log\", { enumerable: true, get: function () { return logging_1.log; } });\nvar resolver_1 = require(\"./resolver\");\nObject.defineProperty(exports, \"registerResolver\", { enumerable: true, get: function () { return resolver_1.registerResolver; } });\nObject.defineProperty(exports, \"createResolver\", { enumerable: true, get: function () { return resolver_1.createResolver; } });\nvar uri_parser_1 = require(\"./uri-parser\");\nObject.defineProperty(exports, \"uriToString\", { enumerable: true, get: function () { return uri_parser_1.uriToString; } });\nvar duration_1 = require(\"./duration\");\nObject.defineProperty(exports, \"durationToMs\", { enumerable: true, get: function () { return duration_1.durationToMs; } });\nvar backoff_timeout_1 = require(\"./backoff-timeout\");\nObject.defineProperty(exports, \"BackoffTimeout\", { enumerable: true, get: function () { return backoff_timeout_1.BackoffTimeout; } });\nvar load_balancer_1 = require(\"./load-balancer\");\nObject.defineProperty(exports, \"createChildChannelControlHelper\", { enumerable: true, get: function () { return load_balancer_1.createChildChannelControlHelper; } });\nObject.defineProperty(exports, \"registerLoadBalancerType\", { enumerable: true, get: function () { return load_balancer_1.registerLoadBalancerType; } });\nObject.defineProperty(exports, \"selectLbConfigFromList\", { enumerable: true, get: function () { return load_balancer_1.selectLbConfigFromList; } });\nObject.defineProperty(exports, \"parseLoadBalancingConfig\", { enumerable: true, get: function () { return load_balancer_1.parseLoadBalancingConfig; } });\nObject.defineProperty(exports, \"isLoadBalancerNameRegistered\", { enumerable: true, get: function () { return load_balancer_1.isLoadBalancerNameRegistered; } });\nvar load_balancer_pick_first_1 = require(\"./load-balancer-pick-first\");\nObject.defineProperty(exports, \"LeafLoadBalancer\", { enumerable: true, get: function () { return load_balancer_pick_first_1.LeafLoadBalancer; } });\nvar subchannel_address_1 = require(\"./subchannel-address\");\nObject.defineProperty(exports, \"subchannelAddressToString\", { enumerable: true, get: function () { return subchannel_address_1.subchannelAddressToString; } });\nObject.defineProperty(exports, \"endpointToString\", { enumerable: true, get: function () { return subchannel_address_1.endpointToString; } });\nObject.defineProperty(exports, \"endpointHasAddress\", { enumerable: true, get: function () { return subchannel_address_1.endpointHasAddress; } });\nObject.defineProperty(exports, \"EndpointMap\", { enumerable: true, get: function () { return subchannel_address_1.EndpointMap; } });\nvar load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nObject.defineProperty(exports, \"ChildLoadBalancerHandler\", { enumerable: true, get: function () { return load_balancer_child_handler_1.ChildLoadBalancerHandler; } });\nvar picker_1 = require(\"./picker\");\nObject.defineProperty(exports, \"UnavailablePicker\", { enumerable: true, get: function () { return picker_1.UnavailablePicker; } });\nObject.defineProperty(exports, \"QueuePicker\", { enumerable: true, get: function () { return picker_1.QueuePicker; } });\nObject.defineProperty(exports, \"PickResultType\", { enumerable: true, get: function () { return picker_1.PickResultType; } });\nvar filter_1 = require(\"./filter\");\nObject.defineProperty(exports, \"BaseFilter\", { enumerable: true, get: function () { return filter_1.BaseFilter; } });\nvar filter_stack_1 = require(\"./filter-stack\");\nObject.defineProperty(exports, \"FilterStackFactory\", { enumerable: true, get: function () { return filter_stack_1.FilterStackFactory; } });\nvar admin_1 = require(\"./admin\");\nObject.defineProperty(exports, \"registerAdminService\", { enumerable: true, get: function () { return admin_1.registerAdminService; } });\nvar subchannel_interface_1 = require(\"./subchannel-interface\");\nObject.defineProperty(exports, \"BaseSubchannelWrapper\", { enumerable: true, get: function () { return subchannel_interface_1.BaseSubchannelWrapper; } });\n//# sourceMappingURL=experimental.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FilterStackFactory = exports.FilterStack = void 0;\nclass FilterStack {\n constructor(filters) {\n this.filters = filters;\n }\n sendMetadata(metadata) {\n let result = metadata;\n for (let i = 0; i < this.filters.length; i++) {\n result = this.filters[i].sendMetadata(result);\n }\n return result;\n }\n receiveMetadata(metadata) {\n let result = metadata;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveMetadata(result);\n }\n return result;\n }\n sendMessage(message) {\n let result = message;\n for (let i = 0; i < this.filters.length; i++) {\n result = this.filters[i].sendMessage(result);\n }\n return result;\n }\n receiveMessage(message) {\n let result = message;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveMessage(result);\n }\n return result;\n }\n receiveTrailers(status) {\n let result = status;\n for (let i = this.filters.length - 1; i >= 0; i--) {\n result = this.filters[i].receiveTrailers(result);\n }\n return result;\n }\n push(filters) {\n this.filters.unshift(...filters);\n }\n getFilters() {\n return this.filters;\n }\n}\nexports.FilterStack = FilterStack;\nclass FilterStackFactory {\n constructor(factories) {\n this.factories = factories;\n }\n push(filterFactories) {\n this.factories.unshift(...filterFactories);\n }\n clone() {\n return new FilterStackFactory([...this.factories]);\n }\n createFilter() {\n return new FilterStack(this.factories.map(factory => factory.createFilter()));\n }\n}\nexports.FilterStackFactory = FilterStackFactory;\n//# sourceMappingURL=filter-stack.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseFilter = void 0;\nclass BaseFilter {\n async sendMetadata(metadata) {\n return metadata;\n }\n receiveMetadata(metadata) {\n return metadata;\n }\n async sendMessage(message) {\n return message;\n }\n async receiveMessage(message) {\n return message;\n }\n receiveTrailers(status) {\n return status;\n }\n}\nexports.BaseFilter = BaseFilter;\n//# sourceMappingURL=filter.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProxiedConnection = exports.mapProxyName = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst resolver_1 = require(\"./resolver\");\nconst http = require(\"http\");\nconst tls = require(\"tls\");\nconst logging = require(\"./logging\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst url_1 = require(\"url\");\nconst resolver_dns_1 = require(\"./resolver-dns\");\nconst TRACER_NAME = 'proxy';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nfunction getProxyInfo() {\n let proxyEnv = '';\n let envVar = '';\n /* Prefer using 'grpc_proxy'. Fallback on 'http_proxy' if it is not set.\n * Also prefer using 'https_proxy' with fallback on 'http_proxy'. The\n * fallback behavior can be removed if there's a demand for it.\n */\n if (process.env.grpc_proxy) {\n envVar = 'grpc_proxy';\n proxyEnv = process.env.grpc_proxy;\n }\n else if (process.env.https_proxy) {\n envVar = 'https_proxy';\n proxyEnv = process.env.https_proxy;\n }\n else if (process.env.http_proxy) {\n envVar = 'http_proxy';\n proxyEnv = process.env.http_proxy;\n }\n else {\n return {};\n }\n let proxyUrl;\n try {\n proxyUrl = new url_1.URL(proxyEnv);\n }\n catch (e) {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, `cannot parse value of \"${envVar}\" env var`);\n return {};\n }\n if (proxyUrl.protocol !== 'http:') {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, `\"${proxyUrl.protocol}\" scheme not supported in proxy URI`);\n return {};\n }\n let userCred = null;\n if (proxyUrl.username) {\n if (proxyUrl.password) {\n (0, logging_1.log)(constants_1.LogVerbosity.INFO, 'userinfo found in proxy URI');\n userCred = `${proxyUrl.username}:${proxyUrl.password}`;\n }\n else {\n userCred = proxyUrl.username;\n }\n }\n const hostname = proxyUrl.hostname;\n let port = proxyUrl.port;\n /* The proxy URL uses the scheme \"http:\", which has a default port number of\n * 80. We need to set that explicitly here if it is omitted because otherwise\n * it will use gRPC's default port 443. */\n if (port === '') {\n port = '80';\n }\n const result = {\n address: `${hostname}:${port}`,\n };\n if (userCred) {\n result.creds = userCred;\n }\n trace('Proxy server ' + result.address + ' set by environment variable ' + envVar);\n return result;\n}\nfunction getNoProxyHostList() {\n /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */\n let noProxyStr = process.env.no_grpc_proxy;\n let envVar = 'no_grpc_proxy';\n if (!noProxyStr) {\n noProxyStr = process.env.no_proxy;\n envVar = 'no_proxy';\n }\n if (noProxyStr) {\n trace('No proxy server list set by environment variable ' + envVar);\n return noProxyStr.split(',');\n }\n else {\n return [];\n }\n}\nfunction mapProxyName(target, options) {\n var _a;\n const noProxyResult = {\n target: target,\n extraOptions: {},\n };\n if (((_a = options['grpc.enable_http_proxy']) !== null && _a !== void 0 ? _a : 1) === 0) {\n return noProxyResult;\n }\n if (target.scheme === 'unix') {\n return noProxyResult;\n }\n const proxyInfo = getProxyInfo();\n if (!proxyInfo.address) {\n return noProxyResult;\n }\n const hostPort = (0, uri_parser_1.splitHostPort)(target.path);\n if (!hostPort) {\n return noProxyResult;\n }\n const serverHost = hostPort.host;\n for (const host of getNoProxyHostList()) {\n if (host === serverHost) {\n trace('Not using proxy for target in no_proxy list: ' + (0, uri_parser_1.uriToString)(target));\n return noProxyResult;\n }\n }\n const extraOptions = {\n 'grpc.http_connect_target': (0, uri_parser_1.uriToString)(target),\n };\n if (proxyInfo.creds) {\n extraOptions['grpc.http_connect_creds'] = proxyInfo.creds;\n }\n return {\n target: {\n scheme: 'dns',\n path: proxyInfo.address,\n },\n extraOptions: extraOptions,\n };\n}\nexports.mapProxyName = mapProxyName;\nfunction getProxiedConnection(address, channelOptions, connectionOptions) {\n var _a;\n if (!('grpc.http_connect_target' in channelOptions)) {\n return Promise.resolve({});\n }\n const realTarget = channelOptions['grpc.http_connect_target'];\n const parsedTarget = (0, uri_parser_1.parseUri)(realTarget);\n if (parsedTarget === null) {\n return Promise.resolve({});\n }\n const splitHostPost = (0, uri_parser_1.splitHostPort)(parsedTarget.path);\n if (splitHostPost === null) {\n return Promise.resolve({});\n }\n const hostPort = `${splitHostPost.host}:${(_a = splitHostPost.port) !== null && _a !== void 0 ? _a : resolver_dns_1.DEFAULT_PORT}`;\n const options = {\n method: 'CONNECT',\n path: hostPort,\n };\n const headers = {\n Host: hostPort,\n };\n // Connect to the subchannel address as a proxy\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(address)) {\n options.host = address.host;\n options.port = address.port;\n }\n else {\n options.socketPath = address.path;\n }\n if ('grpc.http_connect_creds' in channelOptions) {\n headers['Proxy-Authorization'] =\n 'Basic ' +\n Buffer.from(channelOptions['grpc.http_connect_creds']).toString('base64');\n }\n options.headers = headers;\n const proxyAddressString = (0, subchannel_address_1.subchannelAddressToString)(address);\n trace('Using proxy ' + proxyAddressString + ' to connect to ' + options.path);\n return new Promise((resolve, reject) => {\n const request = http.request(options);\n request.once('connect', (res, socket, head) => {\n var _a;\n request.removeAllListeners();\n socket.removeAllListeners();\n if (res.statusCode === 200) {\n trace('Successfully connected to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n if ('secureContext' in connectionOptions) {\n /* The proxy is connecting to a TLS server, so upgrade this socket\n * connection to a TLS connection.\n * This is a workaround for https://github.com/nodejs/node/issues/32922\n * See https://github.com/grpc/grpc-node/pull/1369 for more info. */\n const targetPath = (0, resolver_1.getDefaultAuthority)(parsedTarget);\n const hostPort = (0, uri_parser_1.splitHostPort)(targetPath);\n const remoteHost = (_a = hostPort === null || hostPort === void 0 ? void 0 : hostPort.host) !== null && _a !== void 0 ? _a : targetPath;\n const cts = tls.connect(Object.assign({ host: remoteHost, servername: remoteHost, socket: socket }, connectionOptions), () => {\n trace('Successfully established a TLS connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n resolve({ socket: cts, realTarget: parsedTarget });\n });\n cts.on('error', (error) => {\n trace('Failed to establish a TLS connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString +\n ' with error ' +\n error.message);\n reject();\n });\n }\n else {\n trace('Successfully established a plaintext connection to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString);\n resolve({\n socket,\n realTarget: parsedTarget,\n });\n }\n }\n else {\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, 'Failed to connect to ' +\n options.path +\n ' through proxy ' +\n proxyAddressString +\n ' with status ' +\n res.statusCode);\n reject();\n }\n });\n request.once('error', err => {\n request.removeAllListeners();\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, 'Failed to connect to proxy ' +\n proxyAddressString +\n ' with error ' +\n err.message);\n reject();\n });\n request.end();\n });\n}\nexports.getProxiedConnection = getProxiedConnection;\n//# sourceMappingURL=http_proxy.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.experimental = exports.ServerInterceptingCall = exports.ResponderBuilder = exports.ServerListenerBuilder = exports.addAdminServicesToServer = exports.getChannelzHandlers = exports.getChannelzServiceDefinition = exports.InterceptorConfigurationError = exports.InterceptingCall = exports.RequesterBuilder = exports.ListenerBuilder = exports.StatusBuilder = exports.getClientChannel = exports.ServerCredentials = exports.Server = exports.setLogVerbosity = exports.setLogger = exports.load = exports.loadObject = exports.CallCredentials = exports.ChannelCredentials = exports.waitForClientReady = exports.closeClient = exports.Channel = exports.makeGenericClientConstructor = exports.makeClientConstructor = exports.loadPackageDefinition = exports.Client = exports.compressionAlgorithms = exports.propagate = exports.connectivityState = exports.status = exports.logVerbosity = exports.Metadata = exports.credentials = void 0;\nconst call_credentials_1 = require(\"./call-credentials\");\nObject.defineProperty(exports, \"CallCredentials\", { enumerable: true, get: function () { return call_credentials_1.CallCredentials; } });\nconst channel_1 = require(\"./channel\");\nObject.defineProperty(exports, \"Channel\", { enumerable: true, get: function () { return channel_1.ChannelImplementation; } });\nconst compression_algorithms_1 = require(\"./compression-algorithms\");\nObject.defineProperty(exports, \"compressionAlgorithms\", { enumerable: true, get: function () { return compression_algorithms_1.CompressionAlgorithms; } });\nconst connectivity_state_1 = require(\"./connectivity-state\");\nObject.defineProperty(exports, \"connectivityState\", { enumerable: true, get: function () { return connectivity_state_1.ConnectivityState; } });\nconst channel_credentials_1 = require(\"./channel-credentials\");\nObject.defineProperty(exports, \"ChannelCredentials\", { enumerable: true, get: function () { return channel_credentials_1.ChannelCredentials; } });\nconst client_1 = require(\"./client\");\nObject.defineProperty(exports, \"Client\", { enumerable: true, get: function () { return client_1.Client; } });\nconst constants_1 = require(\"./constants\");\nObject.defineProperty(exports, \"logVerbosity\", { enumerable: true, get: function () { return constants_1.LogVerbosity; } });\nObject.defineProperty(exports, \"status\", { enumerable: true, get: function () { return constants_1.Status; } });\nObject.defineProperty(exports, \"propagate\", { enumerable: true, get: function () { return constants_1.Propagate; } });\nconst logging = require(\"./logging\");\nconst make_client_1 = require(\"./make-client\");\nObject.defineProperty(exports, \"loadPackageDefinition\", { enumerable: true, get: function () { return make_client_1.loadPackageDefinition; } });\nObject.defineProperty(exports, \"makeClientConstructor\", { enumerable: true, get: function () { return make_client_1.makeClientConstructor; } });\nObject.defineProperty(exports, \"makeGenericClientConstructor\", { enumerable: true, get: function () { return make_client_1.makeClientConstructor; } });\nconst metadata_1 = require(\"./metadata\");\nObject.defineProperty(exports, \"Metadata\", { enumerable: true, get: function () { return metadata_1.Metadata; } });\nconst server_1 = require(\"./server\");\nObject.defineProperty(exports, \"Server\", { enumerable: true, get: function () { return server_1.Server; } });\nconst server_credentials_1 = require(\"./server-credentials\");\nObject.defineProperty(exports, \"ServerCredentials\", { enumerable: true, get: function () { return server_credentials_1.ServerCredentials; } });\nconst status_builder_1 = require(\"./status-builder\");\nObject.defineProperty(exports, \"StatusBuilder\", { enumerable: true, get: function () { return status_builder_1.StatusBuilder; } });\n/**** Client Credentials ****/\n// Using assign only copies enumerable properties, which is what we want\nexports.credentials = {\n /**\n * Combine a ChannelCredentials with any number of CallCredentials into a\n * single ChannelCredentials object.\n * @param channelCredentials The ChannelCredentials object.\n * @param callCredentials Any number of CallCredentials objects.\n * @return The resulting ChannelCredentials object.\n */\n combineChannelCredentials: (channelCredentials, ...callCredentials) => {\n return callCredentials.reduce((acc, other) => acc.compose(other), channelCredentials);\n },\n /**\n * Combine any number of CallCredentials into a single CallCredentials\n * object.\n * @param first The first CallCredentials object.\n * @param additional Any number of additional CallCredentials objects.\n * @return The resulting CallCredentials object.\n */\n combineCallCredentials: (first, ...additional) => {\n return additional.reduce((acc, other) => acc.compose(other), first);\n },\n // from channel-credentials.ts\n createInsecure: channel_credentials_1.ChannelCredentials.createInsecure,\n createSsl: channel_credentials_1.ChannelCredentials.createSsl,\n createFromSecureContext: channel_credentials_1.ChannelCredentials.createFromSecureContext,\n // from call-credentials.ts\n createFromMetadataGenerator: call_credentials_1.CallCredentials.createFromMetadataGenerator,\n createFromGoogleCredential: call_credentials_1.CallCredentials.createFromGoogleCredential,\n createEmpty: call_credentials_1.CallCredentials.createEmpty,\n};\n/**\n * Close a Client object.\n * @param client The client to close.\n */\nconst closeClient = (client) => client.close();\nexports.closeClient = closeClient;\nconst waitForClientReady = (client, deadline, callback) => client.waitForReady(deadline, callback);\nexports.waitForClientReady = waitForClientReady;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n/**** Unimplemented function stubs ****/\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst loadObject = (value, options) => {\n throw new Error('Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead');\n};\nexports.loadObject = loadObject;\nconst load = (filename, format, options) => {\n throw new Error('Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead');\n};\nexports.load = load;\nconst setLogger = (logger) => {\n logging.setLogger(logger);\n};\nexports.setLogger = setLogger;\nconst setLogVerbosity = (verbosity) => {\n logging.setLoggerVerbosity(verbosity);\n};\nexports.setLogVerbosity = setLogVerbosity;\nconst getClientChannel = (client) => {\n return client_1.Client.prototype.getChannel.call(client);\n};\nexports.getClientChannel = getClientChannel;\nvar client_interceptors_1 = require(\"./client-interceptors\");\nObject.defineProperty(exports, \"ListenerBuilder\", { enumerable: true, get: function () { return client_interceptors_1.ListenerBuilder; } });\nObject.defineProperty(exports, \"RequesterBuilder\", { enumerable: true, get: function () { return client_interceptors_1.RequesterBuilder; } });\nObject.defineProperty(exports, \"InterceptingCall\", { enumerable: true, get: function () { return client_interceptors_1.InterceptingCall; } });\nObject.defineProperty(exports, \"InterceptorConfigurationError\", { enumerable: true, get: function () { return client_interceptors_1.InterceptorConfigurationError; } });\nvar channelz_1 = require(\"./channelz\");\nObject.defineProperty(exports, \"getChannelzServiceDefinition\", { enumerable: true, get: function () { return channelz_1.getChannelzServiceDefinition; } });\nObject.defineProperty(exports, \"getChannelzHandlers\", { enumerable: true, get: function () { return channelz_1.getChannelzHandlers; } });\nvar admin_1 = require(\"./admin\");\nObject.defineProperty(exports, \"addAdminServicesToServer\", { enumerable: true, get: function () { return admin_1.addAdminServicesToServer; } });\nvar server_interceptors_1 = require(\"./server-interceptors\");\nObject.defineProperty(exports, \"ServerListenerBuilder\", { enumerable: true, get: function () { return server_interceptors_1.ServerListenerBuilder; } });\nObject.defineProperty(exports, \"ResponderBuilder\", { enumerable: true, get: function () { return server_interceptors_1.ResponderBuilder; } });\nObject.defineProperty(exports, \"ServerInterceptingCall\", { enumerable: true, get: function () { return server_interceptors_1.ServerInterceptingCall; } });\nconst experimental = require(\"./experimental\");\nexports.experimental = experimental;\nconst resolver_dns = require(\"./resolver-dns\");\nconst resolver_uds = require(\"./resolver-uds\");\nconst resolver_ip = require(\"./resolver-ip\");\nconst load_balancer_pick_first = require(\"./load-balancer-pick-first\");\nconst load_balancer_round_robin = require(\"./load-balancer-round-robin\");\nconst load_balancer_outlier_detection = require(\"./load-balancer-outlier-detection\");\nconst channelz = require(\"./channelz\");\n(() => {\n resolver_dns.setup();\n resolver_uds.setup();\n resolver_ip.setup();\n load_balancer_pick_first.setup();\n load_balancer_round_robin.setup();\n load_balancer_outlier_detection.setup();\n channelz.setup();\n})();\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InternalChannel = void 0;\nconst channel_credentials_1 = require(\"./channel-credentials\");\nconst resolving_load_balancer_1 = require(\"./resolving-load-balancer\");\nconst subchannel_pool_1 = require(\"./subchannel-pool\");\nconst picker_1 = require(\"./picker\");\nconst constants_1 = require(\"./constants\");\nconst filter_stack_1 = require(\"./filter-stack\");\nconst compression_filter_1 = require(\"./compression-filter\");\nconst resolver_1 = require(\"./resolver\");\nconst logging_1 = require(\"./logging\");\nconst max_message_size_filter_1 = require(\"./max-message-size-filter\");\nconst http_proxy_1 = require(\"./http_proxy\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst channelz_1 = require(\"./channelz\");\nconst load_balancing_call_1 = require(\"./load-balancing-call\");\nconst deadline_1 = require(\"./deadline\");\nconst resolving_call_1 = require(\"./resolving-call\");\nconst call_number_1 = require(\"./call-number\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst retrying_call_1 = require(\"./retrying-call\");\nconst subchannel_interface_1 = require(\"./subchannel-interface\");\n/**\n * See https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\nconst MIN_IDLE_TIMEOUT_MS = 1000;\n// 30 minutes\nconst DEFAULT_IDLE_TIMEOUT_MS = 30 * 60 * 1000;\nconst RETRY_THROTTLER_MAP = new Map();\nconst DEFAULT_RETRY_BUFFER_SIZE_BYTES = 1 << 24; // 16 MB\nconst DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES = 1 << 20; // 1 MB\nclass ChannelSubchannelWrapper extends subchannel_interface_1.BaseSubchannelWrapper {\n constructor(childSubchannel, channel) {\n super(childSubchannel);\n this.channel = channel;\n this.refCount = 0;\n this.subchannelStateListener = (subchannel, previousState, newState, keepaliveTime) => {\n channel.throttleKeepalive(keepaliveTime);\n };\n childSubchannel.addConnectivityStateListener(this.subchannelStateListener);\n }\n ref() {\n this.child.ref();\n this.refCount += 1;\n }\n unref() {\n this.child.unref();\n this.refCount -= 1;\n if (this.refCount <= 0) {\n this.child.removeConnectivityStateListener(this.subchannelStateListener);\n this.channel.removeWrappedSubchannel(this);\n }\n }\n}\nclass InternalChannel {\n constructor(target, credentials, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n this.credentials = credentials;\n this.options = options;\n this.connectivityState = connectivity_state_1.ConnectivityState.IDLE;\n this.currentPicker = new picker_1.UnavailablePicker();\n /**\n * Calls queued up to get a call config. Should only be populated before the\n * first time the resolver returns a result, which includes the ConfigSelector.\n */\n this.configSelectionQueue = [];\n this.pickQueue = [];\n this.connectivityStateWatchers = [];\n this.configSelector = null;\n /**\n * This is the error from the name resolver if it failed most recently. It\n * is only used to end calls that start while there is no config selector\n * and the name resolver is in backoff, so it should be nulled if\n * configSelector becomes set or the channel state becomes anything other\n * than TRANSIENT_FAILURE.\n */\n this.currentResolutionError = null;\n this.wrappedSubchannels = new Set();\n this.callCount = 0;\n this.idleTimer = null;\n // Channelz info\n this.channelzEnabled = true;\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.childrenTracker = new channelz_1.ChannelzChildrenTracker();\n /**\n * Randomly generated ID to be passed to the config selector, for use by\n * ring_hash in xDS. An integer distributed approximately uniformly between\n * 0 and MAX_SAFE_INTEGER.\n */\n this.randomChannelId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);\n if (typeof target !== 'string') {\n throw new TypeError('Channel target must be a string');\n }\n if (!(credentials instanceof channel_credentials_1.ChannelCredentials)) {\n throw new TypeError('Channel credentials must be a ChannelCredentials object');\n }\n if (options) {\n if (typeof options !== 'object') {\n throw new TypeError('Channel options must be an object');\n }\n }\n this.originalTarget = target;\n const originalTargetUri = (0, uri_parser_1.parseUri)(target);\n if (originalTargetUri === null) {\n throw new Error(`Could not parse target name \"${target}\"`);\n }\n /* This ensures that the target has a scheme that is registered with the\n * resolver */\n const defaultSchemeMapResult = (0, resolver_1.mapUriDefaultScheme)(originalTargetUri);\n if (defaultSchemeMapResult === null) {\n throw new Error(`Could not find a default scheme for target name \"${target}\"`);\n }\n this.callRefTimer = setInterval(() => { }, MAX_TIMEOUT_TIME);\n (_b = (_a = this.callRefTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n if (this.options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n }\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.channelzRef = (0, channelz_1.registerChannelzChannel)(target, () => this.getChannelzInfo(), this.channelzEnabled);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Channel created');\n }\n if (this.options['grpc.default_authority']) {\n this.defaultAuthority = this.options['grpc.default_authority'];\n }\n else {\n this.defaultAuthority = (0, resolver_1.getDefaultAuthority)(defaultSchemeMapResult);\n }\n const proxyMapResult = (0, http_proxy_1.mapProxyName)(defaultSchemeMapResult, options);\n this.target = proxyMapResult.target;\n this.options = Object.assign({}, this.options, proxyMapResult.extraOptions);\n /* The global boolean parameter to getSubchannelPool has the inverse meaning to what\n * the grpc.use_local_subchannel_pool channel option means. */\n this.subchannelPool = (0, subchannel_pool_1.getSubchannelPool)(((_c = options['grpc.use_local_subchannel_pool']) !== null && _c !== void 0 ? _c : 0) === 0);\n this.retryBufferTracker = new retrying_call_1.MessageBufferTracker((_d = options['grpc.retry_buffer_size']) !== null && _d !== void 0 ? _d : DEFAULT_RETRY_BUFFER_SIZE_BYTES, (_e = options['grpc.per_rpc_retry_buffer_size']) !== null && _e !== void 0 ? _e : DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES);\n this.keepaliveTime = (_f = options['grpc.keepalive_time_ms']) !== null && _f !== void 0 ? _f : -1;\n this.idleTimeoutMs = Math.max((_g = options['grpc.client_idle_timeout_ms']) !== null && _g !== void 0 ? _g : DEFAULT_IDLE_TIMEOUT_MS, MIN_IDLE_TIMEOUT_MS);\n const channelControlHelper = {\n createSubchannel: (subchannelAddress, subchannelArgs) => {\n const subchannel = this.subchannelPool.getOrCreateSubchannel(this.target, subchannelAddress, Object.assign({}, this.options, subchannelArgs), this.credentials);\n subchannel.throttleKeepalive(this.keepaliveTime);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Created subchannel or used existing subchannel', subchannel.getChannelzRef());\n }\n const wrappedSubchannel = new ChannelSubchannelWrapper(subchannel, this);\n this.wrappedSubchannels.add(wrappedSubchannel);\n return wrappedSubchannel;\n },\n updateState: (connectivityState, picker) => {\n this.currentPicker = picker;\n const queueCopy = this.pickQueue.slice();\n this.pickQueue = [];\n if (queueCopy.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of queueCopy) {\n call.doPick();\n }\n this.updateState(connectivityState);\n },\n requestReresolution: () => {\n // This should never be called.\n throw new Error('Resolving load balancer should never call requestReresolution');\n },\n addChannelzChild: (child) => {\n if (this.channelzEnabled) {\n this.childrenTracker.refChild(child);\n }\n },\n removeChannelzChild: (child) => {\n if (this.channelzEnabled) {\n this.childrenTracker.unrefChild(child);\n }\n },\n };\n this.resolvingLoadBalancer = new resolving_load_balancer_1.ResolvingLoadBalancer(this.target, channelControlHelper, options, (serviceConfig, configSelector) => {\n if (serviceConfig.retryThrottling) {\n RETRY_THROTTLER_MAP.set(this.getTarget(), new retrying_call_1.RetryThrottler(serviceConfig.retryThrottling.maxTokens, serviceConfig.retryThrottling.tokenRatio, RETRY_THROTTLER_MAP.get(this.getTarget())));\n }\n else {\n RETRY_THROTTLER_MAP.delete(this.getTarget());\n }\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Address resolution succeeded');\n }\n this.configSelector = configSelector;\n this.currentResolutionError = null;\n /* We process the queue asynchronously to ensure that the corresponding\n * load balancer update has completed. */\n process.nextTick(() => {\n const localQueue = this.configSelectionQueue;\n this.configSelectionQueue = [];\n if (localQueue.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of localQueue) {\n call.getConfig();\n }\n });\n }, status => {\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_WARNING', 'Address resolution failed with code ' +\n status.code +\n ' and details \"' +\n status.details +\n '\"');\n }\n if (this.configSelectionQueue.length > 0) {\n this.trace('Name resolution failed with calls queued for config selection');\n }\n if (this.configSelector === null) {\n this.currentResolutionError = Object.assign(Object.assign({}, (0, control_plane_status_1.restrictControlPlaneStatusCode)(status.code, status.details)), { metadata: status.metadata });\n }\n const localQueue = this.configSelectionQueue;\n this.configSelectionQueue = [];\n if (localQueue.length > 0) {\n this.callRefTimerUnref();\n }\n for (const call of localQueue) {\n call.reportResolverError(status);\n }\n });\n this.filterStackFactory = new filter_stack_1.FilterStackFactory([\n new max_message_size_filter_1.MaxMessageSizeFilterFactory(this.options),\n new compression_filter_1.CompressionFilterFactory(this, this.options),\n ]);\n this.trace('Channel constructed with options ' +\n JSON.stringify(options, undefined, 2));\n const error = new Error();\n (0, logging_1.trace)(constants_1.LogVerbosity.DEBUG, 'channel_stacktrace', '(' +\n this.channelzRef.id +\n ') ' +\n 'Channel constructed \\n' +\n ((_h = error.stack) === null || _h === void 0 ? void 0 : _h.substring(error.stack.indexOf('\\n') + 1)));\n this.lastActivityTimestamp = new Date();\n }\n getChannelzInfo() {\n return {\n target: this.originalTarget,\n state: this.connectivityState,\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n children: this.childrenTracker.getChildLists(),\n };\n }\n trace(text, verbosityOverride) {\n (0, logging_1.trace)(verbosityOverride !== null && verbosityOverride !== void 0 ? verbosityOverride : constants_1.LogVerbosity.DEBUG, 'channel', '(' + this.channelzRef.id + ') ' + (0, uri_parser_1.uriToString)(this.target) + ' ' + text);\n }\n callRefTimerRef() {\n var _a, _b, _c, _d;\n // If the hasRef function does not exist, always run the code\n if (!((_b = (_a = this.callRefTimer).hasRef) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n this.trace('callRefTimer.ref | configSelectionQueue.length=' +\n this.configSelectionQueue.length +\n ' pickQueue.length=' +\n this.pickQueue.length);\n (_d = (_c = this.callRefTimer).ref) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n }\n callRefTimerUnref() {\n var _a, _b;\n // If the hasRef function does not exist, always run the code\n if (!this.callRefTimer.hasRef || this.callRefTimer.hasRef()) {\n this.trace('callRefTimer.unref | configSelectionQueue.length=' +\n this.configSelectionQueue.length +\n ' pickQueue.length=' +\n this.pickQueue.length);\n (_b = (_a = this.callRefTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n removeConnectivityStateWatcher(watcherObject) {\n const watcherIndex = this.connectivityStateWatchers.findIndex(value => value === watcherObject);\n if (watcherIndex >= 0) {\n this.connectivityStateWatchers.splice(watcherIndex, 1);\n }\n }\n updateState(newState) {\n (0, logging_1.trace)(constants_1.LogVerbosity.DEBUG, 'connectivity_state', '(' +\n this.channelzRef.id +\n ') ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ' ' +\n connectivity_state_1.ConnectivityState[this.connectivityState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connectivity state change to ' + connectivity_state_1.ConnectivityState[newState]);\n }\n this.connectivityState = newState;\n const watchersCopy = this.connectivityStateWatchers.slice();\n for (const watcherObject of watchersCopy) {\n if (newState !== watcherObject.currentState) {\n if (watcherObject.timer) {\n clearTimeout(watcherObject.timer);\n }\n this.removeConnectivityStateWatcher(watcherObject);\n watcherObject.callback();\n }\n }\n if (newState !== connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n this.currentResolutionError = null;\n }\n }\n throttleKeepalive(newKeepaliveTime) {\n if (newKeepaliveTime > this.keepaliveTime) {\n this.keepaliveTime = newKeepaliveTime;\n for (const wrappedSubchannel of this.wrappedSubchannels) {\n wrappedSubchannel.throttleKeepalive(newKeepaliveTime);\n }\n }\n }\n removeWrappedSubchannel(wrappedSubchannel) {\n this.wrappedSubchannels.delete(wrappedSubchannel);\n }\n doPick(metadata, extraPickInfo) {\n return this.currentPicker.pick({\n metadata: metadata,\n extraPickInfo: extraPickInfo,\n });\n }\n queueCallForPick(call) {\n this.pickQueue.push(call);\n this.callRefTimerRef();\n }\n getConfig(method, metadata) {\n this.resolvingLoadBalancer.exitIdle();\n if (this.configSelector) {\n return {\n type: 'SUCCESS',\n config: this.configSelector(method, metadata, this.randomChannelId),\n };\n }\n else {\n if (this.currentResolutionError) {\n return {\n type: 'ERROR',\n error: this.currentResolutionError,\n };\n }\n else {\n return {\n type: 'NONE',\n };\n }\n }\n }\n queueCallForConfig(call) {\n this.configSelectionQueue.push(call);\n this.callRefTimerRef();\n }\n enterIdle() {\n this.resolvingLoadBalancer.destroy();\n this.updateState(connectivity_state_1.ConnectivityState.IDLE);\n this.currentPicker = new picker_1.QueuePicker(this.resolvingLoadBalancer);\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n }\n startIdleTimeout(timeoutMs) {\n var _a, _b;\n this.idleTimer = setTimeout(() => {\n if (this.callCount > 0) {\n /* If there is currently a call, the channel will not go idle for a\n * period of at least idleTimeoutMs, so check again after that time.\n */\n this.startIdleTimeout(this.idleTimeoutMs);\n return;\n }\n const now = new Date();\n const timeSinceLastActivity = now.valueOf() - this.lastActivityTimestamp.valueOf();\n if (timeSinceLastActivity >= this.idleTimeoutMs) {\n this.trace('Idle timer triggered after ' +\n this.idleTimeoutMs +\n 'ms of inactivity');\n this.enterIdle();\n }\n else {\n /* Whenever the timer fires with the latest activity being too recent,\n * set the timer again for the time when the time since the last\n * activity is equal to the timeout. This should result in the timer\n * firing no more than once every idleTimeoutMs/2 on average. */\n this.startIdleTimeout(this.idleTimeoutMs - timeSinceLastActivity);\n }\n }, timeoutMs);\n (_b = (_a = this.idleTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n maybeStartIdleTimer() {\n if (this.connectivityState !== connectivity_state_1.ConnectivityState.SHUTDOWN && !this.idleTimer) {\n this.startIdleTimeout(this.idleTimeoutMs);\n }\n }\n onCallStart() {\n if (this.channelzEnabled) {\n this.callTracker.addCallStarted();\n }\n this.callCount += 1;\n }\n onCallEnd(status) {\n if (this.channelzEnabled) {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n }\n this.callCount -= 1;\n this.lastActivityTimestamp = new Date();\n this.maybeStartIdleTimer();\n }\n createLoadBalancingCall(callConfig, method, host, credentials, deadline) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createLoadBalancingCall [' + callNumber + '] method=\"' + method + '\"');\n return new load_balancing_call_1.LoadBalancingCall(this, callConfig, method, host, credentials, deadline, callNumber);\n }\n createRetryingCall(callConfig, method, host, credentials, deadline) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createRetryingCall [' + callNumber + '] method=\"' + method + '\"');\n return new retrying_call_1.RetryingCall(this, callConfig, method, host, credentials, deadline, callNumber, this.retryBufferTracker, RETRY_THROTTLER_MAP.get(this.getTarget()));\n }\n createInnerCall(callConfig, method, host, credentials, deadline) {\n // Create a RetryingCall if retries are enabled\n if (this.options['grpc.enable_retries'] === 0) {\n return this.createLoadBalancingCall(callConfig, method, host, credentials, deadline);\n }\n else {\n return this.createRetryingCall(callConfig, method, host, credentials, deadline);\n }\n }\n createResolvingCall(method, deadline, host, parentCall, propagateFlags) {\n const callNumber = (0, call_number_1.getNextCallNumber)();\n this.trace('createResolvingCall [' +\n callNumber +\n '] method=\"' +\n method +\n '\", deadline=' +\n (0, deadline_1.deadlineToString)(deadline));\n const finalOptions = {\n deadline: deadline,\n flags: propagateFlags !== null && propagateFlags !== void 0 ? propagateFlags : constants_1.Propagate.DEFAULTS,\n host: host !== null && host !== void 0 ? host : this.defaultAuthority,\n parentCall: parentCall,\n };\n const call = new resolving_call_1.ResolvingCall(this, method, finalOptions, this.filterStackFactory.clone(), this.credentials._getCallCredentials(), callNumber);\n this.onCallStart();\n call.addStatusWatcher(status => {\n this.onCallEnd(status);\n });\n return call;\n }\n close() {\n this.resolvingLoadBalancer.destroy();\n this.updateState(connectivity_state_1.ConnectivityState.SHUTDOWN);\n clearInterval(this.callRefTimer);\n if (this.idleTimer) {\n clearTimeout(this.idleTimer);\n }\n if (this.channelzEnabled) {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n this.subchannelPool.unrefUnusedSubchannels();\n }\n getTarget() {\n return (0, uri_parser_1.uriToString)(this.target);\n }\n getConnectivityState(tryToConnect) {\n const connectivityState = this.connectivityState;\n if (tryToConnect) {\n this.resolvingLoadBalancer.exitIdle();\n this.lastActivityTimestamp = new Date();\n this.maybeStartIdleTimer();\n }\n return connectivityState;\n }\n watchConnectivityState(currentState, deadline, callback) {\n if (this.connectivityState === connectivity_state_1.ConnectivityState.SHUTDOWN) {\n throw new Error('Channel has been shut down');\n }\n let timer = null;\n if (deadline !== Infinity) {\n const deadlineDate = deadline instanceof Date ? deadline : new Date(deadline);\n const now = new Date();\n if (deadline === -Infinity || deadlineDate <= now) {\n process.nextTick(callback, new Error('Deadline passed without connectivity state change'));\n return;\n }\n timer = setTimeout(() => {\n this.removeConnectivityStateWatcher(watcherObject);\n callback(new Error('Deadline passed without connectivity state change'));\n }, deadlineDate.getTime() - now.getTime());\n }\n const watcherObject = {\n currentState,\n callback,\n timer,\n };\n this.connectivityStateWatchers.push(watcherObject);\n }\n /**\n * Get the channelz reference object for this channel. The returned value is\n * garbage if channelz is disabled for this channel.\n * @returns\n */\n getChannelzRef() {\n return this.channelzRef;\n }\n createCall(method, deadline, host, parentCall, propagateFlags) {\n if (typeof method !== 'string') {\n throw new TypeError('Channel#createCall: method must be a string');\n }\n if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n throw new TypeError('Channel#createCall: deadline must be a number or Date');\n }\n if (this.connectivityState === connectivity_state_1.ConnectivityState.SHUTDOWN) {\n throw new Error('Channel has been shut down');\n }\n return this.createResolvingCall(method, deadline, host, parentCall, propagateFlags);\n }\n}\nexports.InternalChannel = InternalChannel;\n//# sourceMappingURL=internal-channel.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ChildLoadBalancerHandler = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst TYPE_NAME = 'child_load_balancer_helper';\nclass ChildLoadBalancerHandler {\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n this.options = options;\n this.currentChild = null;\n this.pendingChild = null;\n this.latestConfig = null;\n this.ChildPolicyHelper = class {\n constructor(parent) {\n this.parent = parent;\n this.child = null;\n }\n createSubchannel(subchannelAddress, subchannelArgs) {\n return this.parent.channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n }\n updateState(connectivityState, picker) {\n var _a;\n if (this.calledByPendingChild()) {\n if (connectivityState === connectivity_state_1.ConnectivityState.CONNECTING) {\n return;\n }\n (_a = this.parent.currentChild) === null || _a === void 0 ? void 0 : _a.destroy();\n this.parent.currentChild = this.parent.pendingChild;\n this.parent.pendingChild = null;\n }\n else if (!this.calledByCurrentChild()) {\n return;\n }\n this.parent.channelControlHelper.updateState(connectivityState, picker);\n }\n requestReresolution() {\n var _a;\n const latestChild = (_a = this.parent.pendingChild) !== null && _a !== void 0 ? _a : this.parent.currentChild;\n if (this.child === latestChild) {\n this.parent.channelControlHelper.requestReresolution();\n }\n }\n setChild(newChild) {\n this.child = newChild;\n }\n addChannelzChild(child) {\n this.parent.channelControlHelper.addChannelzChild(child);\n }\n removeChannelzChild(child) {\n this.parent.channelControlHelper.removeChannelzChild(child);\n }\n calledByPendingChild() {\n return this.child === this.parent.pendingChild;\n }\n calledByCurrentChild() {\n return this.child === this.parent.currentChild;\n }\n };\n }\n configUpdateRequiresNewPolicyInstance(oldConfig, newConfig) {\n return oldConfig.getLoadBalancerName() !== newConfig.getLoadBalancerName();\n }\n /**\n * Prerequisites: lbConfig !== null and lbConfig.name is registered\n * @param endpointList\n * @param lbConfig\n * @param attributes\n */\n updateAddressList(endpointList, lbConfig, attributes) {\n let childToUpdate;\n if (this.currentChild === null ||\n this.latestConfig === null ||\n this.configUpdateRequiresNewPolicyInstance(this.latestConfig, lbConfig)) {\n const newHelper = new this.ChildPolicyHelper(this);\n const newChild = (0, load_balancer_1.createLoadBalancer)(lbConfig, newHelper, this.options);\n newHelper.setChild(newChild);\n if (this.currentChild === null) {\n this.currentChild = newChild;\n childToUpdate = this.currentChild;\n }\n else {\n if (this.pendingChild) {\n this.pendingChild.destroy();\n }\n this.pendingChild = newChild;\n childToUpdate = this.pendingChild;\n }\n }\n else {\n if (this.pendingChild === null) {\n childToUpdate = this.currentChild;\n }\n else {\n childToUpdate = this.pendingChild;\n }\n }\n this.latestConfig = lbConfig;\n childToUpdate.updateAddressList(endpointList, lbConfig, attributes);\n }\n exitIdle() {\n if (this.currentChild) {\n this.currentChild.exitIdle();\n if (this.pendingChild) {\n this.pendingChild.exitIdle();\n }\n }\n }\n resetBackoff() {\n if (this.currentChild) {\n this.currentChild.resetBackoff();\n if (this.pendingChild) {\n this.pendingChild.resetBackoff();\n }\n }\n }\n destroy() {\n /* Note: state updates are only propagated from the child balancer if that\n * object is equal to this.currentChild or this.pendingChild. Since this\n * function sets both of those to null, no further state updates will\n * occur after this function returns. */\n if (this.currentChild) {\n this.currentChild.destroy();\n this.currentChild = null;\n }\n if (this.pendingChild) {\n this.pendingChild.destroy();\n this.pendingChild = null;\n }\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.ChildLoadBalancerHandler = ChildLoadBalancerHandler;\n//# sourceMappingURL=load-balancer-child-handler.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.OutlierDetectionLoadBalancer = exports.OutlierDetectionLoadBalancingConfig = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst duration_1 = require(\"./duration\");\nconst experimental_1 = require(\"./experimental\");\nconst load_balancer_1 = require(\"./load-balancer\");\nconst load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nconst picker_1 = require(\"./picker\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst subchannel_interface_1 = require(\"./subchannel-interface\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'outlier_detection';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'outlier_detection';\nconst OUTLIER_DETECTION_ENABLED = ((_a = process.env.GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION) !== null && _a !== void 0 ? _a : 'true') === 'true';\nconst defaultSuccessRateEjectionConfig = {\n stdev_factor: 1900,\n enforcement_percentage: 100,\n minimum_hosts: 5,\n request_volume: 100,\n};\nconst defaultFailurePercentageEjectionConfig = {\n threshold: 85,\n enforcement_percentage: 100,\n minimum_hosts: 5,\n request_volume: 50,\n};\nfunction validateFieldType(obj, fieldName, expectedType, objectName) {\n if (fieldName in obj &&\n obj[fieldName] !== undefined &&\n typeof obj[fieldName] !== expectedType) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n throw new Error(`outlier detection config ${fullFieldName} parse error: expected ${expectedType}, got ${typeof obj[fieldName]}`);\n }\n}\nfunction validatePositiveDuration(obj, fieldName, objectName) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n if (fieldName in obj && obj[fieldName] !== undefined) {\n if (!(0, duration_1.isDuration)(obj[fieldName])) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: expected Duration, got ${typeof obj[fieldName]}`);\n }\n if (!(obj[fieldName].seconds >= 0 &&\n obj[fieldName].seconds <= 315576000000 &&\n obj[fieldName].nanos >= 0 &&\n obj[fieldName].nanos <= 999999999)) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: values out of range for non-negative Duaration`);\n }\n }\n}\nfunction validatePercentage(obj, fieldName, objectName) {\n const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n validateFieldType(obj, fieldName, 'number', objectName);\n if (fieldName in obj &&\n obj[fieldName] !== undefined &&\n !(obj[fieldName] >= 0 && obj[fieldName] <= 100)) {\n throw new Error(`outlier detection config ${fullFieldName} parse error: value out of range for percentage (0-100)`);\n }\n}\nclass OutlierDetectionLoadBalancingConfig {\n constructor(intervalMs, baseEjectionTimeMs, maxEjectionTimeMs, maxEjectionPercent, successRateEjection, failurePercentageEjection, childPolicy) {\n this.childPolicy = childPolicy;\n if (childPolicy.getLoadBalancerName() === 'pick_first') {\n throw new Error('outlier_detection LB policy cannot have a pick_first child policy');\n }\n this.intervalMs = intervalMs !== null && intervalMs !== void 0 ? intervalMs : 10000;\n this.baseEjectionTimeMs = baseEjectionTimeMs !== null && baseEjectionTimeMs !== void 0 ? baseEjectionTimeMs : 30000;\n this.maxEjectionTimeMs = maxEjectionTimeMs !== null && maxEjectionTimeMs !== void 0 ? maxEjectionTimeMs : 300000;\n this.maxEjectionPercent = maxEjectionPercent !== null && maxEjectionPercent !== void 0 ? maxEjectionPercent : 10;\n this.successRateEjection = successRateEjection\n ? Object.assign(Object.assign({}, defaultSuccessRateEjectionConfig), successRateEjection) : null;\n this.failurePercentageEjection = failurePercentageEjection\n ? Object.assign(Object.assign({}, defaultFailurePercentageEjectionConfig), failurePercentageEjection) : null;\n }\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n toJsonObject() {\n var _a, _b;\n return {\n outlier_detection: {\n interval: (0, duration_1.msToDuration)(this.intervalMs),\n base_ejection_time: (0, duration_1.msToDuration)(this.baseEjectionTimeMs),\n max_ejection_time: (0, duration_1.msToDuration)(this.maxEjectionTimeMs),\n max_ejection_percent: this.maxEjectionPercent,\n success_rate_ejection: (_a = this.successRateEjection) !== null && _a !== void 0 ? _a : undefined,\n failure_percentage_ejection: (_b = this.failurePercentageEjection) !== null && _b !== void 0 ? _b : undefined,\n child_policy: [this.childPolicy.toJsonObject()],\n },\n };\n }\n getIntervalMs() {\n return this.intervalMs;\n }\n getBaseEjectionTimeMs() {\n return this.baseEjectionTimeMs;\n }\n getMaxEjectionTimeMs() {\n return this.maxEjectionTimeMs;\n }\n getMaxEjectionPercent() {\n return this.maxEjectionPercent;\n }\n getSuccessRateEjectionConfig() {\n return this.successRateEjection;\n }\n getFailurePercentageEjectionConfig() {\n return this.failurePercentageEjection;\n }\n getChildPolicy() {\n return this.childPolicy;\n }\n static createFromJson(obj) {\n var _a;\n validatePositiveDuration(obj, 'interval');\n validatePositiveDuration(obj, 'base_ejection_time');\n validatePositiveDuration(obj, 'max_ejection_time');\n validatePercentage(obj, 'max_ejection_percent');\n if ('success_rate_ejection' in obj &&\n obj.success_rate_ejection !== undefined) {\n if (typeof obj.success_rate_ejection !== 'object') {\n throw new Error('outlier detection config success_rate_ejection must be an object');\n }\n validateFieldType(obj.success_rate_ejection, 'stdev_factor', 'number', 'success_rate_ejection');\n validatePercentage(obj.success_rate_ejection, 'enforcement_percentage', 'success_rate_ejection');\n validateFieldType(obj.success_rate_ejection, 'minimum_hosts', 'number', 'success_rate_ejection');\n validateFieldType(obj.success_rate_ejection, 'request_volume', 'number', 'success_rate_ejection');\n }\n if ('failure_percentage_ejection' in obj &&\n obj.failure_percentage_ejection !== undefined) {\n if (typeof obj.failure_percentage_ejection !== 'object') {\n throw new Error('outlier detection config failure_percentage_ejection must be an object');\n }\n validatePercentage(obj.failure_percentage_ejection, 'threshold', 'failure_percentage_ejection');\n validatePercentage(obj.failure_percentage_ejection, 'enforcement_percentage', 'failure_percentage_ejection');\n validateFieldType(obj.failure_percentage_ejection, 'minimum_hosts', 'number', 'failure_percentage_ejection');\n validateFieldType(obj.failure_percentage_ejection, 'request_volume', 'number', 'failure_percentage_ejection');\n }\n if (!('child_policy' in obj) || !Array.isArray(obj.child_policy)) {\n throw new Error('outlier detection config child_policy must be an array');\n }\n const childPolicy = (0, load_balancer_1.selectLbConfigFromList)(obj.child_policy);\n if (!childPolicy) {\n throw new Error('outlier detection config child_policy: no valid recognized policy found');\n }\n return new OutlierDetectionLoadBalancingConfig(obj.interval ? (0, duration_1.durationToMs)(obj.interval) : null, obj.base_ejection_time ? (0, duration_1.durationToMs)(obj.base_ejection_time) : null, obj.max_ejection_time ? (0, duration_1.durationToMs)(obj.max_ejection_time) : null, (_a = obj.max_ejection_percent) !== null && _a !== void 0 ? _a : null, obj.success_rate_ejection, obj.failure_percentage_ejection, childPolicy);\n }\n}\nexports.OutlierDetectionLoadBalancingConfig = OutlierDetectionLoadBalancingConfig;\nclass OutlierDetectionSubchannelWrapper extends subchannel_interface_1.BaseSubchannelWrapper {\n constructor(childSubchannel, mapEntry) {\n super(childSubchannel);\n this.mapEntry = mapEntry;\n this.refCount = 0;\n }\n ref() {\n this.child.ref();\n this.refCount += 1;\n }\n unref() {\n this.child.unref();\n this.refCount -= 1;\n if (this.refCount <= 0) {\n if (this.mapEntry) {\n const index = this.mapEntry.subchannelWrappers.indexOf(this);\n if (index >= 0) {\n this.mapEntry.subchannelWrappers.splice(index, 1);\n }\n }\n }\n }\n eject() {\n this.setHealthy(false);\n }\n uneject() {\n this.setHealthy(true);\n }\n getMapEntry() {\n return this.mapEntry;\n }\n getWrappedSubchannel() {\n return this.child;\n }\n}\nfunction createEmptyBucket() {\n return {\n success: 0,\n failure: 0,\n };\n}\nclass CallCounter {\n constructor() {\n this.activeBucket = createEmptyBucket();\n this.inactiveBucket = createEmptyBucket();\n }\n addSuccess() {\n this.activeBucket.success += 1;\n }\n addFailure() {\n this.activeBucket.failure += 1;\n }\n switchBuckets() {\n this.inactiveBucket = this.activeBucket;\n this.activeBucket = createEmptyBucket();\n }\n getLastSuccesses() {\n return this.inactiveBucket.success;\n }\n getLastFailures() {\n return this.inactiveBucket.failure;\n }\n}\nclass OutlierDetectionPicker {\n constructor(wrappedPicker, countCalls) {\n this.wrappedPicker = wrappedPicker;\n this.countCalls = countCalls;\n }\n pick(pickArgs) {\n const wrappedPick = this.wrappedPicker.pick(pickArgs);\n if (wrappedPick.pickResultType === picker_1.PickResultType.COMPLETE) {\n const subchannelWrapper = wrappedPick.subchannel;\n const mapEntry = subchannelWrapper.getMapEntry();\n if (mapEntry) {\n let onCallEnded = wrappedPick.onCallEnded;\n if (this.countCalls) {\n onCallEnded = statusCode => {\n var _a;\n if (statusCode === constants_1.Status.OK) {\n mapEntry.counter.addSuccess();\n }\n else {\n mapEntry.counter.addFailure();\n }\n (_a = wrappedPick.onCallEnded) === null || _a === void 0 ? void 0 : _a.call(wrappedPick, statusCode);\n };\n }\n return Object.assign(Object.assign({}, wrappedPick), { subchannel: subchannelWrapper.getWrappedSubchannel(), onCallEnded: onCallEnded });\n }\n else {\n return Object.assign(Object.assign({}, wrappedPick), { subchannel: subchannelWrapper.getWrappedSubchannel() });\n }\n }\n else {\n return wrappedPick;\n }\n }\n}\nclass OutlierDetectionLoadBalancer {\n constructor(channelControlHelper, options) {\n this.entryMap = new subchannel_address_1.EndpointMap();\n this.latestConfig = null;\n this.timerStartTime = null;\n this.childBalancer = new load_balancer_child_handler_1.ChildLoadBalancerHandler((0, experimental_1.createChildChannelControlHelper)(channelControlHelper, {\n createSubchannel: (subchannelAddress, subchannelArgs) => {\n const originalSubchannel = channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n const mapEntry = this.entryMap.getForSubchannelAddress(subchannelAddress);\n const subchannelWrapper = new OutlierDetectionSubchannelWrapper(originalSubchannel, mapEntry);\n if ((mapEntry === null || mapEntry === void 0 ? void 0 : mapEntry.currentEjectionTimestamp) !== null) {\n // If the address is ejected, propagate that to the new subchannel wrapper\n subchannelWrapper.eject();\n }\n mapEntry === null || mapEntry === void 0 ? void 0 : mapEntry.subchannelWrappers.push(subchannelWrapper);\n return subchannelWrapper;\n },\n updateState: (connectivityState, picker) => {\n if (connectivityState === connectivity_state_1.ConnectivityState.READY) {\n channelControlHelper.updateState(connectivityState, new OutlierDetectionPicker(picker, this.isCountingEnabled()));\n }\n else {\n channelControlHelper.updateState(connectivityState, picker);\n }\n },\n }), options);\n this.ejectionTimer = setInterval(() => { }, 0);\n clearInterval(this.ejectionTimer);\n }\n isCountingEnabled() {\n return (this.latestConfig !== null &&\n (this.latestConfig.getSuccessRateEjectionConfig() !== null ||\n this.latestConfig.getFailurePercentageEjectionConfig() !== null));\n }\n getCurrentEjectionPercent() {\n let ejectionCount = 0;\n for (const mapEntry of this.entryMap.values()) {\n if (mapEntry.currentEjectionTimestamp !== null) {\n ejectionCount += 1;\n }\n }\n return (ejectionCount * 100) / this.entryMap.size;\n }\n runSuccessRateCheck(ejectionTimestamp) {\n if (!this.latestConfig) {\n return;\n }\n const successRateConfig = this.latestConfig.getSuccessRateEjectionConfig();\n if (!successRateConfig) {\n return;\n }\n trace('Running success rate check');\n // Step 1\n const targetRequestVolume = successRateConfig.request_volume;\n let addresesWithTargetVolume = 0;\n const successRates = [];\n for (const [endpoint, mapEntry] of this.entryMap.entries()) {\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n trace('Stats for ' +\n (0, subchannel_address_1.endpointToString)(endpoint) +\n ': successes=' +\n successes +\n ' failures=' +\n failures +\n ' targetRequestVolume=' +\n targetRequestVolume);\n if (successes + failures >= targetRequestVolume) {\n addresesWithTargetVolume += 1;\n successRates.push(successes / (successes + failures));\n }\n }\n trace('Found ' +\n addresesWithTargetVolume +\n ' success rate candidates; currentEjectionPercent=' +\n this.getCurrentEjectionPercent() +\n ' successRates=[' +\n successRates +\n ']');\n if (addresesWithTargetVolume < successRateConfig.minimum_hosts) {\n return;\n }\n // Step 2\n const successRateMean = successRates.reduce((a, b) => a + b) / successRates.length;\n let successRateDeviationSum = 0;\n for (const rate of successRates) {\n const deviation = rate - successRateMean;\n successRateDeviationSum += deviation * deviation;\n }\n const successRateVariance = successRateDeviationSum / successRates.length;\n const successRateStdev = Math.sqrt(successRateVariance);\n const ejectionThreshold = successRateMean -\n successRateStdev * (successRateConfig.stdev_factor / 1000);\n trace('stdev=' + successRateStdev + ' ejectionThreshold=' + ejectionThreshold);\n // Step 3\n for (const [address, mapEntry] of this.entryMap.entries()) {\n // Step 3.i\n if (this.getCurrentEjectionPercent() >=\n this.latestConfig.getMaxEjectionPercent()) {\n break;\n }\n // Step 3.ii\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n if (successes + failures < targetRequestVolume) {\n continue;\n }\n // Step 3.iii\n const successRate = successes / (successes + failures);\n trace('Checking candidate ' + address + ' successRate=' + successRate);\n if (successRate < ejectionThreshold) {\n const randomNumber = Math.random() * 100;\n trace('Candidate ' +\n address +\n ' randomNumber=' +\n randomNumber +\n ' enforcement_percentage=' +\n successRateConfig.enforcement_percentage);\n if (randomNumber < successRateConfig.enforcement_percentage) {\n trace('Ejecting candidate ' + address);\n this.eject(mapEntry, ejectionTimestamp);\n }\n }\n }\n }\n runFailurePercentageCheck(ejectionTimestamp) {\n if (!this.latestConfig) {\n return;\n }\n const failurePercentageConfig = this.latestConfig.getFailurePercentageEjectionConfig();\n if (!failurePercentageConfig) {\n return;\n }\n trace('Running failure percentage check. threshold=' +\n failurePercentageConfig.threshold +\n ' request volume threshold=' +\n failurePercentageConfig.request_volume);\n // Step 1\n let addressesWithTargetVolume = 0;\n for (const mapEntry of this.entryMap.values()) {\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n if (successes + failures >= failurePercentageConfig.request_volume) {\n addressesWithTargetVolume += 1;\n }\n }\n if (addressesWithTargetVolume < failurePercentageConfig.minimum_hosts) {\n return;\n }\n // Step 2\n for (const [address, mapEntry] of this.entryMap.entries()) {\n // Step 2.i\n if (this.getCurrentEjectionPercent() >=\n this.latestConfig.getMaxEjectionPercent()) {\n break;\n }\n // Step 2.ii\n const successes = mapEntry.counter.getLastSuccesses();\n const failures = mapEntry.counter.getLastFailures();\n trace('Candidate successes=' + successes + ' failures=' + failures);\n if (successes + failures < failurePercentageConfig.request_volume) {\n continue;\n }\n // Step 2.iii\n const failurePercentage = (failures * 100) / (failures + successes);\n if (failurePercentage > failurePercentageConfig.threshold) {\n const randomNumber = Math.random() * 100;\n trace('Candidate ' +\n address +\n ' randomNumber=' +\n randomNumber +\n ' enforcement_percentage=' +\n failurePercentageConfig.enforcement_percentage);\n if (randomNumber < failurePercentageConfig.enforcement_percentage) {\n trace('Ejecting candidate ' + address);\n this.eject(mapEntry, ejectionTimestamp);\n }\n }\n }\n }\n eject(mapEntry, ejectionTimestamp) {\n mapEntry.currentEjectionTimestamp = new Date();\n mapEntry.ejectionTimeMultiplier += 1;\n for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n subchannelWrapper.eject();\n }\n }\n uneject(mapEntry) {\n mapEntry.currentEjectionTimestamp = null;\n for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n subchannelWrapper.uneject();\n }\n }\n switchAllBuckets() {\n for (const mapEntry of this.entryMap.values()) {\n mapEntry.counter.switchBuckets();\n }\n }\n startTimer(delayMs) {\n var _a, _b;\n this.ejectionTimer = setTimeout(() => this.runChecks(), delayMs);\n (_b = (_a = this.ejectionTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n runChecks() {\n const ejectionTimestamp = new Date();\n trace('Ejection timer running');\n this.switchAllBuckets();\n if (!this.latestConfig) {\n return;\n }\n this.timerStartTime = ejectionTimestamp;\n this.startTimer(this.latestConfig.getIntervalMs());\n this.runSuccessRateCheck(ejectionTimestamp);\n this.runFailurePercentageCheck(ejectionTimestamp);\n for (const [address, mapEntry] of this.entryMap.entries()) {\n if (mapEntry.currentEjectionTimestamp === null) {\n if (mapEntry.ejectionTimeMultiplier > 0) {\n mapEntry.ejectionTimeMultiplier -= 1;\n }\n }\n else {\n const baseEjectionTimeMs = this.latestConfig.getBaseEjectionTimeMs();\n const maxEjectionTimeMs = this.latestConfig.getMaxEjectionTimeMs();\n const returnTime = new Date(mapEntry.currentEjectionTimestamp.getTime());\n returnTime.setMilliseconds(returnTime.getMilliseconds() +\n Math.min(baseEjectionTimeMs * mapEntry.ejectionTimeMultiplier, Math.max(baseEjectionTimeMs, maxEjectionTimeMs)));\n if (returnTime < new Date()) {\n trace('Unejecting ' + address);\n this.uneject(mapEntry);\n }\n }\n }\n }\n updateAddressList(endpointList, lbConfig, attributes) {\n if (!(lbConfig instanceof OutlierDetectionLoadBalancingConfig)) {\n return;\n }\n for (const endpoint of endpointList) {\n if (!this.entryMap.has(endpoint)) {\n trace('Adding map entry for ' + (0, subchannel_address_1.endpointToString)(endpoint));\n this.entryMap.set(endpoint, {\n counter: new CallCounter(),\n currentEjectionTimestamp: null,\n ejectionTimeMultiplier: 0,\n subchannelWrappers: [],\n });\n }\n }\n this.entryMap.deleteMissing(endpointList);\n const childPolicy = lbConfig.getChildPolicy();\n this.childBalancer.updateAddressList(endpointList, childPolicy, attributes);\n if (lbConfig.getSuccessRateEjectionConfig() ||\n lbConfig.getFailurePercentageEjectionConfig()) {\n if (this.timerStartTime) {\n trace('Previous timer existed. Replacing timer');\n clearTimeout(this.ejectionTimer);\n const remainingDelay = lbConfig.getIntervalMs() -\n (new Date().getTime() - this.timerStartTime.getTime());\n this.startTimer(remainingDelay);\n }\n else {\n trace('Starting new timer');\n this.timerStartTime = new Date();\n this.startTimer(lbConfig.getIntervalMs());\n this.switchAllBuckets();\n }\n }\n else {\n trace('Counting disabled. Cancelling timer.');\n this.timerStartTime = null;\n clearTimeout(this.ejectionTimer);\n for (const mapEntry of this.entryMap.values()) {\n this.uneject(mapEntry);\n mapEntry.ejectionTimeMultiplier = 0;\n }\n }\n this.latestConfig = lbConfig;\n }\n exitIdle() {\n this.childBalancer.exitIdle();\n }\n resetBackoff() {\n this.childBalancer.resetBackoff();\n }\n destroy() {\n clearTimeout(this.ejectionTimer);\n this.childBalancer.destroy();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.OutlierDetectionLoadBalancer = OutlierDetectionLoadBalancer;\nfunction setup() {\n if (OUTLIER_DETECTION_ENABLED) {\n (0, experimental_1.registerLoadBalancerType)(TYPE_NAME, OutlierDetectionLoadBalancer, OutlierDetectionLoadBalancingConfig);\n }\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-outlier-detection.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.LeafLoadBalancer = exports.PickFirstLoadBalancer = exports.shuffled = exports.PickFirstLoadBalancingConfig = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst picker_1 = require(\"./picker\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst net_1 = require(\"net\");\nconst TRACER_NAME = 'pick_first';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'pick_first';\n/**\n * Delay after starting a connection on a subchannel before starting a\n * connection on the next subchannel in the list, for Happy Eyeballs algorithm.\n */\nconst CONNECTION_DELAY_INTERVAL_MS = 250;\nclass PickFirstLoadBalancingConfig {\n constructor(shuffleAddressList) {\n this.shuffleAddressList = shuffleAddressList;\n }\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n toJsonObject() {\n return {\n [TYPE_NAME]: {\n shuffleAddressList: this.shuffleAddressList,\n },\n };\n }\n getShuffleAddressList() {\n return this.shuffleAddressList;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static createFromJson(obj) {\n if ('shuffleAddressList' in obj &&\n !(typeof obj.shuffleAddressList === 'boolean')) {\n throw new Error('pick_first config field shuffleAddressList must be a boolean if provided');\n }\n return new PickFirstLoadBalancingConfig(obj.shuffleAddressList === true);\n }\n}\nexports.PickFirstLoadBalancingConfig = PickFirstLoadBalancingConfig;\n/**\n * Picker for a `PickFirstLoadBalancer` in the READY state. Always returns the\n * picked subchannel.\n */\nclass PickFirstPicker {\n constructor(subchannel) {\n this.subchannel = subchannel;\n }\n pick(pickArgs) {\n return {\n pickResultType: picker_1.PickResultType.COMPLETE,\n subchannel: this.subchannel,\n status: null,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n}\n/**\n * Return a new array with the elements of the input array in a random order\n * @param list The input array\n * @returns A shuffled array of the elements of list\n */\nfunction shuffled(list) {\n const result = list.slice();\n for (let i = result.length - 1; i > 1; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = result[i];\n result[i] = result[j];\n result[j] = temp;\n }\n return result;\n}\nexports.shuffled = shuffled;\n/**\n * Interleave addresses in addressList by family in accordance with RFC-8304 section 4\n * @param addressList\n * @returns\n */\nfunction interleaveAddressFamilies(addressList) {\n const result = [];\n const ipv6Addresses = [];\n const ipv4Addresses = [];\n const ipv6First = (0, subchannel_address_1.isTcpSubchannelAddress)(addressList[0]) && (0, net_1.isIPv6)(addressList[0].host);\n for (const address of addressList) {\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(address) && (0, net_1.isIPv6)(address.host)) {\n ipv6Addresses.push(address);\n }\n else {\n ipv4Addresses.push(address);\n }\n }\n const firstList = ipv6First ? ipv6Addresses : ipv4Addresses;\n const secondList = ipv6First ? ipv4Addresses : ipv6Addresses;\n for (let i = 0; i < Math.max(firstList.length, secondList.length); i++) {\n if (i < firstList.length) {\n result.push(firstList[i]);\n }\n if (i < secondList.length) {\n result.push(secondList[i]);\n }\n }\n return result;\n}\nconst REPORT_HEALTH_STATUS_OPTION_NAME = 'grpc-node.internal.pick-first.report_health_status';\nclass PickFirstLoadBalancer {\n /**\n * Load balancer that attempts to connect to each backend in the address list\n * in order, and picks the first one that connects, using it for every\n * request.\n * @param channelControlHelper `ChannelControlHelper` instance provided by\n * this load balancer's owner.\n */\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n /**\n * The list of subchannels this load balancer is currently attempting to\n * connect to.\n */\n this.children = [];\n /**\n * The current connectivity state of the load balancer.\n */\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The index within the `subchannels` array of the subchannel with the most\n * recently started connection attempt.\n */\n this.currentSubchannelIndex = 0;\n /**\n * The currently picked subchannel used for making calls. Populated if\n * and only if the load balancer's current state is READY. In that case,\n * the subchannel's current state is also READY.\n */\n this.currentPick = null;\n /**\n * Listener callback attached to each subchannel in the `subchannels` list\n * while establishing a connection.\n */\n this.subchannelStateListener = (subchannel, previousState, newState, keepaliveTime, errorMessage) => {\n this.onSubchannelStateUpdate(subchannel, previousState, newState, errorMessage);\n };\n this.pickedSubchannelHealthListener = () => this.calculateAndReportNewState();\n this.triedAllSubchannels = false;\n /**\n * The LB policy enters sticky TRANSIENT_FAILURE mode when all\n * subchannels have failed to connect at least once, and it stays in that\n * mode until a connection attempt is successful. While in sticky TF mode,\n * the LB policy continuously attempts to connect to all of its subchannels.\n */\n this.stickyTransientFailureMode = false;\n /**\n * Indicates whether we called channelControlHelper.requestReresolution since\n * the last call to updateAddressList\n */\n this.requestedResolutionSinceLastUpdate = false;\n /**\n * The most recent error reported by any subchannel as it transitioned to\n * TRANSIENT_FAILURE.\n */\n this.lastError = null;\n this.latestAddressList = null;\n this.connectionDelayTimeout = setTimeout(() => { }, 0);\n clearTimeout(this.connectionDelayTimeout);\n this.reportHealthStatus = options[REPORT_HEALTH_STATUS_OPTION_NAME];\n }\n allChildrenHaveReportedTF() {\n return this.children.every(child => child.hasReportedTransientFailure);\n }\n calculateAndReportNewState() {\n if (this.currentPick) {\n if (this.reportHealthStatus && !this.currentPick.isHealthy()) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({\n details: `Picked subchannel ${this.currentPick.getAddress()} is unhealthy`,\n }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.READY, new PickFirstPicker(this.currentPick));\n }\n }\n else if (this.children.length === 0) {\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n }\n else {\n if (this.stickyTransientFailureMode) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({ details: `No connection established. Last error: ${this.lastError}` }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, new picker_1.QueuePicker(this));\n }\n }\n }\n requestReresolution() {\n this.requestedResolutionSinceLastUpdate = true;\n this.channelControlHelper.requestReresolution();\n }\n maybeEnterStickyTransientFailureMode() {\n if (!this.allChildrenHaveReportedTF()) {\n return;\n }\n if (!this.requestedResolutionSinceLastUpdate) {\n /* Each time we get an update we reset each subchannel's\n * hasReportedTransientFailure flag, so the next time we get to this\n * point after that, each subchannel has reported TRANSIENT_FAILURE\n * at least once since then. That is the trigger for requesting\n * reresolution, whether or not the LB policy is already in sticky TF\n * mode. */\n this.requestReresolution();\n }\n if (this.stickyTransientFailureMode) {\n return;\n }\n this.stickyTransientFailureMode = true;\n for (const { subchannel } of this.children) {\n subchannel.startConnecting();\n }\n this.calculateAndReportNewState();\n }\n removeCurrentPick() {\n if (this.currentPick !== null) {\n /* Unref can cause a state change, which can cause a change in the value\n * of this.currentPick, so we hold a local reference to make sure that\n * does not impact this function. */\n const currentPick = this.currentPick;\n this.currentPick = null;\n currentPick.unref();\n currentPick.removeConnectivityStateListener(this.subchannelStateListener);\n this.channelControlHelper.removeChannelzChild(currentPick.getChannelzRef());\n if (this.reportHealthStatus) {\n currentPick.removeHealthStateWatcher(this.pickedSubchannelHealthListener);\n }\n }\n }\n onSubchannelStateUpdate(subchannel, previousState, newState, errorMessage) {\n var _a;\n if ((_a = this.currentPick) === null || _a === void 0 ? void 0 : _a.realSubchannelEquals(subchannel)) {\n if (newState !== connectivity_state_1.ConnectivityState.READY) {\n this.removeCurrentPick();\n this.calculateAndReportNewState();\n this.requestReresolution();\n }\n return;\n }\n for (const [index, child] of this.children.entries()) {\n if (subchannel.realSubchannelEquals(child.subchannel)) {\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n this.pickSubchannel(child.subchannel);\n }\n if (newState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n child.hasReportedTransientFailure = true;\n if (errorMessage) {\n this.lastError = errorMessage;\n }\n this.maybeEnterStickyTransientFailureMode();\n if (index === this.currentSubchannelIndex) {\n this.startNextSubchannelConnecting(index + 1);\n }\n }\n child.subchannel.startConnecting();\n return;\n }\n }\n }\n startNextSubchannelConnecting(startIndex) {\n clearTimeout(this.connectionDelayTimeout);\n if (this.triedAllSubchannels) {\n return;\n }\n for (const [index, child] of this.children.entries()) {\n if (index >= startIndex) {\n const subchannelState = child.subchannel.getConnectivityState();\n if (subchannelState === connectivity_state_1.ConnectivityState.IDLE ||\n subchannelState === connectivity_state_1.ConnectivityState.CONNECTING) {\n this.startConnecting(index);\n return;\n }\n }\n }\n this.triedAllSubchannels = true;\n this.maybeEnterStickyTransientFailureMode();\n }\n /**\n * Have a single subchannel in the `subchannels` list start connecting.\n * @param subchannelIndex The index into the `subchannels` list.\n */\n startConnecting(subchannelIndex) {\n var _a, _b;\n clearTimeout(this.connectionDelayTimeout);\n this.currentSubchannelIndex = subchannelIndex;\n if (this.children[subchannelIndex].subchannel.getConnectivityState() ===\n connectivity_state_1.ConnectivityState.IDLE) {\n trace('Start connecting to subchannel with address ' +\n this.children[subchannelIndex].subchannel.getAddress());\n process.nextTick(() => {\n var _a;\n (_a = this.children[subchannelIndex]) === null || _a === void 0 ? void 0 : _a.subchannel.startConnecting();\n });\n }\n this.connectionDelayTimeout = (_b = (_a = setTimeout(() => {\n this.startNextSubchannelConnecting(subchannelIndex + 1);\n }, CONNECTION_DELAY_INTERVAL_MS)).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n pickSubchannel(subchannel) {\n if (this.currentPick && subchannel.realSubchannelEquals(this.currentPick)) {\n return;\n }\n trace('Pick subchannel with address ' + subchannel.getAddress());\n this.stickyTransientFailureMode = false;\n this.removeCurrentPick();\n this.currentPick = subchannel;\n subchannel.ref();\n if (this.reportHealthStatus) {\n subchannel.addHealthStateWatcher(this.pickedSubchannelHealthListener);\n }\n this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n this.resetSubchannelList();\n clearTimeout(this.connectionDelayTimeout);\n this.calculateAndReportNewState();\n }\n updateState(newState, picker) {\n trace(connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n this.currentState = newState;\n this.channelControlHelper.updateState(newState, picker);\n }\n resetSubchannelList() {\n for (const child of this.children) {\n if (!(this.currentPick && child.subchannel.realSubchannelEquals(this.currentPick))) {\n /* The connectivity state listener is the same whether the subchannel\n * is in the list of children or it is the currentPick, so if it is in\n * both, removing it here would cause problems. In particular, that\n * always happens immediately after the subchannel is picked. */\n child.subchannel.removeConnectivityStateListener(this.subchannelStateListener);\n }\n /* Refs are counted independently for the children list and the\n * currentPick, so we call unref whether or not the child is the\n * currentPick. Channelz child references are also refcounted, so\n * removeChannelzChild can be handled the same way. */\n child.subchannel.unref();\n this.channelControlHelper.removeChannelzChild(child.subchannel.getChannelzRef());\n }\n this.currentSubchannelIndex = 0;\n this.children = [];\n this.triedAllSubchannels = false;\n this.requestedResolutionSinceLastUpdate = false;\n }\n connectToAddressList(addressList) {\n const newChildrenList = addressList.map(address => ({\n subchannel: this.channelControlHelper.createSubchannel(address, {}),\n hasReportedTransientFailure: false,\n }));\n /* Ref each subchannel before resetting the list, to ensure that\n * subchannels shared between the list don't drop to 0 refs during the\n * transition. */\n for (const { subchannel } of newChildrenList) {\n subchannel.ref();\n this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n }\n this.resetSubchannelList();\n this.children = newChildrenList;\n for (const { subchannel } of this.children) {\n subchannel.addConnectivityStateListener(this.subchannelStateListener);\n if (subchannel.getConnectivityState() === connectivity_state_1.ConnectivityState.READY) {\n this.pickSubchannel(subchannel);\n return;\n }\n }\n for (const child of this.children) {\n if (child.subchannel.getConnectivityState() ===\n connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n child.hasReportedTransientFailure = true;\n }\n }\n this.startNextSubchannelConnecting(0);\n this.calculateAndReportNewState();\n }\n updateAddressList(endpointList, lbConfig) {\n if (!(lbConfig instanceof PickFirstLoadBalancingConfig)) {\n return;\n }\n /* Previously, an update would be discarded if it was identical to the\n * previous update, to minimize churn. Now the DNS resolver is\n * rate-limited, so that is less of a concern. */\n if (lbConfig.getShuffleAddressList()) {\n endpointList = shuffled(endpointList);\n }\n const rawAddressList = [].concat(...endpointList.map(endpoint => endpoint.addresses));\n if (rawAddressList.length === 0) {\n throw new Error('No addresses in endpoint list passed to pick_first');\n }\n const addressList = interleaveAddressFamilies(rawAddressList);\n this.latestAddressList = addressList;\n this.connectToAddressList(addressList);\n }\n exitIdle() {\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE && this.latestAddressList) {\n this.connectToAddressList(this.latestAddressList);\n }\n }\n resetBackoff() {\n /* The pick first load balancer does not have a connection backoff, so this\n * does nothing */\n }\n destroy() {\n this.resetSubchannelList();\n this.removeCurrentPick();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.PickFirstLoadBalancer = PickFirstLoadBalancer;\nconst LEAF_CONFIG = new PickFirstLoadBalancingConfig(false);\n/**\n * This class handles the leaf load balancing operations for a single endpoint.\n * It is a thin wrapper around a PickFirstLoadBalancer with a different API\n * that more closely reflects how it will be used as a leaf balancer.\n */\nclass LeafLoadBalancer {\n constructor(endpoint, channelControlHelper, options) {\n this.endpoint = endpoint;\n this.latestState = connectivity_state_1.ConnectivityState.IDLE;\n const childChannelControlHelper = (0, load_balancer_1.createChildChannelControlHelper)(channelControlHelper, {\n updateState: (connectivityState, picker) => {\n this.latestState = connectivityState;\n this.latestPicker = picker;\n channelControlHelper.updateState(connectivityState, picker);\n },\n });\n this.pickFirstBalancer = new PickFirstLoadBalancer(childChannelControlHelper, Object.assign(Object.assign({}, options), { [REPORT_HEALTH_STATUS_OPTION_NAME]: true }));\n this.latestPicker = new picker_1.QueuePicker(this.pickFirstBalancer);\n }\n startConnecting() {\n this.pickFirstBalancer.updateAddressList([this.endpoint], LEAF_CONFIG);\n }\n /**\n * Update the endpoint associated with this LeafLoadBalancer to a new\n * endpoint. Does not trigger connection establishment if a connection\n * attempt is not already in progress.\n * @param newEndpoint\n */\n updateEndpoint(newEndpoint) {\n this.endpoint = newEndpoint;\n if (this.latestState !== connectivity_state_1.ConnectivityState.IDLE) {\n this.startConnecting();\n }\n }\n getConnectivityState() {\n return this.latestState;\n }\n getPicker() {\n return this.latestPicker;\n }\n getEndpoint() {\n return this.endpoint;\n }\n exitIdle() {\n this.pickFirstBalancer.exitIdle();\n }\n destroy() {\n this.pickFirstBalancer.destroy();\n }\n}\nexports.LeafLoadBalancer = LeafLoadBalancer;\nfunction setup() {\n (0, load_balancer_1.registerLoadBalancerType)(TYPE_NAME, PickFirstLoadBalancer, PickFirstLoadBalancingConfig);\n (0, load_balancer_1.registerDefaultLoadBalancerType)(TYPE_NAME);\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-pick-first.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.RoundRobinLoadBalancer = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst picker_1 = require(\"./picker\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst load_balancer_pick_first_1 = require(\"./load-balancer-pick-first\");\nconst TRACER_NAME = 'round_robin';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst TYPE_NAME = 'round_robin';\nclass RoundRobinLoadBalancingConfig {\n getLoadBalancerName() {\n return TYPE_NAME;\n }\n constructor() { }\n toJsonObject() {\n return {\n [TYPE_NAME]: {},\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static createFromJson(obj) {\n return new RoundRobinLoadBalancingConfig();\n }\n}\nclass RoundRobinPicker {\n constructor(children, nextIndex = 0) {\n this.children = children;\n this.nextIndex = nextIndex;\n }\n pick(pickArgs) {\n const childPicker = this.children[this.nextIndex].picker;\n this.nextIndex = (this.nextIndex + 1) % this.children.length;\n return childPicker.pick(pickArgs);\n }\n /**\n * Check what the next subchannel returned would be. Used by the load\n * balancer implementation to preserve this part of the picker state if\n * possible when a subchannel connects or disconnects.\n */\n peekNextEndpoint() {\n return this.children[this.nextIndex].endpoint;\n }\n}\nclass RoundRobinLoadBalancer {\n constructor(channelControlHelper, options) {\n this.channelControlHelper = channelControlHelper;\n this.options = options;\n this.children = [];\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n this.currentReadyPicker = null;\n this.updatesPaused = false;\n this.lastError = null;\n this.childChannelControlHelper = (0, load_balancer_1.createChildChannelControlHelper)(channelControlHelper, {\n updateState: (connectivityState, picker) => {\n this.calculateAndUpdateState();\n },\n });\n }\n countChildrenWithState(state) {\n return this.children.filter(child => child.getConnectivityState() === state)\n .length;\n }\n calculateAndUpdateState() {\n if (this.updatesPaused) {\n return;\n }\n if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.READY) > 0) {\n const readyChildren = this.children.filter(child => child.getConnectivityState() === connectivity_state_1.ConnectivityState.READY);\n let index = 0;\n if (this.currentReadyPicker !== null) {\n const nextPickedEndpoint = this.currentReadyPicker.peekNextEndpoint();\n index = readyChildren.findIndex(child => (0, subchannel_address_1.endpointEqual)(child.getEndpoint(), nextPickedEndpoint));\n if (index < 0) {\n index = 0;\n }\n }\n this.updateState(connectivity_state_1.ConnectivityState.READY, new RoundRobinPicker(readyChildren.map(child => ({\n endpoint: child.getEndpoint(),\n picker: child.getPicker(),\n })), index));\n }\n else if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.CONNECTING) > 0) {\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, new picker_1.QueuePicker(this));\n }\n else if (this.countChildrenWithState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) > 0) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker({ details: `No connection established. Last error: ${this.lastError}` }));\n }\n else {\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n }\n /* round_robin should keep all children connected, this is how we do that.\n * We can't do this more efficiently in the individual child's updateState\n * callback because that doesn't have a reference to which child the state\n * change is associated with. */\n for (const child of this.children) {\n if (child.getConnectivityState() === connectivity_state_1.ConnectivityState.IDLE) {\n child.exitIdle();\n }\n }\n }\n updateState(newState, picker) {\n trace(connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (newState === connectivity_state_1.ConnectivityState.READY) {\n this.currentReadyPicker = picker;\n }\n else {\n this.currentReadyPicker = null;\n }\n this.currentState = newState;\n this.channelControlHelper.updateState(newState, picker);\n }\n resetSubchannelList() {\n for (const child of this.children) {\n child.destroy();\n }\n }\n updateAddressList(endpointList, lbConfig) {\n this.resetSubchannelList();\n trace('Connect to endpoint list ' + endpointList.map(subchannel_address_1.endpointToString));\n this.updatesPaused = true;\n this.children = endpointList.map(endpoint => new load_balancer_pick_first_1.LeafLoadBalancer(endpoint, this.childChannelControlHelper, this.options));\n for (const child of this.children) {\n child.startConnecting();\n }\n this.updatesPaused = false;\n this.calculateAndUpdateState();\n }\n exitIdle() {\n /* The round_robin LB policy is only in the IDLE state if it has no\n * addresses to try to connect to and it has no picked subchannel.\n * In that case, there is no meaningful action that can be taken here. */\n }\n resetBackoff() {\n // This LB policy has no backoff to reset\n }\n destroy() {\n this.resetSubchannelList();\n }\n getTypeName() {\n return TYPE_NAME;\n }\n}\nexports.RoundRobinLoadBalancer = RoundRobinLoadBalancer;\nfunction setup() {\n (0, load_balancer_1.registerLoadBalancerType)(TYPE_NAME, RoundRobinLoadBalancer, RoundRobinLoadBalancingConfig);\n}\nexports.setup = setup;\n//# sourceMappingURL=load-balancer-round-robin.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.selectLbConfigFromList = exports.getDefaultConfig = exports.parseLoadBalancingConfig = exports.isLoadBalancerNameRegistered = exports.createLoadBalancer = exports.registerDefaultLoadBalancerType = exports.registerLoadBalancerType = exports.createChildChannelControlHelper = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\n/**\n * Create a child ChannelControlHelper that overrides some methods of the\n * parent while letting others pass through to the parent unmodified. This\n * allows other code to create these children without needing to know about\n * all of the methods to be passed through.\n * @param parent\n * @param overrides\n */\nfunction createChildChannelControlHelper(parent, overrides) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n return {\n createSubchannel: (_b = (_a = overrides.createSubchannel) === null || _a === void 0 ? void 0 : _a.bind(overrides)) !== null && _b !== void 0 ? _b : parent.createSubchannel.bind(parent),\n updateState: (_d = (_c = overrides.updateState) === null || _c === void 0 ? void 0 : _c.bind(overrides)) !== null && _d !== void 0 ? _d : parent.updateState.bind(parent),\n requestReresolution: (_f = (_e = overrides.requestReresolution) === null || _e === void 0 ? void 0 : _e.bind(overrides)) !== null && _f !== void 0 ? _f : parent.requestReresolution.bind(parent),\n addChannelzChild: (_h = (_g = overrides.addChannelzChild) === null || _g === void 0 ? void 0 : _g.bind(overrides)) !== null && _h !== void 0 ? _h : parent.addChannelzChild.bind(parent),\n removeChannelzChild: (_k = (_j = overrides.removeChannelzChild) === null || _j === void 0 ? void 0 : _j.bind(overrides)) !== null && _k !== void 0 ? _k : parent.removeChannelzChild.bind(parent),\n };\n}\nexports.createChildChannelControlHelper = createChildChannelControlHelper;\nconst registeredLoadBalancerTypes = {};\nlet defaultLoadBalancerType = null;\nfunction registerLoadBalancerType(typeName, loadBalancerType, loadBalancingConfigType) {\n registeredLoadBalancerTypes[typeName] = {\n LoadBalancer: loadBalancerType,\n LoadBalancingConfig: loadBalancingConfigType,\n };\n}\nexports.registerLoadBalancerType = registerLoadBalancerType;\nfunction registerDefaultLoadBalancerType(typeName) {\n defaultLoadBalancerType = typeName;\n}\nexports.registerDefaultLoadBalancerType = registerDefaultLoadBalancerType;\nfunction createLoadBalancer(config, channelControlHelper, options) {\n const typeName = config.getLoadBalancerName();\n if (typeName in registeredLoadBalancerTypes) {\n return new registeredLoadBalancerTypes[typeName].LoadBalancer(channelControlHelper, options);\n }\n else {\n return null;\n }\n}\nexports.createLoadBalancer = createLoadBalancer;\nfunction isLoadBalancerNameRegistered(typeName) {\n return typeName in registeredLoadBalancerTypes;\n}\nexports.isLoadBalancerNameRegistered = isLoadBalancerNameRegistered;\nfunction parseLoadBalancingConfig(rawConfig) {\n const keys = Object.keys(rawConfig);\n if (keys.length !== 1) {\n throw new Error('Provided load balancing config has multiple conflicting entries');\n }\n const typeName = keys[0];\n if (typeName in registeredLoadBalancerTypes) {\n try {\n return registeredLoadBalancerTypes[typeName].LoadBalancingConfig.createFromJson(rawConfig[typeName]);\n }\n catch (e) {\n throw new Error(`${typeName}: ${e.message}`);\n }\n }\n else {\n throw new Error(`Unrecognized load balancing config name ${typeName}`);\n }\n}\nexports.parseLoadBalancingConfig = parseLoadBalancingConfig;\nfunction getDefaultConfig() {\n if (!defaultLoadBalancerType) {\n throw new Error('No default load balancer type registered');\n }\n return new registeredLoadBalancerTypes[defaultLoadBalancerType].LoadBalancingConfig();\n}\nexports.getDefaultConfig = getDefaultConfig;\nfunction selectLbConfigFromList(configs, fallbackTodefault = false) {\n for (const config of configs) {\n try {\n return parseLoadBalancingConfig(config);\n }\n catch (e) {\n (0, logging_1.log)(constants_1.LogVerbosity.DEBUG, 'Config parsing failed with error', e.message);\n continue;\n }\n }\n if (fallbackTodefault) {\n if (defaultLoadBalancerType) {\n return new registeredLoadBalancerTypes[defaultLoadBalancerType].LoadBalancingConfig();\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n}\nexports.selectLbConfigFromList = selectLbConfigFromList;\n//# sourceMappingURL=load-balancer.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancingCall = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst picker_1 = require(\"./picker\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst logging = require(\"./logging\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst http2 = require(\"http2\");\nconst TRACER_NAME = 'load_balancing_call';\nclass LoadBalancingCall {\n constructor(channel, callConfig, methodName, host, credentials, deadline, callNumber) {\n var _a, _b;\n this.channel = channel;\n this.callConfig = callConfig;\n this.methodName = methodName;\n this.host = host;\n this.credentials = credentials;\n this.deadline = deadline;\n this.callNumber = callNumber;\n this.child = null;\n this.readPending = false;\n this.pendingMessage = null;\n this.pendingHalfClose = false;\n this.ended = false;\n this.metadata = null;\n this.listener = null;\n this.onCallEnded = null;\n const splitPath = this.methodName.split('/');\n let serviceName = '';\n /* The standard path format is \"/{serviceName}/{methodName}\", so if we split\n * by '/', the first item should be empty and the second should be the\n * service name */\n if (splitPath.length >= 2) {\n serviceName = splitPath[1];\n }\n const hostname = (_b = (_a = (0, uri_parser_1.splitHostPort)(this.host)) === null || _a === void 0 ? void 0 : _a.host) !== null && _b !== void 0 ? _b : 'localhost';\n /* Currently, call credentials are only allowed on HTTPS connections, so we\n * can assume that the scheme is \"https\" */\n this.serviceUrl = `https://${hostname}/${serviceName}`;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n outputStatus(status, progress) {\n var _a, _b;\n if (!this.ended) {\n this.ended = true;\n this.trace('ended with status: code=' +\n status.code +\n ' details=\"' +\n status.details +\n '\"');\n const finalStatus = Object.assign(Object.assign({}, status), { progress });\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus(finalStatus);\n (_b = this.onCallEnded) === null || _b === void 0 ? void 0 : _b.call(this, finalStatus.code);\n }\n }\n doPick() {\n var _a, _b;\n if (this.ended) {\n return;\n }\n if (!this.metadata) {\n throw new Error('doPick called before start');\n }\n this.trace('Pick called');\n const finalMetadata = this.metadata.clone();\n const pickResult = this.channel.doPick(finalMetadata, this.callConfig.pickInformation);\n const subchannelString = pickResult.subchannel\n ? '(' +\n pickResult.subchannel.getChannelzRef().id +\n ') ' +\n pickResult.subchannel.getAddress()\n : '' + pickResult.subchannel;\n this.trace('Pick result: ' +\n picker_1.PickResultType[pickResult.pickResultType] +\n ' subchannel: ' +\n subchannelString +\n ' status: ' +\n ((_a = pickResult.status) === null || _a === void 0 ? void 0 : _a.code) +\n ' ' +\n ((_b = pickResult.status) === null || _b === void 0 ? void 0 : _b.details));\n switch (pickResult.pickResultType) {\n case picker_1.PickResultType.COMPLETE:\n this.credentials\n .generateMetadata({ service_url: this.serviceUrl })\n .then(credsMetadata => {\n var _a, _b, _c;\n /* If this call was cancelled (e.g. by the deadline) before\n * metadata generation finished, we shouldn't do anything with\n * it. */\n if (this.ended) {\n this.trace('Credentials metadata generation finished after call ended');\n return;\n }\n finalMetadata.merge(credsMetadata);\n if (finalMetadata.get('authorization').length > 1) {\n this.outputStatus({\n code: constants_1.Status.INTERNAL,\n details: '\"authorization\" metadata cannot have multiple values',\n metadata: new metadata_1.Metadata(),\n }, 'PROCESSED');\n }\n if (pickResult.subchannel.getConnectivityState() !==\n connectivity_state_1.ConnectivityState.READY) {\n this.trace('Picked subchannel ' +\n subchannelString +\n ' has state ' +\n connectivity_state_1.ConnectivityState[pickResult.subchannel.getConnectivityState()] +\n ' after getting credentials metadata. Retrying pick');\n this.doPick();\n return;\n }\n if (this.deadline !== Infinity) {\n finalMetadata.set('grpc-timeout', (0, deadline_1.getDeadlineTimeoutString)(this.deadline));\n }\n try {\n this.child = pickResult\n .subchannel.getRealSubchannel()\n .createCall(finalMetadata, this.host, this.methodName, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata');\n this.listener.onReceiveMetadata(metadata);\n },\n onReceiveMessage: message => {\n this.trace('Received message');\n this.listener.onReceiveMessage(message);\n },\n onReceiveStatus: status => {\n this.trace('Received status');\n if (status.rstCode ===\n http2.constants.NGHTTP2_REFUSED_STREAM) {\n this.outputStatus(status, 'REFUSED');\n }\n else {\n this.outputStatus(status, 'PROCESSED');\n }\n },\n });\n }\n catch (error) {\n this.trace('Failed to start call on picked subchannel ' +\n subchannelString +\n ' with error ' +\n error.message);\n this.outputStatus({\n code: constants_1.Status.INTERNAL,\n details: 'Failed to start HTTP/2 stream with error ' +\n error.message,\n metadata: new metadata_1.Metadata(),\n }, 'NOT_STARTED');\n return;\n }\n (_b = (_a = this.callConfig).onCommitted) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_c = pickResult.onCallStarted) === null || _c === void 0 ? void 0 : _c.call(pickResult);\n this.onCallEnded = pickResult.onCallEnded;\n this.trace('Created child call [' + this.child.getCallNumber() + ']');\n if (this.readPending) {\n this.child.startRead();\n }\n if (this.pendingMessage) {\n this.child.sendMessageWithContext(this.pendingMessage.context, this.pendingMessage.message);\n }\n if (this.pendingHalfClose) {\n this.child.halfClose();\n }\n }, (error) => {\n // We assume the error code isn't 0 (Status.OK)\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(typeof error.code === 'number' ? error.code : constants_1.Status.UNKNOWN, `Getting metadata from plugin failed with error: ${error.message}`);\n this.outputStatus({\n code: code,\n details: details,\n metadata: new metadata_1.Metadata(),\n }, 'PROCESSED');\n });\n break;\n case picker_1.PickResultType.DROP:\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(pickResult.status.code, pickResult.status.details);\n setImmediate(() => {\n this.outputStatus({ code, details, metadata: pickResult.status.metadata }, 'DROP');\n });\n break;\n case picker_1.PickResultType.TRANSIENT_FAILURE:\n if (this.metadata.getOptions().waitForReady) {\n this.channel.queueCallForPick(this);\n }\n else {\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(pickResult.status.code, pickResult.status.details);\n setImmediate(() => {\n this.outputStatus({ code, details, metadata: pickResult.status.metadata }, 'PROCESSED');\n });\n }\n break;\n case picker_1.PickResultType.QUEUE:\n this.channel.queueCallForPick(this);\n }\n }\n cancelWithStatus(status, details) {\n var _a;\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(status, details);\n this.outputStatus({ code: status, details: details, metadata: new metadata_1.Metadata() }, 'PROCESSED');\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.child) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : this.channel.getTarget();\n }\n start(metadata, listener) {\n this.trace('start called');\n this.listener = listener;\n this.metadata = metadata;\n this.doPick();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n if (this.child) {\n this.child.sendMessageWithContext(context, message);\n }\n else {\n this.pendingMessage = { context, message };\n }\n }\n startRead() {\n this.trace('startRead called');\n if (this.child) {\n this.child.startRead();\n }\n else {\n this.readPending = true;\n }\n }\n halfClose() {\n this.trace('halfClose called');\n if (this.child) {\n this.child.halfClose();\n }\n else {\n this.pendingHalfClose = true;\n }\n }\n setCredentials(credentials) {\n throw new Error('Method not implemented.');\n }\n getCallNumber() {\n return this.callNumber;\n }\n}\nexports.LoadBalancingCall = LoadBalancingCall;\n//# sourceMappingURL=load-balancing-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTracerEnabled = exports.trace = exports.log = exports.setLoggerVerbosity = exports.setLogger = exports.getLogger = void 0;\nconst constants_1 = require(\"./constants\");\nconst process_1 = require(\"process\");\nconst clientVersion = require('../../package.json').version;\nconst DEFAULT_LOGGER = {\n error: (message, ...optionalParams) => {\n console.error('E ' + message, ...optionalParams);\n },\n info: (message, ...optionalParams) => {\n console.error('I ' + message, ...optionalParams);\n },\n debug: (message, ...optionalParams) => {\n console.error('D ' + message, ...optionalParams);\n },\n};\nlet _logger = DEFAULT_LOGGER;\nlet _logVerbosity = constants_1.LogVerbosity.ERROR;\nconst verbosityString = (_b = (_a = process.env.GRPC_NODE_VERBOSITY) !== null && _a !== void 0 ? _a : process.env.GRPC_VERBOSITY) !== null && _b !== void 0 ? _b : '';\nswitch (verbosityString.toUpperCase()) {\n case 'DEBUG':\n _logVerbosity = constants_1.LogVerbosity.DEBUG;\n break;\n case 'INFO':\n _logVerbosity = constants_1.LogVerbosity.INFO;\n break;\n case 'ERROR':\n _logVerbosity = constants_1.LogVerbosity.ERROR;\n break;\n case 'NONE':\n _logVerbosity = constants_1.LogVerbosity.NONE;\n break;\n default:\n // Ignore any other values\n}\nconst getLogger = () => {\n return _logger;\n};\nexports.getLogger = getLogger;\nconst setLogger = (logger) => {\n _logger = logger;\n};\nexports.setLogger = setLogger;\nconst setLoggerVerbosity = (verbosity) => {\n _logVerbosity = verbosity;\n};\nexports.setLoggerVerbosity = setLoggerVerbosity;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst log = (severity, ...args) => {\n let logFunction;\n if (severity >= _logVerbosity) {\n switch (severity) {\n case constants_1.LogVerbosity.DEBUG:\n logFunction = _logger.debug;\n break;\n case constants_1.LogVerbosity.INFO:\n logFunction = _logger.info;\n break;\n case constants_1.LogVerbosity.ERROR:\n logFunction = _logger.error;\n break;\n }\n /* Fall back to _logger.error when other methods are not available for\n * compatiblity with older behavior that always logged to _logger.error */\n if (!logFunction) {\n logFunction = _logger.error;\n }\n if (logFunction) {\n logFunction.bind(_logger)(...args);\n }\n }\n};\nexports.log = log;\nconst tracersString = (_d = (_c = process.env.GRPC_NODE_TRACE) !== null && _c !== void 0 ? _c : process.env.GRPC_TRACE) !== null && _d !== void 0 ? _d : '';\nconst enabledTracers = new Set();\nconst disabledTracers = new Set();\nfor (const tracerName of tracersString.split(',')) {\n if (tracerName.startsWith('-')) {\n disabledTracers.add(tracerName.substring(1));\n }\n else {\n enabledTracers.add(tracerName);\n }\n}\nconst allEnabled = enabledTracers.has('all');\nfunction trace(severity, tracer, text) {\n if (isTracerEnabled(tracer)) {\n (0, exports.log)(severity, new Date().toISOString() + ' | v' + clientVersion + ' ' + process_1.pid + ' | ' + tracer + ' | ' + text);\n }\n}\nexports.trace = trace;\nfunction isTracerEnabled(tracer) {\n return (!disabledTracers.has(tracer) && (allEnabled || enabledTracers.has(tracer)));\n}\nexports.isTracerEnabled = isTracerEnabled;\n//# sourceMappingURL=logging.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadPackageDefinition = exports.makeClientConstructor = void 0;\nconst client_1 = require(\"./client\");\n/**\n * Map with short names for each of the requester maker functions. Used in\n * makeClientConstructor\n * @private\n */\nconst requesterFuncs = {\n unary: client_1.Client.prototype.makeUnaryRequest,\n server_stream: client_1.Client.prototype.makeServerStreamRequest,\n client_stream: client_1.Client.prototype.makeClientStreamRequest,\n bidi: client_1.Client.prototype.makeBidiStreamRequest,\n};\n/**\n * Returns true, if given key is included in the blacklisted\n * keys.\n * @param key key for check, string.\n */\nfunction isPrototypePolluted(key) {\n return ['__proto__', 'prototype', 'constructor'].includes(key);\n}\n/**\n * Creates a constructor for a client with the given methods, as specified in\n * the methods argument. The resulting class will have an instance method for\n * each method in the service, which is a partial application of one of the\n * [Client]{@link grpc.Client} request methods, depending on `requestSerialize`\n * and `responseSerialize`, with the `method`, `serialize`, and `deserialize`\n * arguments predefined.\n * @param methods An object mapping method names to\n * method attributes\n * @param serviceName The fully qualified name of the service\n * @param classOptions An options object.\n * @return New client constructor, which is a subclass of\n * {@link grpc.Client}, and has the same arguments as that constructor.\n */\nfunction makeClientConstructor(methods, serviceName, classOptions) {\n if (!classOptions) {\n classOptions = {};\n }\n class ServiceClientImpl extends client_1.Client {\n }\n Object.keys(methods).forEach(name => {\n if (isPrototypePolluted(name)) {\n return;\n }\n const attrs = methods[name];\n let methodType;\n // TODO(murgatroid99): Verify that we don't need this anymore\n if (typeof name === 'string' && name.charAt(0) === '$') {\n throw new Error('Method names cannot start with $');\n }\n if (attrs.requestStream) {\n if (attrs.responseStream) {\n methodType = 'bidi';\n }\n else {\n methodType = 'client_stream';\n }\n }\n else {\n if (attrs.responseStream) {\n methodType = 'server_stream';\n }\n else {\n methodType = 'unary';\n }\n }\n const serialize = attrs.requestSerialize;\n const deserialize = attrs.responseDeserialize;\n const methodFunc = partial(requesterFuncs[methodType], attrs.path, serialize, deserialize);\n ServiceClientImpl.prototype[name] = methodFunc;\n // Associate all provided attributes with the method\n Object.assign(ServiceClientImpl.prototype[name], attrs);\n if (attrs.originalName && !isPrototypePolluted(attrs.originalName)) {\n ServiceClientImpl.prototype[attrs.originalName] =\n ServiceClientImpl.prototype[name];\n }\n });\n ServiceClientImpl.service = methods;\n ServiceClientImpl.serviceName = serviceName;\n return ServiceClientImpl;\n}\nexports.makeClientConstructor = makeClientConstructor;\nfunction partial(fn, path, serialize, deserialize) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (...args) {\n return fn.call(this, path, serialize, deserialize, ...args);\n };\n}\nfunction isProtobufTypeDefinition(obj) {\n return 'format' in obj;\n}\n/**\n * Load a gRPC package definition as a gRPC object hierarchy.\n * @param packageDef The package definition object.\n * @return The resulting gRPC object.\n */\nfunction loadPackageDefinition(packageDef) {\n const result = {};\n for (const serviceFqn in packageDef) {\n if (Object.prototype.hasOwnProperty.call(packageDef, serviceFqn)) {\n const service = packageDef[serviceFqn];\n const nameComponents = serviceFqn.split('.');\n if (nameComponents.some((comp) => isPrototypePolluted(comp))) {\n continue;\n }\n const serviceName = nameComponents[nameComponents.length - 1];\n let current = result;\n for (const packageName of nameComponents.slice(0, -1)) {\n if (!current[packageName]) {\n current[packageName] = {};\n }\n current = current[packageName];\n }\n if (isProtobufTypeDefinition(service)) {\n current[serviceName] = service;\n }\n else {\n current[serviceName] = makeClientConstructor(service, serviceName, {});\n }\n }\n }\n return result;\n}\nexports.loadPackageDefinition = loadPackageDefinition;\n//# sourceMappingURL=make-client.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MaxMessageSizeFilterFactory = exports.MaxMessageSizeFilter = void 0;\nconst filter_1 = require(\"./filter\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nclass MaxMessageSizeFilter extends filter_1.BaseFilter {\n constructor(options) {\n super();\n this.maxSendMessageSize = constants_1.DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n this.maxReceiveMessageSize = constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n if ('grpc.max_send_message_length' in options) {\n this.maxSendMessageSize = options['grpc.max_send_message_length'];\n }\n if ('grpc.max_receive_message_length' in options) {\n this.maxReceiveMessageSize = options['grpc.max_receive_message_length'];\n }\n }\n async sendMessage(message) {\n /* A configured size of -1 means that there is no limit, so skip the check\n * entirely */\n if (this.maxSendMessageSize === -1) {\n return message;\n }\n else {\n const concreteMessage = await message;\n if (concreteMessage.message.length > this.maxSendMessageSize) {\n throw {\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Sent message larger than max (${concreteMessage.message.length} vs. ${this.maxSendMessageSize})`,\n metadata: new metadata_1.Metadata(),\n };\n }\n else {\n return concreteMessage;\n }\n }\n }\n async receiveMessage(message) {\n /* A configured size of -1 means that there is no limit, so skip the check\n * entirely */\n if (this.maxReceiveMessageSize === -1) {\n return message;\n }\n else {\n const concreteMessage = await message;\n if (concreteMessage.length > this.maxReceiveMessageSize) {\n throw {\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message larger than max (${concreteMessage.length} vs. ${this.maxReceiveMessageSize})`,\n metadata: new metadata_1.Metadata(),\n };\n }\n else {\n return concreteMessage;\n }\n }\n }\n}\nexports.MaxMessageSizeFilter = MaxMessageSizeFilter;\nclass MaxMessageSizeFilterFactory {\n constructor(options) {\n this.options = options;\n }\n createFilter() {\n return new MaxMessageSizeFilter(this.options);\n }\n}\nexports.MaxMessageSizeFilterFactory = MaxMessageSizeFilterFactory;\n//# sourceMappingURL=max-message-size-filter.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Metadata = void 0;\nconst logging_1 = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst error_1 = require(\"./error\");\nconst LEGAL_KEY_REGEX = /^[0-9a-z_.-]+$/;\nconst LEGAL_NON_BINARY_VALUE_REGEX = /^[ -~]*$/;\nfunction isLegalKey(key) {\n return LEGAL_KEY_REGEX.test(key);\n}\nfunction isLegalNonBinaryValue(value) {\n return LEGAL_NON_BINARY_VALUE_REGEX.test(value);\n}\nfunction isBinaryKey(key) {\n return key.endsWith('-bin');\n}\nfunction isCustomMetadata(key) {\n return !key.startsWith('grpc-');\n}\nfunction normalizeKey(key) {\n return key.toLowerCase();\n}\nfunction validate(key, value) {\n if (!isLegalKey(key)) {\n throw new Error('Metadata key \"' + key + '\" contains illegal characters');\n }\n if (value !== null && value !== undefined) {\n if (isBinaryKey(key)) {\n if (!Buffer.isBuffer(value)) {\n throw new Error(\"keys that end with '-bin' must have Buffer values\");\n }\n }\n else {\n if (Buffer.isBuffer(value)) {\n throw new Error(\"keys that don't end with '-bin' must have String values\");\n }\n if (!isLegalNonBinaryValue(value)) {\n throw new Error('Metadata string value \"' + value + '\" contains illegal characters');\n }\n }\n }\n}\n/**\n * A class for storing metadata. Keys are normalized to lowercase ASCII.\n */\nclass Metadata {\n constructor(options = {}) {\n this.internalRepr = new Map();\n this.options = options;\n }\n /**\n * Sets the given value for the given key by replacing any other values\n * associated with that key. Normalizes the key.\n * @param key The key to whose value should be set.\n * @param value The value to set. Must be a buffer if and only\n * if the normalized key ends with '-bin'.\n */\n set(key, value) {\n key = normalizeKey(key);\n validate(key, value);\n this.internalRepr.set(key, [value]);\n }\n /**\n * Adds the given value for the given key by appending to a list of previous\n * values associated with that key. Normalizes the key.\n * @param key The key for which a new value should be appended.\n * @param value The value to add. Must be a buffer if and only\n * if the normalized key ends with '-bin'.\n */\n add(key, value) {\n key = normalizeKey(key);\n validate(key, value);\n const existingValue = this.internalRepr.get(key);\n if (existingValue === undefined) {\n this.internalRepr.set(key, [value]);\n }\n else {\n existingValue.push(value);\n }\n }\n /**\n * Removes the given key and any associated values. Normalizes the key.\n * @param key The key whose values should be removed.\n */\n remove(key) {\n key = normalizeKey(key);\n // validate(key);\n this.internalRepr.delete(key);\n }\n /**\n * Gets a list of all values associated with the key. Normalizes the key.\n * @param key The key whose value should be retrieved.\n * @return A list of values associated with the given key.\n */\n get(key) {\n key = normalizeKey(key);\n // validate(key);\n return this.internalRepr.get(key) || [];\n }\n /**\n * Gets a plain object mapping each key to the first value associated with it.\n * This reflects the most common way that people will want to see metadata.\n * @return A key/value mapping of the metadata.\n */\n getMap() {\n const result = {};\n for (const [key, values] of this.internalRepr) {\n if (values.length > 0) {\n const v = values[0];\n result[key] = Buffer.isBuffer(v) ? Buffer.from(v) : v;\n }\n }\n return result;\n }\n /**\n * Clones the metadata object.\n * @return The newly cloned object.\n */\n clone() {\n const newMetadata = new Metadata(this.options);\n const newInternalRepr = newMetadata.internalRepr;\n for (const [key, value] of this.internalRepr) {\n const clonedValue = value.map(v => {\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v);\n }\n else {\n return v;\n }\n });\n newInternalRepr.set(key, clonedValue);\n }\n return newMetadata;\n }\n /**\n * Merges all key-value pairs from a given Metadata object into this one.\n * If both this object and the given object have values in the same key,\n * values from the other Metadata object will be appended to this object's\n * values.\n * @param other A Metadata object.\n */\n merge(other) {\n for (const [key, values] of other.internalRepr) {\n const mergedValue = (this.internalRepr.get(key) || []).concat(values);\n this.internalRepr.set(key, mergedValue);\n }\n }\n setOptions(options) {\n this.options = options;\n }\n getOptions() {\n return this.options;\n }\n /**\n * Creates an OutgoingHttpHeaders object that can be used with the http2 API.\n */\n toHttp2Headers() {\n // NOTE: Node <8.9 formats http2 headers incorrectly.\n const result = {};\n for (const [key, values] of this.internalRepr) {\n // We assume that the user's interaction with this object is limited to\n // through its public API (i.e. keys and values are already validated).\n result[key] = values.map(bufToString);\n }\n return result;\n }\n /**\n * This modifies the behavior of JSON.stringify to show an object\n * representation of the metadata map.\n */\n toJSON() {\n const result = {};\n for (const [key, values] of this.internalRepr) {\n result[key] = values;\n }\n return result;\n }\n /**\n * Returns a new Metadata object based fields in a given IncomingHttpHeaders\n * object.\n * @param headers An IncomingHttpHeaders object.\n */\n static fromHttp2Headers(headers) {\n const result = new Metadata();\n for (const key of Object.keys(headers)) {\n // Reserved headers (beginning with `:`) are not valid keys.\n if (key.charAt(0) === ':') {\n continue;\n }\n const values = headers[key];\n try {\n if (isBinaryKey(key)) {\n if (Array.isArray(values)) {\n values.forEach(value => {\n result.add(key, Buffer.from(value, 'base64'));\n });\n }\n else if (values !== undefined) {\n if (isCustomMetadata(key)) {\n values.split(',').forEach(v => {\n result.add(key, Buffer.from(v.trim(), 'base64'));\n });\n }\n else {\n result.add(key, Buffer.from(values, 'base64'));\n }\n }\n }\n else {\n if (Array.isArray(values)) {\n values.forEach(value => {\n result.add(key, value);\n });\n }\n else if (values !== undefined) {\n result.add(key, values);\n }\n }\n }\n catch (error) {\n const message = `Failed to add metadata entry ${key}: ${values}. ${(0, error_1.getErrorMessage)(error)}. For more information see https://github.com/grpc/grpc-node/issues/1173`;\n (0, logging_1.log)(constants_1.LogVerbosity.ERROR, message);\n }\n }\n return result;\n }\n}\nexports.Metadata = Metadata;\nconst bufToString = (val) => {\n return Buffer.isBuffer(val) ? val.toString('base64') : val;\n};\n//# sourceMappingURL=metadata.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QueuePicker = exports.UnavailablePicker = exports.PickResultType = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst constants_1 = require(\"./constants\");\nvar PickResultType;\n(function (PickResultType) {\n PickResultType[PickResultType[\"COMPLETE\"] = 0] = \"COMPLETE\";\n PickResultType[PickResultType[\"QUEUE\"] = 1] = \"QUEUE\";\n PickResultType[PickResultType[\"TRANSIENT_FAILURE\"] = 2] = \"TRANSIENT_FAILURE\";\n PickResultType[PickResultType[\"DROP\"] = 3] = \"DROP\";\n})(PickResultType || (exports.PickResultType = PickResultType = {}));\n/**\n * A standard picker representing a load balancer in the TRANSIENT_FAILURE\n * state. Always responds to every pick request with an UNAVAILABLE status.\n */\nclass UnavailablePicker {\n constructor(status) {\n this.status = Object.assign({ code: constants_1.Status.UNAVAILABLE, details: 'No connection established', metadata: new metadata_1.Metadata() }, status);\n }\n pick(pickArgs) {\n return {\n pickResultType: PickResultType.TRANSIENT_FAILURE,\n subchannel: null,\n status: this.status,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n}\nexports.UnavailablePicker = UnavailablePicker;\n/**\n * A standard picker representing a load balancer in the IDLE or CONNECTING\n * state. Always responds to every pick request with a QUEUE pick result\n * indicating that the pick should be tried again with the next `Picker`. Also\n * reports back to the load balancer that a connection should be established\n * once any pick is attempted.\n * If the childPicker is provided, delegate to it instead of returning the\n * hardcoded QUEUE pick result, but still calls exitIdle.\n */\nclass QueuePicker {\n // Constructed with a load balancer. Calls exitIdle on it the first time pick is called\n constructor(loadBalancer, childPicker) {\n this.loadBalancer = loadBalancer;\n this.childPicker = childPicker;\n this.calledExitIdle = false;\n }\n pick(pickArgs) {\n if (!this.calledExitIdle) {\n process.nextTick(() => {\n this.loadBalancer.exitIdle();\n });\n this.calledExitIdle = true;\n }\n if (this.childPicker) {\n return this.childPicker.pick(pickArgs);\n }\n else {\n return {\n pickResultType: PickResultType.QUEUE,\n subchannel: null,\n status: null,\n onCallStarted: null,\n onCallEnded: null,\n };\n }\n }\n}\nexports.QueuePicker = QueuePicker;\n//# sourceMappingURL=picker.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = exports.DEFAULT_PORT = void 0;\nconst resolver_1 = require(\"./resolver\");\nconst dns = require(\"dns\");\nconst util = require(\"util\");\nconst service_config_1 = require(\"./service-config\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst net_1 = require(\"net\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst TRACER_NAME = 'dns_resolver';\nfunction trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nexports.DEFAULT_PORT = 443;\nconst DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS = 30000;\nconst resolveTxtPromise = util.promisify(dns.resolveTxt);\nconst dnsLookupPromise = util.promisify(dns.lookup);\n/**\n * Resolver implementation that handles DNS names and IP addresses.\n */\nclass DnsResolver {\n constructor(target, listener, channelOptions) {\n var _a, _b, _c;\n this.target = target;\n this.listener = listener;\n this.pendingLookupPromise = null;\n this.pendingTxtPromise = null;\n this.latestLookupResult = null;\n this.latestServiceConfig = null;\n this.latestServiceConfigError = null;\n this.continueResolving = false;\n this.isNextResolutionTimerRunning = false;\n this.isServiceConfigEnabled = true;\n this.returnedIpResult = false;\n trace('Resolver constructed for target ' + (0, uri_parser_1.uriToString)(target));\n const hostPort = (0, uri_parser_1.splitHostPort)(target.path);\n if (hostPort === null) {\n this.ipResult = null;\n this.dnsHostname = null;\n this.port = null;\n }\n else {\n if ((0, net_1.isIPv4)(hostPort.host) || (0, net_1.isIPv6)(hostPort.host)) {\n this.ipResult = [\n {\n addresses: [\n {\n host: hostPort.host,\n port: (_a = hostPort.port) !== null && _a !== void 0 ? _a : exports.DEFAULT_PORT,\n },\n ],\n },\n ];\n this.dnsHostname = null;\n this.port = null;\n }\n else {\n this.ipResult = null;\n this.dnsHostname = hostPort.host;\n this.port = (_b = hostPort.port) !== null && _b !== void 0 ? _b : exports.DEFAULT_PORT;\n }\n }\n this.percentage = Math.random() * 100;\n if (channelOptions['grpc.service_config_disable_resolution'] === 1) {\n this.isServiceConfigEnabled = false;\n }\n this.defaultResolutionError = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Name resolution failed for target ${(0, uri_parser_1.uriToString)(this.target)}`,\n metadata: new metadata_1.Metadata(),\n };\n const backoffOptions = {\n initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n };\n this.backoff = new backoff_timeout_1.BackoffTimeout(() => {\n if (this.continueResolving) {\n this.startResolutionWithBackoff();\n }\n }, backoffOptions);\n this.backoff.unref();\n this.minTimeBetweenResolutionsMs =\n (_c = channelOptions['grpc.dns_min_time_between_resolutions_ms']) !== null && _c !== void 0 ? _c : DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS;\n this.nextResolutionTimer = setTimeout(() => { }, 0);\n clearTimeout(this.nextResolutionTimer);\n }\n /**\n * If the target is an IP address, just provide that address as a result.\n * Otherwise, initiate A, AAAA, and TXT lookups\n */\n startResolution() {\n if (this.ipResult !== null) {\n if (!this.returnedIpResult) {\n trace('Returning IP address for target ' + (0, uri_parser_1.uriToString)(this.target));\n setImmediate(() => {\n this.listener.onSuccessfulResolution(this.ipResult, null, null, null, {});\n });\n this.returnedIpResult = true;\n }\n this.backoff.stop();\n this.backoff.reset();\n this.stopNextResolutionTimer();\n return;\n }\n if (this.dnsHostname === null) {\n trace('Failed to parse DNS address ' + (0, uri_parser_1.uriToString)(this.target));\n setImmediate(() => {\n this.listener.onError({\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse DNS address ${(0, uri_parser_1.uriToString)(this.target)}`,\n metadata: new metadata_1.Metadata(),\n });\n });\n this.stopNextResolutionTimer();\n }\n else {\n if (this.pendingLookupPromise !== null) {\n return;\n }\n trace('Looking up DNS hostname ' + this.dnsHostname);\n /* We clear out latestLookupResult here to ensure that it contains the\n * latest result since the last time we started resolving. That way, the\n * TXT resolution handler can use it, but only if it finishes second. We\n * don't clear out any previous service config results because it's\n * better to use a service config that's slightly out of date than to\n * revert to an effectively blank one. */\n this.latestLookupResult = null;\n const hostname = this.dnsHostname;\n /* We lookup both address families here and then split them up later\n * because when looking up a single family, dns.lookup outputs an error\n * if the name exists but there are no records for that family, and that\n * error is indistinguishable from other kinds of errors */\n this.pendingLookupPromise = dnsLookupPromise(hostname, { all: true });\n this.pendingLookupPromise.then(addressList => {\n if (this.pendingLookupPromise === null) {\n return;\n }\n this.pendingLookupPromise = null;\n this.backoff.reset();\n this.backoff.stop();\n const subchannelAddresses = addressList.map(addr => ({ host: addr.address, port: +this.port }));\n this.latestLookupResult = subchannelAddresses.map(address => ({\n addresses: [address],\n }));\n const allAddressesString = '[' +\n subchannelAddresses\n .map(addr => addr.host + ':' + addr.port)\n .join(',') +\n ']';\n trace('Resolved addresses for target ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ': ' +\n allAddressesString);\n if (this.latestLookupResult.length === 0) {\n this.listener.onError(this.defaultResolutionError);\n return;\n }\n /* If the TXT lookup has not yet finished, both of the last two\n * arguments will be null, which is the equivalent of getting an\n * empty TXT response. When the TXT lookup does finish, its handler\n * can update the service config by using the same address list */\n this.listener.onSuccessfulResolution(this.latestLookupResult, this.latestServiceConfig, this.latestServiceConfigError, null, {});\n }, err => {\n if (this.pendingLookupPromise === null) {\n return;\n }\n trace('Resolution error for target ' +\n (0, uri_parser_1.uriToString)(this.target) +\n ': ' +\n err.message);\n this.pendingLookupPromise = null;\n this.stopNextResolutionTimer();\n this.listener.onError(this.defaultResolutionError);\n });\n /* If there already is a still-pending TXT resolution, we can just use\n * that result when it comes in */\n if (this.isServiceConfigEnabled && this.pendingTxtPromise === null) {\n /* We handle the TXT query promise differently than the others because\n * the name resolution attempt as a whole is a success even if the TXT\n * lookup fails */\n this.pendingTxtPromise = resolveTxtPromise(hostname);\n this.pendingTxtPromise.then(txtRecord => {\n if (this.pendingTxtPromise === null) {\n return;\n }\n this.pendingTxtPromise = null;\n try {\n this.latestServiceConfig = (0, service_config_1.extractAndSelectServiceConfig)(txtRecord, this.percentage);\n }\n catch (err) {\n this.latestServiceConfigError = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Parsing service config failed with error ${err.message}`,\n metadata: new metadata_1.Metadata(),\n };\n }\n if (this.latestLookupResult !== null) {\n /* We rely here on the assumption that calling this function with\n * identical parameters will be essentialy idempotent, and calling\n * it with the same address list and a different service config\n * should result in a fast and seamless switchover. */\n this.listener.onSuccessfulResolution(this.latestLookupResult, this.latestServiceConfig, this.latestServiceConfigError, null, {});\n }\n }, err => {\n /* If TXT lookup fails we should do nothing, which means that we\n * continue to use the result of the most recent successful lookup,\n * or the default null config object if there has never been a\n * successful lookup. We do not set the latestServiceConfigError\n * here because that is specifically used for response validation\n * errors. We still need to handle this error so that it does not\n * bubble up as an unhandled promise rejection. */\n });\n }\n }\n }\n startNextResolutionTimer() {\n var _a, _b;\n clearTimeout(this.nextResolutionTimer);\n this.nextResolutionTimer = (_b = (_a = setTimeout(() => {\n this.stopNextResolutionTimer();\n if (this.continueResolving) {\n this.startResolutionWithBackoff();\n }\n }, this.minTimeBetweenResolutionsMs)).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.isNextResolutionTimerRunning = true;\n }\n stopNextResolutionTimer() {\n clearTimeout(this.nextResolutionTimer);\n this.isNextResolutionTimerRunning = false;\n }\n startResolutionWithBackoff() {\n if (this.pendingLookupPromise === null) {\n this.continueResolving = false;\n this.backoff.runOnce();\n this.startNextResolutionTimer();\n this.startResolution();\n }\n }\n updateResolution() {\n /* If there is a pending lookup, just let it finish. Otherwise, if the\n * nextResolutionTimer or backoff timer is running, set the\n * continueResolving flag to resolve when whichever of those timers\n * fires. Otherwise, start resolving immediately. */\n if (this.pendingLookupPromise === null) {\n if (this.isNextResolutionTimerRunning || this.backoff.isRunning()) {\n if (this.isNextResolutionTimerRunning) {\n trace('resolution update delayed by \"min time between resolutions\" rate limit');\n }\n else {\n trace('resolution update delayed by backoff timer until ' + this.backoff.getEndTime().toISOString());\n }\n this.continueResolving = true;\n }\n else {\n this.startResolutionWithBackoff();\n }\n }\n }\n /**\n * Reset the resolver to the same state it had when it was created. In-flight\n * DNS requests cannot be cancelled, but they are discarded and their results\n * will be ignored.\n */\n destroy() {\n this.continueResolving = false;\n this.backoff.reset();\n this.backoff.stop();\n this.stopNextResolutionTimer();\n this.pendingLookupPromise = null;\n this.pendingTxtPromise = null;\n this.latestLookupResult = null;\n this.latestServiceConfig = null;\n this.latestServiceConfigError = null;\n this.returnedIpResult = false;\n }\n /**\n * Get the default authority for the given target. For IP targets, that is\n * the IP address. For DNS targets, it is the hostname.\n * @param target\n */\n static getDefaultAuthority(target) {\n return target.path;\n }\n}\n/**\n * Set up the DNS resolver class by registering it as the handler for the\n * \"dns:\" prefix and as the default resolver.\n */\nfunction setup() {\n (0, resolver_1.registerResolver)('dns', DnsResolver);\n (0, resolver_1.registerDefaultScheme)('dns');\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-dns.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = void 0;\nconst net_1 = require(\"net\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst resolver_1 = require(\"./resolver\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'ip_resolver';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nconst IPV4_SCHEME = 'ipv4';\nconst IPV6_SCHEME = 'ipv6';\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nconst DEFAULT_PORT = 443;\nclass IpResolver {\n constructor(target, listener, channelOptions) {\n var _a;\n this.listener = listener;\n this.endpoints = [];\n this.error = null;\n this.hasReturnedResult = false;\n trace('Resolver constructed for target ' + (0, uri_parser_1.uriToString)(target));\n const addresses = [];\n if (!(target.scheme === IPV4_SCHEME || target.scheme === IPV6_SCHEME)) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Unrecognized scheme ${target.scheme} in IP resolver`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n const pathList = target.path.split(',');\n for (const path of pathList) {\n const hostPort = (0, uri_parser_1.splitHostPort)(path);\n if (hostPort === null) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse ${target.scheme} address ${path}`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n if ((target.scheme === IPV4_SCHEME && !(0, net_1.isIPv4)(hostPort.host)) ||\n (target.scheme === IPV6_SCHEME && !(0, net_1.isIPv6)(hostPort.host))) {\n this.error = {\n code: constants_1.Status.UNAVAILABLE,\n details: `Failed to parse ${target.scheme} address ${path}`,\n metadata: new metadata_1.Metadata(),\n };\n return;\n }\n addresses.push({\n host: hostPort.host,\n port: (_a = hostPort.port) !== null && _a !== void 0 ? _a : DEFAULT_PORT,\n });\n }\n this.endpoints = addresses.map(address => ({ addresses: [address] }));\n trace('Parsed ' + target.scheme + ' address list ' + addresses);\n }\n updateResolution() {\n if (!this.hasReturnedResult) {\n this.hasReturnedResult = true;\n process.nextTick(() => {\n if (this.error) {\n this.listener.onError(this.error);\n }\n else {\n this.listener.onSuccessfulResolution(this.endpoints, null, null, null, {});\n }\n });\n }\n }\n destroy() {\n this.hasReturnedResult = false;\n }\n static getDefaultAuthority(target) {\n return target.path.split(',')[0];\n }\n}\nfunction setup() {\n (0, resolver_1.registerResolver)(IPV4_SCHEME, IpResolver);\n (0, resolver_1.registerResolver)(IPV6_SCHEME, IpResolver);\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-ip.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setup = void 0;\nconst resolver_1 = require(\"./resolver\");\nclass UdsResolver {\n constructor(target, listener, channelOptions) {\n this.listener = listener;\n this.hasReturnedResult = false;\n this.endpoints = [];\n let path;\n if (target.authority === '') {\n path = '/' + target.path;\n }\n else {\n path = target.path;\n }\n this.endpoints = [{ addresses: [{ path }] }];\n }\n updateResolution() {\n if (!this.hasReturnedResult) {\n this.hasReturnedResult = true;\n process.nextTick(this.listener.onSuccessfulResolution, this.endpoints, null, null, null, {});\n }\n }\n destroy() {\n // This resolver owns no resources, so we do nothing here.\n }\n static getDefaultAuthority(target) {\n return 'localhost';\n }\n}\nfunction setup() {\n (0, resolver_1.registerResolver)('unix', UdsResolver);\n}\nexports.setup = setup;\n//# sourceMappingURL=resolver-uds.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapUriDefaultScheme = exports.getDefaultAuthority = exports.createResolver = exports.registerDefaultScheme = exports.registerResolver = void 0;\nconst uri_parser_1 = require(\"./uri-parser\");\nconst registeredResolvers = {};\nlet defaultScheme = null;\n/**\n * Register a resolver class to handle target names prefixed with the `prefix`\n * string. This prefix should correspond to a URI scheme name listed in the\n * [gRPC Name Resolution document](https://github.com/grpc/grpc/blob/master/doc/naming.md)\n * @param prefix\n * @param resolverClass\n */\nfunction registerResolver(scheme, resolverClass) {\n registeredResolvers[scheme] = resolverClass;\n}\nexports.registerResolver = registerResolver;\n/**\n * Register a default resolver to handle target names that do not start with\n * any registered prefix.\n * @param resolverClass\n */\nfunction registerDefaultScheme(scheme) {\n defaultScheme = scheme;\n}\nexports.registerDefaultScheme = registerDefaultScheme;\n/**\n * Create a name resolver for the specified target, if possible. Throws an\n * error if no such name resolver can be created.\n * @param target\n * @param listener\n */\nfunction createResolver(target, listener, options) {\n if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n return new registeredResolvers[target.scheme](target, listener, options);\n }\n else {\n throw new Error(`No resolver could be created for target ${(0, uri_parser_1.uriToString)(target)}`);\n }\n}\nexports.createResolver = createResolver;\n/**\n * Get the default authority for the specified target, if possible. Throws an\n * error if no registered name resolver can parse that target string.\n * @param target\n */\nfunction getDefaultAuthority(target) {\n if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n return registeredResolvers[target.scheme].getDefaultAuthority(target);\n }\n else {\n throw new Error(`Invalid target ${(0, uri_parser_1.uriToString)(target)}`);\n }\n}\nexports.getDefaultAuthority = getDefaultAuthority;\nfunction mapUriDefaultScheme(target) {\n if (target.scheme === undefined || !(target.scheme in registeredResolvers)) {\n if (defaultScheme !== null) {\n return {\n scheme: defaultScheme,\n authority: undefined,\n path: (0, uri_parser_1.uriToString)(target),\n };\n }\n else {\n return null;\n }\n }\n return target;\n}\nexports.mapUriDefaultScheme = mapUriDefaultScheme;\n//# sourceMappingURL=resolver.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolvingCall = void 0;\nconst constants_1 = require(\"./constants\");\nconst deadline_1 = require(\"./deadline\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst control_plane_status_1 = require(\"./control-plane-status\");\nconst TRACER_NAME = 'resolving_call';\nclass ResolvingCall {\n constructor(channel, method, options, filterStackFactory, credentials, callNumber) {\n this.channel = channel;\n this.method = method;\n this.filterStackFactory = filterStackFactory;\n this.credentials = credentials;\n this.callNumber = callNumber;\n this.child = null;\n this.readPending = false;\n this.pendingMessage = null;\n this.pendingHalfClose = false;\n this.ended = false;\n this.readFilterPending = false;\n this.writeFilterPending = false;\n this.pendingChildStatus = null;\n this.metadata = null;\n this.listener = null;\n this.statusWatchers = [];\n this.deadlineTimer = setTimeout(() => { }, 0);\n this.filterStack = null;\n this.deadline = options.deadline;\n this.host = options.host;\n if (options.parentCall) {\n if (options.flags & constants_1.Propagate.CANCELLATION) {\n options.parentCall.on('cancelled', () => {\n this.cancelWithStatus(constants_1.Status.CANCELLED, 'Cancelled by parent call');\n });\n }\n if (options.flags & constants_1.Propagate.DEADLINE) {\n this.trace('Propagating deadline from parent: ' +\n options.parentCall.getDeadline());\n this.deadline = (0, deadline_1.minDeadline)(this.deadline, options.parentCall.getDeadline());\n }\n }\n this.trace('Created');\n this.runDeadlineTimer();\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n runDeadlineTimer() {\n clearTimeout(this.deadlineTimer);\n this.trace('Deadline: ' + (0, deadline_1.deadlineToString)(this.deadline));\n const timeout = (0, deadline_1.getRelativeTimeout)(this.deadline);\n if (timeout !== Infinity) {\n this.trace('Deadline will be reached in ' + timeout + 'ms');\n const handleDeadline = () => {\n this.cancelWithStatus(constants_1.Status.DEADLINE_EXCEEDED, 'Deadline exceeded');\n };\n if (timeout <= 0) {\n process.nextTick(handleDeadline);\n }\n else {\n this.deadlineTimer = setTimeout(handleDeadline, timeout);\n }\n }\n }\n outputStatus(status) {\n if (!this.ended) {\n this.ended = true;\n if (!this.filterStack) {\n this.filterStack = this.filterStackFactory.createFilter();\n }\n clearTimeout(this.deadlineTimer);\n const filteredStatus = this.filterStack.receiveTrailers(status);\n this.trace('ended with status: code=' +\n filteredStatus.code +\n ' details=\"' +\n filteredStatus.details +\n '\"');\n this.statusWatchers.forEach(watcher => watcher(filteredStatus));\n process.nextTick(() => {\n var _a;\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus(filteredStatus);\n });\n }\n }\n sendMessageOnChild(context, message) {\n if (!this.child) {\n throw new Error('sendMessageonChild called with child not populated');\n }\n const child = this.child;\n this.writeFilterPending = true;\n this.filterStack.sendMessage(Promise.resolve({ message: message, flags: context.flags })).then(filteredMessage => {\n this.writeFilterPending = false;\n child.sendMessageWithContext(context, filteredMessage.message);\n if (this.pendingHalfClose) {\n child.halfClose();\n }\n }, (status) => {\n this.cancelWithStatus(status.code, status.details);\n });\n }\n getConfig() {\n if (this.ended) {\n return;\n }\n if (!this.metadata || !this.listener) {\n throw new Error('getConfig called before start');\n }\n const configResult = this.channel.getConfig(this.method, this.metadata);\n if (configResult.type === 'NONE') {\n this.channel.queueCallForConfig(this);\n return;\n }\n else if (configResult.type === 'ERROR') {\n if (this.metadata.getOptions().waitForReady) {\n this.channel.queueCallForConfig(this);\n }\n else {\n this.outputStatus(configResult.error);\n }\n return;\n }\n // configResult.type === 'SUCCESS'\n const config = configResult.config;\n if (config.status !== constants_1.Status.OK) {\n const { code, details } = (0, control_plane_status_1.restrictControlPlaneStatusCode)(config.status, 'Failed to route call to method ' + this.method);\n this.outputStatus({\n code: code,\n details: details,\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n if (config.methodConfig.timeout) {\n const configDeadline = new Date();\n configDeadline.setSeconds(configDeadline.getSeconds() + config.methodConfig.timeout.seconds);\n configDeadline.setMilliseconds(configDeadline.getMilliseconds() +\n config.methodConfig.timeout.nanos / 1000000);\n this.deadline = (0, deadline_1.minDeadline)(this.deadline, configDeadline);\n this.runDeadlineTimer();\n }\n this.filterStackFactory.push(config.dynamicFilterFactories);\n this.filterStack = this.filterStackFactory.createFilter();\n this.filterStack.sendMetadata(Promise.resolve(this.metadata)).then(filteredMetadata => {\n this.child = this.channel.createInnerCall(config, this.method, this.host, this.credentials, this.deadline);\n this.trace('Created child [' + this.child.getCallNumber() + ']');\n this.child.start(filteredMetadata, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata');\n this.listener.onReceiveMetadata(this.filterStack.receiveMetadata(metadata));\n },\n onReceiveMessage: message => {\n this.trace('Received message');\n this.readFilterPending = true;\n this.filterStack.receiveMessage(message).then(filteredMesssage => {\n this.trace('Finished filtering received message');\n this.readFilterPending = false;\n this.listener.onReceiveMessage(filteredMesssage);\n if (this.pendingChildStatus) {\n this.outputStatus(this.pendingChildStatus);\n }\n }, (status) => {\n this.cancelWithStatus(status.code, status.details);\n });\n },\n onReceiveStatus: status => {\n this.trace('Received status');\n if (this.readFilterPending) {\n this.pendingChildStatus = status;\n }\n else {\n this.outputStatus(status);\n }\n },\n });\n if (this.readPending) {\n this.child.startRead();\n }\n if (this.pendingMessage) {\n this.sendMessageOnChild(this.pendingMessage.context, this.pendingMessage.message);\n }\n else if (this.pendingHalfClose) {\n this.child.halfClose();\n }\n }, (status) => {\n this.outputStatus(status);\n });\n }\n reportResolverError(status) {\n var _a;\n if ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.getOptions().waitForReady) {\n this.channel.queueCallForConfig(this);\n }\n else {\n this.outputStatus(status);\n }\n }\n cancelWithStatus(status, details) {\n var _a;\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n (_a = this.child) === null || _a === void 0 ? void 0 : _a.cancelWithStatus(status, details);\n this.outputStatus({\n code: status,\n details: details,\n metadata: new metadata_1.Metadata(),\n });\n }\n getPeer() {\n var _a, _b;\n return (_b = (_a = this.child) === null || _a === void 0 ? void 0 : _a.getPeer()) !== null && _b !== void 0 ? _b : this.channel.getTarget();\n }\n start(metadata, listener) {\n this.trace('start called');\n this.metadata = metadata.clone();\n this.listener = listener;\n this.getConfig();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n if (this.child) {\n this.sendMessageOnChild(context, message);\n }\n else {\n this.pendingMessage = { context, message };\n }\n }\n startRead() {\n this.trace('startRead called');\n if (this.child) {\n this.child.startRead();\n }\n else {\n this.readPending = true;\n }\n }\n halfClose() {\n this.trace('halfClose called');\n if (this.child && !this.writeFilterPending) {\n this.child.halfClose();\n }\n else {\n this.pendingHalfClose = true;\n }\n }\n setCredentials(credentials) {\n this.credentials = this.credentials.compose(credentials);\n }\n addStatusWatcher(watcher) {\n this.statusWatchers.push(watcher);\n }\n getCallNumber() {\n return this.callNumber;\n }\n}\nexports.ResolvingCall = ResolvingCall;\n//# sourceMappingURL=resolving-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResolvingLoadBalancer = void 0;\nconst load_balancer_1 = require(\"./load-balancer\");\nconst service_config_1 = require(\"./service-config\");\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst resolver_1 = require(\"./resolver\");\nconst picker_1 = require(\"./picker\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst load_balancer_child_handler_1 = require(\"./load-balancer-child-handler\");\nconst TRACER_NAME = 'resolving_load_balancer';\nfunction trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n/**\n * Name match levels in order from most to least specific. This is the order in\n * which searches will be performed.\n */\nconst NAME_MATCH_LEVEL_ORDER = [\n 'SERVICE_AND_METHOD',\n 'SERVICE',\n 'EMPTY',\n];\nfunction hasMatchingName(service, method, methodConfig, matchLevel) {\n for (const name of methodConfig.name) {\n switch (matchLevel) {\n case 'EMPTY':\n if (!name.service && !name.method) {\n return true;\n }\n break;\n case 'SERVICE':\n if (name.service === service && !name.method) {\n return true;\n }\n break;\n case 'SERVICE_AND_METHOD':\n if (name.service === service && name.method === method) {\n return true;\n }\n }\n }\n return false;\n}\nfunction findMatchingConfig(service, method, methodConfigs, matchLevel) {\n for (const config of methodConfigs) {\n if (hasMatchingName(service, method, config, matchLevel)) {\n return config;\n }\n }\n return null;\n}\nfunction getDefaultConfigSelector(serviceConfig) {\n return function defaultConfigSelector(methodName, metadata) {\n var _a, _b;\n const splitName = methodName.split('/').filter(x => x.length > 0);\n const service = (_a = splitName[0]) !== null && _a !== void 0 ? _a : '';\n const method = (_b = splitName[1]) !== null && _b !== void 0 ? _b : '';\n if (serviceConfig && serviceConfig.methodConfig) {\n /* Check for the following in order, and return the first method\n * config that matches:\n * 1. A name that exactly matches the service and method\n * 2. A name with no method set that matches the service\n * 3. An empty name\n */\n for (const matchLevel of NAME_MATCH_LEVEL_ORDER) {\n const matchingConfig = findMatchingConfig(service, method, serviceConfig.methodConfig, matchLevel);\n if (matchingConfig) {\n return {\n methodConfig: matchingConfig,\n pickInformation: {},\n status: constants_1.Status.OK,\n dynamicFilterFactories: [],\n };\n }\n }\n }\n return {\n methodConfig: { name: [] },\n pickInformation: {},\n status: constants_1.Status.OK,\n dynamicFilterFactories: [],\n };\n };\n}\nclass ResolvingLoadBalancer {\n /**\n * Wrapper class that behaves like a `LoadBalancer` and also handles name\n * resolution internally.\n * @param target The address of the backend to connect to.\n * @param channelControlHelper `ChannelControlHelper` instance provided by\n * this load balancer's owner.\n * @param defaultServiceConfig The default service configuration to be used\n * if none is provided by the name resolver. A `null` value indicates\n * that the default behavior should be the default unconfigured behavior.\n * In practice, that means using the \"pick first\" load balancer\n * implmentation\n */\n constructor(target, channelControlHelper, channelOptions, onSuccessfulResolution, onFailedResolution) {\n this.target = target;\n this.channelControlHelper = channelControlHelper;\n this.onSuccessfulResolution = onSuccessfulResolution;\n this.onFailedResolution = onFailedResolution;\n this.latestChildState = connectivity_state_1.ConnectivityState.IDLE;\n this.latestChildPicker = new picker_1.QueuePicker(this);\n /**\n * This resolving load balancer's current connectivity state.\n */\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The service config object from the last successful resolution, if\n * available. A value of null indicates that we have not yet received a valid\n * service config from the resolver.\n */\n this.previousServiceConfig = null;\n /**\n * Indicates whether we should attempt to resolve again after the backoff\n * timer runs out.\n */\n this.continueResolving = false;\n if (channelOptions['grpc.service_config']) {\n this.defaultServiceConfig = (0, service_config_1.validateServiceConfig)(JSON.parse(channelOptions['grpc.service_config']));\n }\n else {\n this.defaultServiceConfig = {\n loadBalancingConfig: [],\n methodConfig: [],\n };\n }\n this.updateState(connectivity_state_1.ConnectivityState.IDLE, new picker_1.QueuePicker(this));\n this.childLoadBalancer = new load_balancer_child_handler_1.ChildLoadBalancerHandler({\n createSubchannel: channelControlHelper.createSubchannel.bind(channelControlHelper),\n requestReresolution: () => {\n /* If the backoffTimeout is running, we're still backing off from\n * making resolve requests, so we shouldn't make another one here.\n * In that case, the backoff timer callback will call\n * updateResolution */\n if (this.backoffTimeout.isRunning()) {\n trace('requestReresolution delayed by backoff timer until ' + this.backoffTimeout.getEndTime().toISOString());\n this.continueResolving = true;\n }\n else {\n this.updateResolution();\n }\n },\n updateState: (newState, picker) => {\n this.latestChildState = newState;\n this.latestChildPicker = picker;\n this.updateState(newState, picker);\n },\n addChannelzChild: channelControlHelper.addChannelzChild.bind(channelControlHelper),\n removeChannelzChild: channelControlHelper.removeChannelzChild.bind(channelControlHelper),\n }, channelOptions);\n this.innerResolver = (0, resolver_1.createResolver)(target, {\n onSuccessfulResolution: (endpointList, serviceConfig, serviceConfigError, configSelector, attributes) => {\n var _a;\n this.backoffTimeout.stop();\n this.backoffTimeout.reset();\n let workingServiceConfig = null;\n /* This first group of conditionals implements the algorithm described\n * in https://github.com/grpc/proposal/blob/master/A21-service-config-error-handling.md\n * in the section called \"Behavior on receiving a new gRPC Config\".\n */\n if (serviceConfig === null) {\n // Step 4 and 5\n if (serviceConfigError === null) {\n // Step 5\n this.previousServiceConfig = null;\n workingServiceConfig = this.defaultServiceConfig;\n }\n else {\n // Step 4\n if (this.previousServiceConfig === null) {\n // Step 4.ii\n this.handleResolutionFailure(serviceConfigError);\n }\n else {\n // Step 4.i\n workingServiceConfig = this.previousServiceConfig;\n }\n }\n }\n else {\n // Step 3\n workingServiceConfig = serviceConfig;\n this.previousServiceConfig = serviceConfig;\n }\n const workingConfigList = (_a = workingServiceConfig === null || workingServiceConfig === void 0 ? void 0 : workingServiceConfig.loadBalancingConfig) !== null && _a !== void 0 ? _a : [];\n const loadBalancingConfig = (0, load_balancer_1.selectLbConfigFromList)(workingConfigList, true);\n if (loadBalancingConfig === null) {\n // There were load balancing configs but none are supported. This counts as a resolution failure\n this.handleResolutionFailure({\n code: constants_1.Status.UNAVAILABLE,\n details: 'All load balancer options in service config are not compatible',\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n this.childLoadBalancer.updateAddressList(endpointList, loadBalancingConfig, attributes);\n const finalServiceConfig = workingServiceConfig !== null && workingServiceConfig !== void 0 ? workingServiceConfig : this.defaultServiceConfig;\n this.onSuccessfulResolution(finalServiceConfig, configSelector !== null && configSelector !== void 0 ? configSelector : getDefaultConfigSelector(finalServiceConfig));\n },\n onError: (error) => {\n this.handleResolutionFailure(error);\n },\n }, channelOptions);\n const backoffOptions = {\n initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n };\n this.backoffTimeout = new backoff_timeout_1.BackoffTimeout(() => {\n if (this.continueResolving) {\n this.updateResolution();\n this.continueResolving = false;\n }\n else {\n this.updateState(this.latestChildState, this.latestChildPicker);\n }\n }, backoffOptions);\n this.backoffTimeout.unref();\n }\n updateResolution() {\n this.innerResolver.updateResolution();\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE) {\n /* this.latestChildPicker is initialized as new QueuePicker(this), which\n * is an appropriate value here if the child LB policy is unset.\n * Otherwise, we want to delegate to the child here, in case that\n * triggers something. */\n this.updateState(connectivity_state_1.ConnectivityState.CONNECTING, this.latestChildPicker);\n }\n this.backoffTimeout.runOnce();\n }\n updateState(connectivityState, picker) {\n trace((0, uri_parser_1.uriToString)(this.target) +\n ' ' +\n connectivity_state_1.ConnectivityState[this.currentState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[connectivityState]);\n // Ensure that this.exitIdle() is called by the picker\n if (connectivityState === connectivity_state_1.ConnectivityState.IDLE) {\n picker = new picker_1.QueuePicker(this, picker);\n }\n this.currentState = connectivityState;\n this.channelControlHelper.updateState(connectivityState, picker);\n }\n handleResolutionFailure(error) {\n if (this.latestChildState === connectivity_state_1.ConnectivityState.IDLE) {\n this.updateState(connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, new picker_1.UnavailablePicker(error));\n this.onFailedResolution(error);\n }\n }\n exitIdle() {\n if (this.currentState === connectivity_state_1.ConnectivityState.IDLE ||\n this.currentState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n if (this.backoffTimeout.isRunning()) {\n this.continueResolving = true;\n }\n else {\n this.updateResolution();\n }\n }\n this.childLoadBalancer.exitIdle();\n }\n updateAddressList(endpointList, lbConfig) {\n throw new Error('updateAddressList not supported on ResolvingLoadBalancer');\n }\n resetBackoff() {\n this.backoffTimeout.reset();\n this.childLoadBalancer.resetBackoff();\n }\n destroy() {\n this.childLoadBalancer.destroy();\n this.innerResolver.destroy();\n this.backoffTimeout.reset();\n this.backoffTimeout.stop();\n this.latestChildState = connectivity_state_1.ConnectivityState.IDLE;\n this.latestChildPicker = new picker_1.QueuePicker(this);\n this.currentState = connectivity_state_1.ConnectivityState.IDLE;\n this.previousServiceConfig = null;\n this.continueResolving = false;\n }\n getTypeName() {\n return 'resolving_load_balancer';\n }\n}\nexports.ResolvingLoadBalancer = ResolvingLoadBalancer;\n//# sourceMappingURL=resolving-load-balancer.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RetryingCall = exports.MessageBufferTracker = exports.RetryThrottler = void 0;\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst logging = require(\"./logging\");\nconst TRACER_NAME = 'retrying_call';\nclass RetryThrottler {\n constructor(maxTokens, tokenRatio, previousRetryThrottler) {\n this.maxTokens = maxTokens;\n this.tokenRatio = tokenRatio;\n if (previousRetryThrottler) {\n /* When carrying over tokens from a previous config, rescale them to the\n * new max value */\n this.tokens =\n previousRetryThrottler.tokens *\n (maxTokens / previousRetryThrottler.maxTokens);\n }\n else {\n this.tokens = maxTokens;\n }\n }\n addCallSucceeded() {\n this.tokens = Math.max(this.tokens + this.tokenRatio, this.maxTokens);\n }\n addCallFailed() {\n this.tokens = Math.min(this.tokens - 1, 0);\n }\n canRetryCall() {\n return this.tokens > this.maxTokens / 2;\n }\n}\nexports.RetryThrottler = RetryThrottler;\nclass MessageBufferTracker {\n constructor(totalLimit, limitPerCall) {\n this.totalLimit = totalLimit;\n this.limitPerCall = limitPerCall;\n this.totalAllocated = 0;\n this.allocatedPerCall = new Map();\n }\n allocate(size, callId) {\n var _a;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (this.limitPerCall - currentPerCall < size ||\n this.totalLimit - this.totalAllocated < size) {\n return false;\n }\n this.allocatedPerCall.set(callId, currentPerCall + size);\n this.totalAllocated += size;\n return true;\n }\n free(size, callId) {\n var _a;\n if (this.totalAllocated < size) {\n throw new Error(`Invalid buffer allocation state: call ${callId} freed ${size} > total allocated ${this.totalAllocated}`);\n }\n this.totalAllocated -= size;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (currentPerCall < size) {\n throw new Error(`Invalid buffer allocation state: call ${callId} freed ${size} > allocated for call ${currentPerCall}`);\n }\n this.allocatedPerCall.set(callId, currentPerCall - size);\n }\n freeAll(callId) {\n var _a;\n const currentPerCall = (_a = this.allocatedPerCall.get(callId)) !== null && _a !== void 0 ? _a : 0;\n if (this.totalAllocated < currentPerCall) {\n throw new Error(`Invalid buffer allocation state: call ${callId} allocated ${currentPerCall} > total allocated ${this.totalAllocated}`);\n }\n this.totalAllocated -= currentPerCall;\n this.allocatedPerCall.delete(callId);\n }\n}\nexports.MessageBufferTracker = MessageBufferTracker;\nconst PREVIONS_RPC_ATTEMPTS_METADATA_KEY = 'grpc-previous-rpc-attempts';\nclass RetryingCall {\n constructor(channel, callConfig, methodName, host, credentials, deadline, callNumber, bufferTracker, retryThrottler) {\n this.channel = channel;\n this.callConfig = callConfig;\n this.methodName = methodName;\n this.host = host;\n this.credentials = credentials;\n this.deadline = deadline;\n this.callNumber = callNumber;\n this.bufferTracker = bufferTracker;\n this.retryThrottler = retryThrottler;\n this.listener = null;\n this.initialMetadata = null;\n this.underlyingCalls = [];\n this.writeBuffer = [];\n /**\n * The offset of message indices in the writeBuffer. For example, if\n * writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15\n * is in writeBuffer[5].\n */\n this.writeBufferOffset = 0;\n /**\n * Tracks whether a read has been started, so that we know whether to start\n * reads on new child calls. This only matters for the first read, because\n * once a message comes in the child call becomes committed and there will\n * be no new child calls.\n */\n this.readStarted = false;\n this.transparentRetryUsed = false;\n /**\n * Number of attempts so far\n */\n this.attempts = 0;\n this.hedgingTimer = null;\n this.committedCallIndex = null;\n this.initialRetryBackoffSec = 0;\n this.nextRetryBackoffSec = 0;\n if (callConfig.methodConfig.retryPolicy) {\n this.state = 'RETRY';\n const retryPolicy = callConfig.methodConfig.retryPolicy;\n this.nextRetryBackoffSec = this.initialRetryBackoffSec = Number(retryPolicy.initialBackoff.substring(0, retryPolicy.initialBackoff.length - 1));\n }\n else if (callConfig.methodConfig.hedgingPolicy) {\n this.state = 'HEDGING';\n }\n else {\n this.state = 'TRANSPARENT_ONLY';\n }\n }\n getCallNumber() {\n return this.callNumber;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callNumber + '] ' + text);\n }\n reportStatus(statusObject) {\n this.trace('ended with status: code=' +\n statusObject.code +\n ' details=\"' +\n statusObject.details +\n '\"');\n this.bufferTracker.freeAll(this.callNumber);\n this.writeBufferOffset = this.writeBufferOffset + this.writeBuffer.length;\n this.writeBuffer = [];\n process.nextTick(() => {\n var _a;\n // Explicitly construct status object to remove progress field\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onReceiveStatus({\n code: statusObject.code,\n details: statusObject.details,\n metadata: statusObject.metadata,\n });\n });\n }\n cancelWithStatus(status, details) {\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n this.reportStatus({ code: status, details, metadata: new metadata_1.Metadata() });\n for (const { call } of this.underlyingCalls) {\n call.cancelWithStatus(status, details);\n }\n }\n getPeer() {\n if (this.committedCallIndex !== null) {\n return this.underlyingCalls[this.committedCallIndex].call.getPeer();\n }\n else {\n return 'unknown';\n }\n }\n getBufferEntry(messageIndex) {\n var _a;\n return ((_a = this.writeBuffer[messageIndex - this.writeBufferOffset]) !== null && _a !== void 0 ? _a : {\n entryType: 'FREED',\n allocated: false,\n });\n }\n getNextBufferIndex() {\n return this.writeBufferOffset + this.writeBuffer.length;\n }\n clearSentMessages() {\n if (this.state !== 'COMMITTED') {\n return;\n }\n const earliestNeededMessageIndex = this.underlyingCalls[this.committedCallIndex].nextMessageToSend;\n for (let messageIndex = this.writeBufferOffset; messageIndex < earliestNeededMessageIndex; messageIndex++) {\n const bufferEntry = this.getBufferEntry(messageIndex);\n if (bufferEntry.allocated) {\n this.bufferTracker.free(bufferEntry.message.message.length, this.callNumber);\n }\n }\n this.writeBuffer = this.writeBuffer.slice(earliestNeededMessageIndex - this.writeBufferOffset);\n this.writeBufferOffset = earliestNeededMessageIndex;\n }\n commitCall(index) {\n if (this.state === 'COMMITTED') {\n return;\n }\n if (this.underlyingCalls[index].state === 'COMPLETED') {\n return;\n }\n this.trace('Committing call [' +\n this.underlyingCalls[index].call.getCallNumber() +\n '] at index ' +\n index);\n this.state = 'COMMITTED';\n this.committedCallIndex = index;\n for (let i = 0; i < this.underlyingCalls.length; i++) {\n if (i === index) {\n continue;\n }\n if (this.underlyingCalls[i].state === 'COMPLETED') {\n continue;\n }\n this.underlyingCalls[i].state = 'COMPLETED';\n this.underlyingCalls[i].call.cancelWithStatus(constants_1.Status.CANCELLED, 'Discarded in favor of other hedged attempt');\n }\n this.clearSentMessages();\n }\n commitCallWithMostMessages() {\n if (this.state === 'COMMITTED') {\n return;\n }\n let mostMessages = -1;\n let callWithMostMessages = -1;\n for (const [index, childCall] of this.underlyingCalls.entries()) {\n if (childCall.state === 'ACTIVE' &&\n childCall.nextMessageToSend > mostMessages) {\n mostMessages = childCall.nextMessageToSend;\n callWithMostMessages = index;\n }\n }\n if (callWithMostMessages === -1) {\n /* There are no active calls, disable retries to force the next call that\n * is started to be committed. */\n this.state = 'TRANSPARENT_ONLY';\n }\n else {\n this.commitCall(callWithMostMessages);\n }\n }\n isStatusCodeInList(list, code) {\n return list.some(value => value === code ||\n value.toString().toLowerCase() === constants_1.Status[code].toLowerCase());\n }\n getNextRetryBackoffMs() {\n var _a;\n const retryPolicy = (_a = this.callConfig) === null || _a === void 0 ? void 0 : _a.methodConfig.retryPolicy;\n if (!retryPolicy) {\n return 0;\n }\n const nextBackoffMs = Math.random() * this.nextRetryBackoffSec * 1000;\n const maxBackoffSec = Number(retryPolicy.maxBackoff.substring(0, retryPolicy.maxBackoff.length - 1));\n this.nextRetryBackoffSec = Math.min(this.nextRetryBackoffSec * retryPolicy.backoffMultiplier, maxBackoffSec);\n return nextBackoffMs;\n }\n maybeRetryCall(pushback, callback) {\n if (this.state !== 'RETRY') {\n callback(false);\n return;\n }\n const retryPolicy = this.callConfig.methodConfig.retryPolicy;\n if (this.attempts >= Math.min(retryPolicy.maxAttempts, 5)) {\n callback(false);\n return;\n }\n let retryDelayMs;\n if (pushback === null) {\n retryDelayMs = this.getNextRetryBackoffMs();\n }\n else if (pushback < 0) {\n this.state = 'TRANSPARENT_ONLY';\n callback(false);\n return;\n }\n else {\n retryDelayMs = pushback;\n this.nextRetryBackoffSec = this.initialRetryBackoffSec;\n }\n setTimeout(() => {\n var _a, _b;\n if (this.state !== 'RETRY') {\n callback(false);\n return;\n }\n if ((_b = (_a = this.retryThrottler) === null || _a === void 0 ? void 0 : _a.canRetryCall()) !== null && _b !== void 0 ? _b : true) {\n callback(true);\n this.attempts += 1;\n this.startNewAttempt();\n }\n }, retryDelayMs);\n }\n countActiveCalls() {\n let count = 0;\n for (const call of this.underlyingCalls) {\n if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE') {\n count += 1;\n }\n }\n return count;\n }\n handleProcessedStatus(status, callIndex, pushback) {\n var _a, _b, _c;\n switch (this.state) {\n case 'COMMITTED':\n case 'TRANSPARENT_ONLY':\n this.commitCall(callIndex);\n this.reportStatus(status);\n break;\n case 'HEDGING':\n if (this.isStatusCodeInList((_a = this.callConfig.methodConfig.hedgingPolicy.nonFatalStatusCodes) !== null && _a !== void 0 ? _a : [], status.code)) {\n (_b = this.retryThrottler) === null || _b === void 0 ? void 0 : _b.addCallFailed();\n let delayMs;\n if (pushback === null) {\n delayMs = 0;\n }\n else if (pushback < 0) {\n this.state = 'TRANSPARENT_ONLY';\n this.commitCall(callIndex);\n this.reportStatus(status);\n return;\n }\n else {\n delayMs = pushback;\n }\n setTimeout(() => {\n this.maybeStartHedgingAttempt();\n // If after trying to start a call there are no active calls, this was the last one\n if (this.countActiveCalls() === 0) {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n }, delayMs);\n }\n else {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n break;\n case 'RETRY':\n if (this.isStatusCodeInList(this.callConfig.methodConfig.retryPolicy.retryableStatusCodes, status.code)) {\n (_c = this.retryThrottler) === null || _c === void 0 ? void 0 : _c.addCallFailed();\n this.maybeRetryCall(pushback, retried => {\n if (!retried) {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n });\n }\n else {\n this.commitCall(callIndex);\n this.reportStatus(status);\n }\n break;\n }\n }\n getPushback(metadata) {\n const mdValue = metadata.get('grpc-retry-pushback-ms');\n if (mdValue.length === 0) {\n return null;\n }\n try {\n return parseInt(mdValue[0]);\n }\n catch (e) {\n return -1;\n }\n }\n handleChildStatus(status, callIndex) {\n var _a;\n if (this.underlyingCalls[callIndex].state === 'COMPLETED') {\n return;\n }\n this.trace('state=' +\n this.state +\n ' handling status with progress ' +\n status.progress +\n ' from child [' +\n this.underlyingCalls[callIndex].call.getCallNumber() +\n '] in state ' +\n this.underlyingCalls[callIndex].state);\n this.underlyingCalls[callIndex].state = 'COMPLETED';\n if (status.code === constants_1.Status.OK) {\n (_a = this.retryThrottler) === null || _a === void 0 ? void 0 : _a.addCallSucceeded();\n this.commitCall(callIndex);\n this.reportStatus(status);\n return;\n }\n if (this.state === 'COMMITTED') {\n this.reportStatus(status);\n return;\n }\n const pushback = this.getPushback(status.metadata);\n switch (status.progress) {\n case 'NOT_STARTED':\n // RPC never leaves the client, always safe to retry\n this.startNewAttempt();\n break;\n case 'REFUSED':\n // RPC reaches the server library, but not the server application logic\n if (this.transparentRetryUsed) {\n this.handleProcessedStatus(status, callIndex, pushback);\n }\n else {\n this.transparentRetryUsed = true;\n this.startNewAttempt();\n }\n break;\n case 'DROP':\n this.commitCall(callIndex);\n this.reportStatus(status);\n break;\n case 'PROCESSED':\n this.handleProcessedStatus(status, callIndex, pushback);\n break;\n }\n }\n maybeStartHedgingAttempt() {\n if (this.state !== 'HEDGING') {\n return;\n }\n if (!this.callConfig.methodConfig.hedgingPolicy) {\n return;\n }\n const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n if (this.attempts >= Math.min(hedgingPolicy.maxAttempts, 5)) {\n return;\n }\n this.attempts += 1;\n this.startNewAttempt();\n this.maybeStartHedgingTimer();\n }\n maybeStartHedgingTimer() {\n var _a, _b, _c;\n if (this.hedgingTimer) {\n clearTimeout(this.hedgingTimer);\n }\n if (this.state !== 'HEDGING') {\n return;\n }\n if (!this.callConfig.methodConfig.hedgingPolicy) {\n return;\n }\n const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n if (this.attempts >= Math.min(hedgingPolicy.maxAttempts, 5)) {\n return;\n }\n const hedgingDelayString = (_a = hedgingPolicy.hedgingDelay) !== null && _a !== void 0 ? _a : '0s';\n const hedgingDelaySec = Number(hedgingDelayString.substring(0, hedgingDelayString.length - 1));\n this.hedgingTimer = setTimeout(() => {\n this.maybeStartHedgingAttempt();\n }, hedgingDelaySec * 1000);\n (_c = (_b = this.hedgingTimer).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n startNewAttempt() {\n const child = this.channel.createLoadBalancingCall(this.callConfig, this.methodName, this.host, this.credentials, this.deadline);\n this.trace('Created child call [' +\n child.getCallNumber() +\n '] for attempt ' +\n this.attempts);\n const index = this.underlyingCalls.length;\n this.underlyingCalls.push({\n state: 'ACTIVE',\n call: child,\n nextMessageToSend: 0,\n });\n const previousAttempts = this.attempts - 1;\n const initialMetadata = this.initialMetadata.clone();\n if (previousAttempts > 0) {\n initialMetadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n let receivedMetadata = false;\n child.start(initialMetadata, {\n onReceiveMetadata: metadata => {\n this.trace('Received metadata from child [' + child.getCallNumber() + ']');\n this.commitCall(index);\n receivedMetadata = true;\n if (previousAttempts > 0) {\n metadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n if (this.underlyingCalls[index].state === 'ACTIVE') {\n this.listener.onReceiveMetadata(metadata);\n }\n },\n onReceiveMessage: message => {\n this.trace('Received message from child [' + child.getCallNumber() + ']');\n this.commitCall(index);\n if (this.underlyingCalls[index].state === 'ACTIVE') {\n this.listener.onReceiveMessage(message);\n }\n },\n onReceiveStatus: status => {\n this.trace('Received status from child [' + child.getCallNumber() + ']');\n if (!receivedMetadata && previousAttempts > 0) {\n status.metadata.set(PREVIONS_RPC_ATTEMPTS_METADATA_KEY, `${previousAttempts}`);\n }\n this.handleChildStatus(status, index);\n },\n });\n this.sendNextChildMessage(index);\n if (this.readStarted) {\n child.startRead();\n }\n }\n start(metadata, listener) {\n this.trace('start called');\n this.listener = listener;\n this.initialMetadata = metadata;\n this.attempts += 1;\n this.startNewAttempt();\n this.maybeStartHedgingTimer();\n }\n handleChildWriteCompleted(childIndex) {\n var _a, _b;\n const childCall = this.underlyingCalls[childIndex];\n const messageIndex = childCall.nextMessageToSend;\n (_b = (_a = this.getBufferEntry(messageIndex)).callback) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.clearSentMessages();\n childCall.nextMessageToSend += 1;\n this.sendNextChildMessage(childIndex);\n }\n sendNextChildMessage(childIndex) {\n const childCall = this.underlyingCalls[childIndex];\n if (childCall.state === 'COMPLETED') {\n return;\n }\n if (this.getBufferEntry(childCall.nextMessageToSend)) {\n const bufferEntry = this.getBufferEntry(childCall.nextMessageToSend);\n switch (bufferEntry.entryType) {\n case 'MESSAGE':\n childCall.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(childIndex);\n },\n }, bufferEntry.message.message);\n break;\n case 'HALF_CLOSE':\n childCall.nextMessageToSend += 1;\n childCall.call.halfClose();\n break;\n case 'FREED':\n // Should not be possible\n break;\n }\n }\n }\n sendMessageWithContext(context, message) {\n var _a;\n this.trace('write() called with message of length ' + message.length);\n const writeObj = {\n message,\n flags: context.flags,\n };\n const messageIndex = this.getNextBufferIndex();\n const bufferEntry = {\n entryType: 'MESSAGE',\n message: writeObj,\n allocated: this.bufferTracker.allocate(message.length, this.callNumber),\n };\n this.writeBuffer.push(bufferEntry);\n if (bufferEntry.allocated) {\n (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context);\n for (const [callIndex, call] of this.underlyingCalls.entries()) {\n if (call.state === 'ACTIVE' &&\n call.nextMessageToSend === messageIndex) {\n call.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(callIndex);\n },\n }, message);\n }\n }\n }\n else {\n this.commitCallWithMostMessages();\n // commitCallWithMostMessages can fail if we are between ping attempts\n if (this.committedCallIndex === null) {\n return;\n }\n const call = this.underlyingCalls[this.committedCallIndex];\n bufferEntry.callback = context.callback;\n if (call.state === 'ACTIVE' && call.nextMessageToSend === messageIndex) {\n call.call.sendMessageWithContext({\n callback: error => {\n // Ignore error\n this.handleChildWriteCompleted(this.committedCallIndex);\n },\n }, message);\n }\n }\n }\n startRead() {\n this.trace('startRead called');\n this.readStarted = true;\n for (const underlyingCall of this.underlyingCalls) {\n if ((underlyingCall === null || underlyingCall === void 0 ? void 0 : underlyingCall.state) === 'ACTIVE') {\n underlyingCall.call.startRead();\n }\n }\n }\n halfClose() {\n this.trace('halfClose called');\n const halfCloseIndex = this.getNextBufferIndex();\n this.writeBuffer.push({\n entryType: 'HALF_CLOSE',\n allocated: false,\n });\n for (const call of this.underlyingCalls) {\n if ((call === null || call === void 0 ? void 0 : call.state) === 'ACTIVE' &&\n call.nextMessageToSend === halfCloseIndex) {\n call.nextMessageToSend += 1;\n call.call.halfClose();\n }\n }\n }\n setCredentials(newCredentials) {\n throw new Error('Method not implemented.');\n }\n getMethod() {\n return this.methodName;\n }\n getHost() {\n return this.host;\n }\n}\nexports.RetryingCall = RetryingCall;\n//# sourceMappingURL=retrying-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerDuplexStreamImpl = exports.ServerWritableStreamImpl = exports.ServerReadableStreamImpl = exports.ServerUnaryCallImpl = exports.serverErrorToStatus = void 0;\nconst events_1 = require(\"events\");\nconst stream_1 = require(\"stream\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nfunction serverErrorToStatus(error, overrideTrailers) {\n var _a;\n const status = {\n code: constants_1.Status.UNKNOWN,\n details: 'message' in error ? error.message : 'Unknown Error',\n metadata: (_a = overrideTrailers !== null && overrideTrailers !== void 0 ? overrideTrailers : error.metadata) !== null && _a !== void 0 ? _a : null\n };\n if ('code' in error &&\n typeof error.code === 'number' &&\n Number.isInteger(error.code)) {\n status.code = error.code;\n if ('details' in error && typeof error.details === 'string') {\n status.details = error.details;\n }\n }\n return status;\n}\nexports.serverErrorToStatus = serverErrorToStatus;\nclass ServerUnaryCallImpl extends events_1.EventEmitter {\n constructor(path, call, metadata, request) {\n super();\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.request = request;\n this.cancelled = false;\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n}\nexports.ServerUnaryCallImpl = ServerUnaryCallImpl;\nclass ServerReadableStreamImpl extends stream_1.Readable {\n constructor(path, call, metadata) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.cancelled = false;\n }\n _read(size) {\n this.call.startRead();\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n}\nexports.ServerReadableStreamImpl = ServerReadableStreamImpl;\nclass ServerWritableStreamImpl extends stream_1.Writable {\n constructor(path, call, metadata, request) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.request = request;\n this.pendingStatus = {\n code: constants_1.Status.OK,\n details: 'OK'\n };\n this.cancelled = false;\n this.trailingMetadata = new metadata_1.Metadata();\n this.on('error', err => {\n this.pendingStatus = serverErrorToStatus(err);\n this.end();\n });\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n _write(chunk, encoding, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this.call.sendMessage(chunk, callback);\n }\n _final(callback) {\n var _a;\n this.call.sendStatus(Object.assign(Object.assign({}, this.pendingStatus), { metadata: (_a = this.pendingStatus.metadata) !== null && _a !== void 0 ? _a : this.trailingMetadata }));\n callback(null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n end(metadata) {\n if (metadata) {\n this.trailingMetadata = metadata;\n }\n return super.end();\n }\n}\nexports.ServerWritableStreamImpl = ServerWritableStreamImpl;\nclass ServerDuplexStreamImpl extends stream_1.Duplex {\n constructor(path, call, metadata) {\n super({ objectMode: true });\n this.path = path;\n this.call = call;\n this.metadata = metadata;\n this.pendingStatus = {\n code: constants_1.Status.OK,\n details: 'OK'\n };\n this.cancelled = false;\n this.trailingMetadata = new metadata_1.Metadata();\n this.on('error', err => {\n this.pendingStatus = serverErrorToStatus(err);\n this.end();\n });\n }\n getPeer() {\n return this.call.getPeer();\n }\n sendMetadata(responseMetadata) {\n this.call.sendMetadata(responseMetadata);\n }\n getDeadline() {\n return this.call.getDeadline();\n }\n getPath() {\n return this.path;\n }\n _read(size) {\n this.call.startRead();\n }\n _write(chunk, encoding, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback) {\n this.call.sendMessage(chunk, callback);\n }\n _final(callback) {\n var _a;\n this.call.sendStatus(Object.assign(Object.assign({}, this.pendingStatus), { metadata: (_a = this.pendingStatus.metadata) !== null && _a !== void 0 ? _a : this.trailingMetadata }));\n callback(null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n end(metadata) {\n if (metadata) {\n this.trailingMetadata = metadata;\n }\n return super.end();\n }\n}\nexports.ServerDuplexStreamImpl = ServerDuplexStreamImpl;\n//# sourceMappingURL=server-call.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerCredentials = void 0;\nconst tls_helpers_1 = require(\"./tls-helpers\");\nclass ServerCredentials {\n static createInsecure() {\n return new InsecureServerCredentials();\n }\n static createSsl(rootCerts, keyCertPairs, checkClientCertificate = false) {\n var _a;\n if (rootCerts !== null && !Buffer.isBuffer(rootCerts)) {\n throw new TypeError('rootCerts must be null or a Buffer');\n }\n if (!Array.isArray(keyCertPairs)) {\n throw new TypeError('keyCertPairs must be an array');\n }\n if (typeof checkClientCertificate !== 'boolean') {\n throw new TypeError('checkClientCertificate must be a boolean');\n }\n const cert = [];\n const key = [];\n for (let i = 0; i < keyCertPairs.length; i++) {\n const pair = keyCertPairs[i];\n if (pair === null || typeof pair !== 'object') {\n throw new TypeError(`keyCertPair[${i}] must be an object`);\n }\n if (!Buffer.isBuffer(pair.private_key)) {\n throw new TypeError(`keyCertPair[${i}].private_key must be a Buffer`);\n }\n if (!Buffer.isBuffer(pair.cert_chain)) {\n throw new TypeError(`keyCertPair[${i}].cert_chain must be a Buffer`);\n }\n cert.push(pair.cert_chain);\n key.push(pair.private_key);\n }\n return new SecureServerCredentials({\n ca: (_a = rootCerts !== null && rootCerts !== void 0 ? rootCerts : (0, tls_helpers_1.getDefaultRootsData)()) !== null && _a !== void 0 ? _a : undefined,\n cert,\n key,\n requestCert: checkClientCertificate,\n ciphers: tls_helpers_1.CIPHER_SUITES,\n });\n }\n}\nexports.ServerCredentials = ServerCredentials;\nclass InsecureServerCredentials extends ServerCredentials {\n _isSecure() {\n return false;\n }\n _getSettings() {\n return null;\n }\n _equals(other) {\n return other instanceof InsecureServerCredentials;\n }\n}\nclass SecureServerCredentials extends ServerCredentials {\n constructor(options) {\n super();\n this.options = options;\n }\n _isSecure() {\n return true;\n }\n _getSettings() {\n return this.options;\n }\n /**\n * Checks equality by checking the options that are actually set by\n * createSsl.\n * @param other\n * @returns\n */\n _equals(other) {\n if (this === other) {\n return true;\n }\n if (!(other instanceof SecureServerCredentials)) {\n return false;\n }\n // options.ca equality check\n if (Buffer.isBuffer(this.options.ca) && Buffer.isBuffer(other.options.ca)) {\n if (!this.options.ca.equals(other.options.ca)) {\n return false;\n }\n }\n else {\n if (this.options.ca !== other.options.ca) {\n return false;\n }\n }\n // options.cert equality check\n if (Array.isArray(this.options.cert) && Array.isArray(other.options.cert)) {\n if (this.options.cert.length !== other.options.cert.length) {\n return false;\n }\n for (let i = 0; i < this.options.cert.length; i++) {\n const thisCert = this.options.cert[i];\n const otherCert = other.options.cert[i];\n if (Buffer.isBuffer(thisCert) && Buffer.isBuffer(otherCert)) {\n if (!thisCert.equals(otherCert)) {\n return false;\n }\n }\n else {\n if (thisCert !== otherCert) {\n return false;\n }\n }\n }\n }\n else {\n if (this.options.cert !== other.options.cert) {\n return false;\n }\n }\n // options.key equality check\n if (Array.isArray(this.options.key) && Array.isArray(other.options.key)) {\n if (this.options.key.length !== other.options.key.length) {\n return false;\n }\n for (let i = 0; i < this.options.key.length; i++) {\n const thisKey = this.options.key[i];\n const otherKey = other.options.key[i];\n if (Buffer.isBuffer(thisKey) && Buffer.isBuffer(otherKey)) {\n if (!thisKey.equals(otherKey)) {\n return false;\n }\n }\n else {\n if (thisKey !== otherKey) {\n return false;\n }\n }\n }\n }\n else {\n if (this.options.key !== other.options.key) {\n return false;\n }\n }\n // options.requestCert equality check\n if (this.options.requestCert !== other.options.requestCert) {\n return false;\n }\n /* ciphers is derived from a value that is constant for the process, so no\n * equality check is needed. */\n return true;\n }\n}\n//# sourceMappingURL=server-credentials.js.map","\"use strict\";\n/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getServerInterceptingCall = exports.BaseServerInterceptingCall = exports.ServerInterceptingCall = exports.ResponderBuilder = exports.isInterceptingServerListener = exports.ServerListenerBuilder = void 0;\nconst metadata_1 = require(\"./metadata\");\nconst constants_1 = require(\"./constants\");\nconst http2 = require(\"http2\");\nconst error_1 = require(\"./error\");\nconst zlib = require(\"zlib\");\nconst util_1 = require(\"util\");\nconst stream_decoder_1 = require(\"./stream-decoder\");\nconst logging = require(\"./logging\");\nconst unzip = (0, util_1.promisify)(zlib.unzip);\nconst inflate = (0, util_1.promisify)(zlib.inflate);\nconst TRACER_NAME = 'server_call';\nfunction trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, text);\n}\nclass ServerListenerBuilder {\n constructor() {\n this.metadata = undefined;\n this.message = undefined;\n this.halfClose = undefined;\n this.cancel = undefined;\n }\n withOnReceiveMetadata(onReceiveMetadata) {\n this.metadata = onReceiveMetadata;\n return this;\n }\n withOnReceiveMessage(onReceiveMessage) {\n this.message = onReceiveMessage;\n return this;\n }\n withOnReceiveHalfClose(onReceiveHalfClose) {\n this.halfClose = onReceiveHalfClose;\n return this;\n }\n withOnCancel(onCancel) {\n this.cancel = onCancel;\n return this;\n }\n build() {\n return {\n onReceiveMetadata: this.metadata,\n onReceiveMessage: this.message,\n onReceiveHalfClose: this.halfClose,\n onCancel: this.cancel\n };\n }\n}\nexports.ServerListenerBuilder = ServerListenerBuilder;\nfunction isInterceptingServerListener(listener) {\n return listener.onReceiveMetadata !== undefined && listener.onReceiveMetadata.length === 1;\n}\nexports.isInterceptingServerListener = isInterceptingServerListener;\nclass InterceptingServerListenerImpl {\n constructor(listener, nextListener) {\n this.listener = listener;\n this.nextListener = nextListener;\n /**\n * Once the call is cancelled, ignore all other events.\n */\n this.cancelled = false;\n this.processingMetadata = false;\n this.hasPendingMessage = false;\n this.pendingMessage = null;\n this.processingMessage = false;\n this.hasPendingHalfClose = false;\n }\n processPendingMessage() {\n if (this.hasPendingMessage) {\n this.nextListener.onReceiveMessage(this.pendingMessage);\n this.pendingMessage = null;\n this.hasPendingMessage = false;\n }\n }\n processPendingHalfClose() {\n if (this.hasPendingHalfClose) {\n this.nextListener.onReceiveHalfClose();\n this.hasPendingHalfClose = false;\n }\n }\n onReceiveMetadata(metadata) {\n if (this.cancelled) {\n return;\n }\n this.processingMetadata = true;\n this.listener.onReceiveMetadata(metadata, interceptedMetadata => {\n this.processingMetadata = false;\n if (this.cancelled) {\n return;\n }\n this.nextListener.onReceiveMetadata(interceptedMetadata);\n this.processPendingMessage();\n this.processPendingHalfClose();\n });\n }\n onReceiveMessage(message) {\n if (this.cancelled) {\n return;\n }\n this.processingMessage = true;\n this.listener.onReceiveMessage(message, msg => {\n this.processingMessage = false;\n if (this.cancelled) {\n return;\n }\n if (this.processingMetadata) {\n this.pendingMessage = msg;\n this.hasPendingMessage = true;\n }\n else {\n this.nextListener.onReceiveMessage(msg);\n this.processPendingHalfClose();\n }\n });\n }\n onReceiveHalfClose() {\n if (this.cancelled) {\n return;\n }\n this.listener.onReceiveHalfClose(() => {\n if (this.cancelled) {\n return;\n }\n if (this.processingMetadata || this.processingMessage) {\n this.hasPendingHalfClose = true;\n }\n else {\n this.nextListener.onReceiveHalfClose();\n }\n });\n }\n onCancel() {\n this.cancelled = true;\n this.listener.onCancel();\n this.nextListener.onCancel();\n }\n}\nclass ResponderBuilder {\n constructor() {\n this.start = undefined;\n this.metadata = undefined;\n this.message = undefined;\n this.status = undefined;\n }\n withStart(start) {\n this.start = start;\n return this;\n }\n withSendMetadata(sendMetadata) {\n this.metadata = sendMetadata;\n return this;\n }\n withSendMessage(sendMessage) {\n this.message = sendMessage;\n return this;\n }\n withSendStatus(sendStatus) {\n this.status = sendStatus;\n return this;\n }\n build() {\n return {\n start: this.start,\n sendMetadata: this.metadata,\n sendMessage: this.message,\n sendStatus: this.status\n };\n }\n}\nexports.ResponderBuilder = ResponderBuilder;\nconst defaultServerListener = {\n onReceiveMetadata: (metadata, next) => {\n next(metadata);\n },\n onReceiveMessage: (message, next) => {\n next(message);\n },\n onReceiveHalfClose: next => {\n next();\n },\n onCancel: () => { }\n};\nconst defaultResponder = {\n start: (next) => {\n next();\n },\n sendMetadata: (metadata, next) => {\n next(metadata);\n },\n sendMessage: (message, next) => {\n next(message);\n },\n sendStatus: (status, next) => {\n next(status);\n }\n};\nclass ServerInterceptingCall {\n constructor(nextCall, responder) {\n this.nextCall = nextCall;\n this.processingMetadata = false;\n this.processingMessage = false;\n this.pendingMessage = null;\n this.pendingMessageCallback = null;\n this.pendingStatus = null;\n this.responder = Object.assign(Object.assign({}, defaultResponder), responder);\n }\n processPendingMessage() {\n if (this.pendingMessageCallback) {\n this.nextCall.sendMessage(this.pendingMessage, this.pendingMessageCallback);\n this.pendingMessage = null;\n this.pendingMessageCallback = null;\n }\n }\n processPendingStatus() {\n if (this.pendingStatus) {\n this.nextCall.sendStatus(this.pendingStatus);\n this.pendingStatus = null;\n }\n }\n start(listener) {\n this.responder.start(interceptedListener => {\n const fullInterceptedListener = Object.assign(Object.assign({}, defaultServerListener), interceptedListener);\n const finalInterceptingListener = new InterceptingServerListenerImpl(fullInterceptedListener, listener);\n this.nextCall.start(finalInterceptingListener);\n });\n }\n sendMetadata(metadata) {\n this.processingMetadata = true;\n this.responder.sendMetadata(metadata, interceptedMetadata => {\n this.processingMetadata = false;\n this.nextCall.sendMetadata(interceptedMetadata);\n this.processPendingMessage();\n this.processPendingStatus();\n });\n }\n sendMessage(message, callback) {\n this.processingMessage = true;\n this.responder.sendMessage(message, interceptedMessage => {\n this.processingMessage = false;\n if (this.processingMetadata) {\n this.pendingMessage = interceptedMessage;\n this.pendingMessageCallback = callback;\n }\n else {\n this.nextCall.sendMessage(interceptedMessage, callback);\n }\n });\n }\n sendStatus(status) {\n this.responder.sendStatus(status, interceptedStatus => {\n if (this.processingMetadata || this.processingMessage) {\n this.pendingStatus = interceptedStatus;\n }\n else {\n this.nextCall.sendStatus(interceptedStatus);\n }\n });\n }\n startRead() {\n this.nextCall.startRead();\n }\n getPeer() {\n return this.nextCall.getPeer();\n }\n getDeadline() {\n return this.nextCall.getDeadline();\n }\n}\nexports.ServerInterceptingCall = ServerInterceptingCall;\nconst GRPC_ACCEPT_ENCODING_HEADER = 'grpc-accept-encoding';\nconst GRPC_ENCODING_HEADER = 'grpc-encoding';\nconst GRPC_MESSAGE_HEADER = 'grpc-message';\nconst GRPC_STATUS_HEADER = 'grpc-status';\nconst GRPC_TIMEOUT_HEADER = 'grpc-timeout';\nconst DEADLINE_REGEX = /(\\d{1,8})\\s*([HMSmun])/;\nconst deadlineUnitsToMs = {\n H: 3600000,\n M: 60000,\n S: 1000,\n m: 1,\n u: 0.001,\n n: 0.000001,\n};\nconst defaultCompressionHeaders = {\n // TODO(cjihrig): Remove these encoding headers from the default response\n // once compression is integrated.\n [GRPC_ACCEPT_ENCODING_HEADER]: 'identity,deflate,gzip',\n [GRPC_ENCODING_HEADER]: 'identity',\n};\nconst defaultResponseHeaders = {\n [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK,\n [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto',\n};\nconst defaultResponseOptions = {\n waitForTrailers: true,\n};\nclass BaseServerInterceptingCall {\n constructor(stream, headers, callEventTracker, handler, options) {\n this.stream = stream;\n this.callEventTracker = callEventTracker;\n this.handler = handler;\n this.listener = null;\n this.deadlineTimer = null;\n this.deadline = Infinity;\n this.maxSendMessageSize = constants_1.DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n this.maxReceiveMessageSize = constants_1.DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n this.cancelled = false;\n this.metadataSent = false;\n this.wantTrailers = false;\n this.cancelNotified = false;\n this.incomingEncoding = 'identity';\n this.decoder = new stream_decoder_1.StreamDecoder();\n this.readQueue = [];\n this.isReadPending = false;\n this.receivedHalfClose = false;\n this.streamEnded = false;\n this.stream.once('error', (err) => {\n /* We need an error handler to avoid uncaught error event exceptions, but\n * there is nothing we can reasonably do here. Any error event should\n * have a corresponding close event, which handles emitting the cancelled\n * event. And the stream is now in a bad state, so we can't reasonably\n * expect to be able to send an error over it. */\n });\n this.stream.once('close', () => {\n var _a;\n trace('Request to method ' +\n ((_a = this.handler) === null || _a === void 0 ? void 0 : _a.path) +\n ' stream closed with rstCode ' +\n this.stream.rstCode);\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(false);\n this.callEventTracker.onCallEnd({\n code: constants_1.Status.CANCELLED,\n details: 'Stream closed before sending status',\n metadata: null\n });\n }\n this.notifyOnCancel();\n });\n this.stream.on('data', (data) => {\n this.handleDataFrame(data);\n });\n this.stream.pause();\n this.stream.on('end', () => {\n this.handleEndEvent();\n });\n if ('grpc.max_send_message_length' in options) {\n this.maxSendMessageSize = options['grpc.max_send_message_length'];\n }\n if ('grpc.max_receive_message_length' in options) {\n this.maxReceiveMessageSize = options['grpc.max_receive_message_length'];\n }\n const metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n if (logging.isTracerEnabled(TRACER_NAME)) {\n trace('Request to ' +\n this.handler.path +\n ' received headers ' +\n JSON.stringify(metadata.toJSON()));\n }\n const timeoutHeader = metadata.get(GRPC_TIMEOUT_HEADER);\n if (timeoutHeader.length > 0) {\n this.handleTimeoutHeader(timeoutHeader[0]);\n }\n const encodingHeader = metadata.get(GRPC_ENCODING_HEADER);\n if (encodingHeader.length > 0) {\n this.incomingEncoding = encodingHeader[0];\n }\n // Remove several headers that should not be propagated to the application\n metadata.remove(GRPC_TIMEOUT_HEADER);\n metadata.remove(GRPC_ENCODING_HEADER);\n metadata.remove(GRPC_ACCEPT_ENCODING_HEADER);\n metadata.remove(http2.constants.HTTP2_HEADER_ACCEPT_ENCODING);\n metadata.remove(http2.constants.HTTP2_HEADER_TE);\n metadata.remove(http2.constants.HTTP2_HEADER_CONTENT_TYPE);\n this.metadata = metadata;\n }\n handleTimeoutHeader(timeoutHeader) {\n const match = timeoutHeader.toString().match(DEADLINE_REGEX);\n if (match === null) {\n const status = {\n code: constants_1.Status.INTERNAL,\n details: `Invalid ${GRPC_TIMEOUT_HEADER} value \"${timeoutHeader}\"`,\n metadata: null\n };\n // Wait for the constructor to complete before sending the error.\n process.nextTick(() => {\n this.sendStatus(status);\n });\n return;\n }\n const timeout = (+match[1] * deadlineUnitsToMs[match[2]]) | 0;\n const now = new Date();\n this.deadline = now.setMilliseconds(now.getMilliseconds() + timeout);\n this.deadlineTimer = setTimeout(() => {\n const status = {\n code: constants_1.Status.DEADLINE_EXCEEDED,\n details: 'Deadline exceeded',\n metadata: null\n };\n this.sendStatus(status);\n }, timeout);\n }\n checkCancelled() {\n /* In some cases the stream can become destroyed before the close event\n * fires. That creates a race condition that this check works around */\n if (!this.cancelled && (this.stream.destroyed || this.stream.closed)) {\n this.notifyOnCancel();\n this.cancelled = true;\n }\n return this.cancelled;\n }\n notifyOnCancel() {\n if (this.cancelNotified) {\n return;\n }\n this.cancelNotified = true;\n this.cancelled = true;\n process.nextTick(() => {\n var _a;\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.onCancel();\n });\n if (this.deadlineTimer) {\n clearTimeout(this.deadlineTimer);\n }\n // Flush incoming data frames\n this.stream.resume();\n }\n /**\n * A server handler can start sending messages without explicitly sending\n * metadata. In that case, we need to send headers before sending any\n * messages. This function does that if necessary.\n */\n maybeSendMetadata() {\n if (!this.metadataSent) {\n this.sendMetadata(new metadata_1.Metadata());\n }\n }\n /**\n * Serialize a message to a length-delimited byte string.\n * @param value\n * @returns\n */\n serializeMessage(value) {\n const messageBuffer = this.handler.serialize(value);\n const byteLength = messageBuffer.byteLength;\n const output = Buffer.allocUnsafe(byteLength + 5);\n /* Note: response compression is currently not supported, so this\n * compressed bit is always 0. */\n output.writeUInt8(0, 0);\n output.writeUInt32BE(byteLength, 1);\n messageBuffer.copy(output, 5);\n return output;\n }\n decompressMessage(message, encoding) {\n switch (encoding) {\n case 'deflate':\n return inflate(message.subarray(5));\n case 'gzip':\n return unzip(message.subarray(5));\n case 'identity':\n return message.subarray(5);\n default:\n return Promise.reject({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received message compressed with unsupported encoding \"${encoding}\"`,\n });\n }\n }\n async decompressAndMaybePush(queueEntry) {\n if (queueEntry.type !== 'COMPRESSED') {\n throw new Error(`Invalid queue entry type: ${queueEntry.type}`);\n }\n const compressed = queueEntry.compressedMessage.readUInt8(0) === 1;\n const compressedMessageEncoding = compressed ? this.incomingEncoding : 'identity';\n const decompressedMessage = await this.decompressMessage(queueEntry.compressedMessage, compressedMessageEncoding);\n try {\n queueEntry.parsedMessage = this.handler.deserialize(decompressedMessage);\n }\n catch (err) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error deserializing request: ${err.message}`\n });\n return;\n }\n queueEntry.type = 'READABLE';\n this.maybePushNextMessage();\n }\n maybePushNextMessage() {\n if (this.listener && this.isReadPending && this.readQueue.length > 0 && this.readQueue[0].type !== 'COMPRESSED') {\n this.isReadPending = false;\n const nextQueueEntry = this.readQueue.shift();\n if (nextQueueEntry.type === 'READABLE') {\n this.listener.onReceiveMessage(nextQueueEntry.parsedMessage);\n }\n else {\n // nextQueueEntry.type === 'HALF_CLOSE'\n this.listener.onReceiveHalfClose();\n }\n }\n }\n handleDataFrame(data) {\n var _a;\n if (this.checkCancelled()) {\n return;\n }\n trace('Request to ' + this.handler.path + ' received data frame of size ' + data.length);\n const rawMessages = this.decoder.write(data);\n for (const messageBytes of rawMessages) {\n this.stream.pause();\n if (this.maxReceiveMessageSize !== -1 && messageBytes.length - 5 > this.maxReceiveMessageSize) {\n this.sendStatus({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Received message larger than max (${messageBytes.length - 5} vs. ${this.maxReceiveMessageSize})`,\n metadata: null\n });\n return;\n }\n const queueEntry = {\n type: 'COMPRESSED',\n compressedMessage: messageBytes,\n parsedMessage: null\n };\n this.readQueue.push(queueEntry);\n this.decompressAndMaybePush(queueEntry);\n (_a = this.callEventTracker) === null || _a === void 0 ? void 0 : _a.addMessageReceived();\n }\n }\n handleEndEvent() {\n this.readQueue.push({\n type: 'HALF_CLOSE',\n compressedMessage: null,\n parsedMessage: null\n });\n this.receivedHalfClose = true;\n this.maybePushNextMessage();\n }\n start(listener) {\n trace('Request to ' + this.handler.path + ' start called');\n if (this.checkCancelled()) {\n return;\n }\n this.listener = listener;\n listener.onReceiveMetadata(this.metadata);\n }\n sendMetadata(metadata) {\n if (this.checkCancelled()) {\n return;\n }\n if (this.metadataSent) {\n return;\n }\n this.metadataSent = true;\n const custom = metadata ? metadata.toHttp2Headers() : null;\n const headers = Object.assign(Object.assign(Object.assign({}, defaultResponseHeaders), defaultCompressionHeaders), custom);\n this.stream.respond(headers, defaultResponseOptions);\n }\n sendMessage(message, callback) {\n if (this.checkCancelled()) {\n return;\n }\n let response;\n try {\n response = this.serializeMessage(message);\n }\n catch (e) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error serializing response: ${(0, error_1.getErrorMessage)(e)}`,\n metadata: null\n });\n return;\n }\n if (this.maxSendMessageSize !== -1 &&\n response.length - 5 > this.maxSendMessageSize) {\n this.sendStatus({\n code: constants_1.Status.RESOURCE_EXHAUSTED,\n details: `Sent message larger than max (${response.length} vs. ${this.maxSendMessageSize})`,\n metadata: null\n });\n return;\n }\n this.maybeSendMetadata();\n trace('Request to ' + this.handler.path + ' sent data frame of size ' + response.length);\n this.stream.write(response, error => {\n var _a;\n if (error) {\n this.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Error writing message: ${(0, error_1.getErrorMessage)(error)}`,\n metadata: null\n });\n return;\n }\n (_a = this.callEventTracker) === null || _a === void 0 ? void 0 : _a.addMessageSent();\n callback();\n });\n }\n sendStatus(status) {\n var _a, _b;\n if (this.checkCancelled()) {\n return;\n }\n this.notifyOnCancel();\n trace('Request to method ' +\n ((_a = this.handler) === null || _a === void 0 ? void 0 : _a.path) +\n ' ended with status code: ' +\n constants_1.Status[status.code] +\n ' details: ' +\n status.details);\n if (this.stream.headersSent) {\n if (!this.wantTrailers) {\n this.wantTrailers = true;\n this.stream.once('wantTrailers', () => {\n var _a;\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(true);\n this.callEventTracker.onCallEnd(status);\n }\n const trailersToSend = Object.assign({ [GRPC_STATUS_HEADER]: status.code, [GRPC_MESSAGE_HEADER]: encodeURI(status.details) }, (_a = status.metadata) === null || _a === void 0 ? void 0 : _a.toHttp2Headers());\n this.stream.sendTrailers(trailersToSend);\n });\n this.stream.end();\n }\n }\n else {\n if (this.callEventTracker && !this.streamEnded) {\n this.streamEnded = true;\n this.callEventTracker.onStreamEnd(true);\n this.callEventTracker.onCallEnd(status);\n }\n // Trailers-only response\n const trailersToSend = Object.assign(Object.assign({ [GRPC_STATUS_HEADER]: status.code, [GRPC_MESSAGE_HEADER]: encodeURI(status.details) }, defaultResponseHeaders), (_b = status.metadata) === null || _b === void 0 ? void 0 : _b.toHttp2Headers());\n this.stream.respond(trailersToSend, { endStream: true });\n }\n }\n startRead() {\n trace('Request to ' + this.handler.path + ' startRead called');\n if (this.checkCancelled()) {\n return;\n }\n this.isReadPending = true;\n if (this.readQueue.length === 0) {\n if (!this.receivedHalfClose) {\n this.stream.resume();\n }\n }\n else {\n this.maybePushNextMessage();\n }\n }\n getPeer() {\n var _a;\n const socket = (_a = this.stream.session) === null || _a === void 0 ? void 0 : _a.socket;\n if (socket === null || socket === void 0 ? void 0 : socket.remoteAddress) {\n if (socket.remotePort) {\n return `${socket.remoteAddress}:${socket.remotePort}`;\n }\n else {\n return socket.remoteAddress;\n }\n }\n else {\n return 'unknown';\n }\n }\n getDeadline() {\n return this.deadline;\n }\n}\nexports.BaseServerInterceptingCall = BaseServerInterceptingCall;\nfunction getServerInterceptingCall(interceptors, stream, headers, callEventTracker, handler, options) {\n const methodDefinition = {\n path: handler.path,\n requestStream: handler.type === 'clientStream' || handler.type === 'bidi',\n responseStream: handler.type === 'serverStream' || handler.type === 'bidi',\n requestDeserialize: handler.deserialize,\n responseSerialize: handler.serialize\n };\n const baseCall = new BaseServerInterceptingCall(stream, headers, callEventTracker, handler, options);\n return interceptors.reduce((call, interceptor) => {\n return interceptor(methodDefinition, call);\n }, baseCall);\n}\nexports.getServerInterceptingCall = getServerInterceptingCall;\n//# sourceMappingURL=server-interceptors.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nvar __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\nvar __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Server = void 0;\nconst http2 = require(\"http2\");\nconst util = require(\"util\");\nconst constants_1 = require(\"./constants\");\nconst server_call_1 = require(\"./server-call\");\nconst server_credentials_1 = require(\"./server-credentials\");\nconst resolver_1 = require(\"./resolver\");\nconst logging = require(\"./logging\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst channelz_1 = require(\"./channelz\");\nconst server_interceptors_1 = require(\"./server-interceptors\");\nconst UNLIMITED_CONNECTION_AGE_MS = ~(1 << 31);\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst { HTTP2_HEADER_PATH } = http2.constants;\nconst TRACER_NAME = 'server';\nfunction noop() { }\n/**\n * Decorator to wrap a class method with util.deprecate\n * @param message The message to output if the deprecated method is called\n * @returns\n */\nfunction deprecate(message) {\n return function (target, context) {\n return util.deprecate(target, message);\n };\n}\nfunction getUnimplementedStatusResponse(methodName) {\n return {\n code: constants_1.Status.UNIMPLEMENTED,\n details: `The server does not implement the method ${methodName}`,\n };\n}\nfunction getDefaultHandler(handlerType, methodName) {\n const unimplementedStatusResponse = getUnimplementedStatusResponse(methodName);\n switch (handlerType) {\n case 'unary':\n return (call, callback) => {\n callback(unimplementedStatusResponse, null);\n };\n case 'clientStream':\n return (call, callback) => {\n callback(unimplementedStatusResponse, null);\n };\n case 'serverStream':\n return (call) => {\n call.emit('error', unimplementedStatusResponse);\n };\n case 'bidi':\n return (call) => {\n call.emit('error', unimplementedStatusResponse);\n };\n default:\n throw new Error(`Invalid handlerType ${handlerType}`);\n }\n}\nlet Server = (() => {\n var _a;\n let _instanceExtraInitializers = [];\n let _start_decorators;\n return _a = class Server {\n constructor(options) {\n var _b, _c, _d, _e, _f;\n this.boundPorts = (__runInitializers(this, _instanceExtraInitializers), new Map());\n this.http2Servers = new Map();\n this.handlers = new Map();\n this.sessions = new Map();\n /**\n * This field only exists to ensure that the start method throws an error if\n * it is called twice, as it did previously.\n */\n this.started = false;\n this.shutdown = false;\n this.serverAddressString = 'null';\n // Channelz Info\n this.channelzEnabled = true;\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.listenerChildrenTracker = new channelz_1.ChannelzChildrenTracker();\n this.sessionChildrenTracker = new channelz_1.ChannelzChildrenTracker();\n this.options = options !== null && options !== void 0 ? options : {};\n if (this.options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n }\n this.channelzRef = (0, channelz_1.registerChannelzServer)(() => this.getChannelzInfo(), this.channelzEnabled);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Server created');\n }\n this.maxConnectionAgeMs =\n (_b = this.options['grpc.max_connection_age_ms']) !== null && _b !== void 0 ? _b : UNLIMITED_CONNECTION_AGE_MS;\n this.maxConnectionAgeGraceMs =\n (_c = this.options['grpc.max_connection_age_grace_ms']) !== null && _c !== void 0 ? _c : UNLIMITED_CONNECTION_AGE_MS;\n this.keepaliveTimeMs =\n (_d = this.options['grpc.keepalive_time_ms']) !== null && _d !== void 0 ? _d : KEEPALIVE_MAX_TIME_MS;\n this.keepaliveTimeoutMs =\n (_e = this.options['grpc.keepalive_timeout_ms']) !== null && _e !== void 0 ? _e : KEEPALIVE_TIMEOUT_MS;\n this.commonServerOptions = {\n maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER,\n };\n if ('grpc-node.max_session_memory' in this.options) {\n this.commonServerOptions.maxSessionMemory =\n this.options['grpc-node.max_session_memory'];\n }\n else {\n /* By default, set a very large max session memory limit, to effectively\n * disable enforcement of the limit. Some testing indicates that Node's\n * behavior degrades badly when this limit is reached, so we solve that\n * by disabling the check entirely. */\n this.commonServerOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n }\n if ('grpc.max_concurrent_streams' in this.options) {\n this.commonServerOptions.settings = {\n maxConcurrentStreams: this.options['grpc.max_concurrent_streams'],\n };\n }\n this.interceptors = (_f = this.options.interceptors) !== null && _f !== void 0 ? _f : [];\n this.trace('Server constructed');\n }\n getChannelzInfo() {\n return {\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n listenerChildren: this.listenerChildrenTracker.getChildLists(),\n sessionChildren: this.sessionChildrenTracker.getChildLists(),\n };\n }\n getChannelzSessionInfoGetter(session) {\n return () => {\n var _b, _c, _d;\n const sessionInfo = this.sessions.get(session);\n const sessionSocket = session.socket;\n const remoteAddress = sessionSocket.remoteAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.remoteAddress, sessionSocket.remotePort)\n : null;\n const localAddress = sessionSocket.localAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.localAddress, sessionSocket.localPort)\n : null;\n let tlsInfo;\n if (session.encrypted) {\n const tlsSocket = sessionSocket;\n const cipherInfo = tlsSocket.getCipher();\n const certificate = tlsSocket.getCertificate();\n const peerCertificate = tlsSocket.getPeerCertificate();\n tlsInfo = {\n cipherSuiteStandardName: (_b = cipherInfo.standardName) !== null && _b !== void 0 ? _b : null,\n cipherSuiteOtherName: cipherInfo.standardName\n ? null\n : cipherInfo.name,\n localCertificate: certificate && 'raw' in certificate ? certificate.raw : null,\n remoteCertificate: peerCertificate && 'raw' in peerCertificate\n ? peerCertificate.raw\n : null,\n };\n }\n else {\n tlsInfo = null;\n }\n const socketInfo = {\n remoteAddress: remoteAddress,\n localAddress: localAddress,\n security: tlsInfo,\n remoteName: null,\n streamsStarted: sessionInfo.streamTracker.callsStarted,\n streamsSucceeded: sessionInfo.streamTracker.callsSucceeded,\n streamsFailed: sessionInfo.streamTracker.callsFailed,\n messagesSent: sessionInfo.messagesSent,\n messagesReceived: sessionInfo.messagesReceived,\n keepAlivesSent: 0,\n lastLocalStreamCreatedTimestamp: null,\n lastRemoteStreamCreatedTimestamp: sessionInfo.streamTracker.lastCallStartedTimestamp,\n lastMessageSentTimestamp: sessionInfo.lastMessageSentTimestamp,\n lastMessageReceivedTimestamp: sessionInfo.lastMessageReceivedTimestamp,\n localFlowControlWindow: (_c = session.state.localWindowSize) !== null && _c !== void 0 ? _c : null,\n remoteFlowControlWindow: (_d = session.state.remoteWindowSize) !== null && _d !== void 0 ? _d : null,\n };\n return socketInfo;\n };\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' + this.channelzRef.id + ') ' + text);\n }\n addProtoService() {\n throw new Error('Not implemented. Use addService() instead');\n }\n addService(service, implementation) {\n if (service === null ||\n typeof service !== 'object' ||\n implementation === null ||\n typeof implementation !== 'object') {\n throw new Error('addService() requires two objects as arguments');\n }\n const serviceKeys = Object.keys(service);\n if (serviceKeys.length === 0) {\n throw new Error('Cannot add an empty service to a server');\n }\n serviceKeys.forEach(name => {\n const attrs = service[name];\n let methodType;\n if (attrs.requestStream) {\n if (attrs.responseStream) {\n methodType = 'bidi';\n }\n else {\n methodType = 'clientStream';\n }\n }\n else {\n if (attrs.responseStream) {\n methodType = 'serverStream';\n }\n else {\n methodType = 'unary';\n }\n }\n let implFn = implementation[name];\n let impl;\n if (implFn === undefined && typeof attrs.originalName === 'string') {\n implFn = implementation[attrs.originalName];\n }\n if (implFn !== undefined) {\n impl = implFn.bind(implementation);\n }\n else {\n impl = getDefaultHandler(methodType, name);\n }\n const success = this.register(attrs.path, impl, attrs.responseSerialize, attrs.requestDeserialize, methodType);\n if (success === false) {\n throw new Error(`Method handler for ${attrs.path} already provided.`);\n }\n });\n }\n removeService(service) {\n if (service === null || typeof service !== 'object') {\n throw new Error('removeService() requires object as argument');\n }\n const serviceKeys = Object.keys(service);\n serviceKeys.forEach(name => {\n const attrs = service[name];\n this.unregister(attrs.path);\n });\n }\n bind(port, creds) {\n throw new Error('Not implemented. Use bindAsync() instead');\n }\n registerListenerToChannelz(boundAddress) {\n return (0, channelz_1.registerChannelzSocket)((0, subchannel_address_1.subchannelAddressToString)(boundAddress), () => {\n return {\n localAddress: boundAddress,\n remoteAddress: null,\n security: null,\n remoteName: null,\n streamsStarted: 0,\n streamsSucceeded: 0,\n streamsFailed: 0,\n messagesSent: 0,\n messagesReceived: 0,\n keepAlivesSent: 0,\n lastLocalStreamCreatedTimestamp: null,\n lastRemoteStreamCreatedTimestamp: null,\n lastMessageSentTimestamp: null,\n lastMessageReceivedTimestamp: null,\n localFlowControlWindow: null,\n remoteFlowControlWindow: null,\n };\n }, this.channelzEnabled);\n }\n createHttp2Server(credentials) {\n let http2Server;\n if (credentials._isSecure()) {\n const secureServerOptions = Object.assign(this.commonServerOptions, credentials._getSettings());\n secureServerOptions.enableTrace =\n this.options['grpc-node.tls_enable_trace'] === 1;\n http2Server = http2.createSecureServer(secureServerOptions);\n http2Server.on('secureConnection', (socket) => {\n /* These errors need to be handled by the user of Http2SecureServer,\n * according to https://github.com/nodejs/node/issues/35824 */\n socket.on('error', (e) => {\n this.trace('An incoming TLS connection closed with error: ' + e.message);\n });\n });\n }\n else {\n http2Server = http2.createServer(this.commonServerOptions);\n }\n http2Server.setTimeout(0, noop);\n this._setupHandlers(http2Server);\n return http2Server;\n }\n bindOneAddress(address, boundPortObject) {\n this.trace('Attempting to bind ' + (0, subchannel_address_1.subchannelAddressToString)(address));\n const http2Server = this.createHttp2Server(boundPortObject.credentials);\n return new Promise((resolve, reject) => {\n const onError = (err) => {\n this.trace('Failed to bind ' +\n (0, subchannel_address_1.subchannelAddressToString)(address) +\n ' with error ' +\n err.message);\n resolve({\n port: 'port' in address ? address.port : 1,\n error: err.message\n });\n };\n http2Server.once('error', onError);\n http2Server.listen(address, () => {\n const boundAddress = http2Server.address();\n let boundSubchannelAddress;\n if (typeof boundAddress === 'string') {\n boundSubchannelAddress = {\n path: boundAddress,\n };\n }\n else {\n boundSubchannelAddress = {\n host: boundAddress.address,\n port: boundAddress.port,\n };\n }\n const channelzRef = this.registerListenerToChannelz(boundSubchannelAddress);\n if (this.channelzEnabled) {\n this.listenerChildrenTracker.refChild(channelzRef);\n }\n this.http2Servers.set(http2Server, {\n channelzRef: channelzRef,\n sessions: new Set()\n });\n boundPortObject.listeningServers.add(http2Server);\n this.trace('Successfully bound ' +\n (0, subchannel_address_1.subchannelAddressToString)(boundSubchannelAddress));\n resolve({\n port: 'port' in boundSubchannelAddress\n ? boundSubchannelAddress.port\n : 1\n });\n http2Server.removeListener('error', onError);\n });\n });\n }\n async bindManyPorts(addressList, boundPortObject) {\n if (addressList.length === 0) {\n return {\n count: 0,\n port: 0,\n errors: []\n };\n }\n if ((0, subchannel_address_1.isTcpSubchannelAddress)(addressList[0]) && addressList[0].port === 0) {\n /* If binding to port 0, first try to bind the first address, then bind\n * the rest of the address list to the specific port that it binds. */\n const firstAddressResult = await this.bindOneAddress(addressList[0], boundPortObject);\n if (firstAddressResult.error) {\n /* If the first address fails to bind, try the same operation starting\n * from the second item in the list. */\n const restAddressResult = await this.bindManyPorts(addressList.slice(1), boundPortObject);\n return Object.assign(Object.assign({}, restAddressResult), { errors: [firstAddressResult.error, ...restAddressResult.errors] });\n }\n else {\n const restAddresses = addressList.slice(1).map(address => (0, subchannel_address_1.isTcpSubchannelAddress)(address) ? { host: address.host, port: firstAddressResult.port } : address);\n const restAddressResult = await Promise.all(restAddresses.map(address => this.bindOneAddress(address, boundPortObject)));\n const allResults = [firstAddressResult, ...restAddressResult];\n return {\n count: allResults.filter(result => result.error === undefined).length,\n port: firstAddressResult.port,\n errors: allResults.filter(result => result.error).map(result => result.error)\n };\n }\n }\n else {\n const allResults = await Promise.all(addressList.map(address => this.bindOneAddress(address, boundPortObject)));\n return {\n count: allResults.filter(result => result.error === undefined).length,\n port: allResults[0].port,\n errors: allResults.filter(result => result.error).map(result => result.error)\n };\n }\n }\n async bindAddressList(addressList, boundPortObject) {\n let bindResult;\n try {\n bindResult = await this.bindManyPorts(addressList, boundPortObject);\n }\n catch (error) {\n throw error;\n }\n if (bindResult.count > 0) {\n if (bindResult.count < addressList.length) {\n logging.log(constants_1.LogVerbosity.INFO, `WARNING Only ${bindResult.count} addresses added out of total ${addressList.length} resolved`);\n }\n return bindResult.port;\n }\n else {\n const errorString = `No address added out of total ${addressList.length} resolved`;\n logging.log(constants_1.LogVerbosity.ERROR, errorString);\n throw new Error(`${errorString} errors: [${bindResult.errors.join(',')}]`);\n }\n }\n resolvePort(port) {\n return new Promise((resolve, reject) => {\n const resolverListener = {\n onSuccessfulResolution: (endpointList, serviceConfig, serviceConfigError) => {\n // We only want one resolution result. Discard all future results\n resolverListener.onSuccessfulResolution = () => { };\n const addressList = [].concat(...endpointList.map(endpoint => endpoint.addresses));\n if (addressList.length === 0) {\n reject(new Error(`No addresses resolved for port ${port}`));\n return;\n }\n resolve(addressList);\n },\n onError: error => {\n reject(new Error(error.details));\n },\n };\n const resolver = (0, resolver_1.createResolver)(port, resolverListener, this.options);\n resolver.updateResolution();\n });\n }\n async bindPort(port, boundPortObject) {\n const addressList = await this.resolvePort(port);\n if (boundPortObject.cancelled) {\n this.completeUnbind(boundPortObject);\n throw new Error('bindAsync operation cancelled by unbind call');\n }\n const portNumber = await this.bindAddressList(addressList, boundPortObject);\n if (boundPortObject.cancelled) {\n this.completeUnbind(boundPortObject);\n throw new Error('bindAsync operation cancelled by unbind call');\n }\n return portNumber;\n }\n normalizePort(port) {\n const initialPortUri = (0, uri_parser_1.parseUri)(port);\n if (initialPortUri === null) {\n throw new Error(`Could not parse port \"${port}\"`);\n }\n const portUri = (0, resolver_1.mapUriDefaultScheme)(initialPortUri);\n if (portUri === null) {\n throw new Error(`Could not get a default scheme for port \"${port}\"`);\n }\n return portUri;\n }\n bindAsync(port, creds, callback) {\n if (this.shutdown) {\n throw new Error('bindAsync called after shutdown');\n }\n if (typeof port !== 'string') {\n throw new TypeError('port must be a string');\n }\n if (creds === null || !(creds instanceof server_credentials_1.ServerCredentials)) {\n throw new TypeError('creds must be a ServerCredentials object');\n }\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n this.trace('bindAsync port=' + port);\n const portUri = this.normalizePort(port);\n const deferredCallback = (error, port) => {\n process.nextTick(() => callback(error, port));\n };\n /* First, if this port is already bound or that bind operation is in\n * progress, use that result. */\n let boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (boundPortObject) {\n if (!creds._equals(boundPortObject.credentials)) {\n deferredCallback(new Error(`${port} already bound with incompatible credentials`), 0);\n return;\n }\n /* If that operation has previously been cancelled by an unbind call,\n * uncancel it. */\n boundPortObject.cancelled = false;\n if (boundPortObject.completionPromise) {\n boundPortObject.completionPromise.then(portNum => callback(null, portNum), error => callback(error, 0));\n }\n else {\n deferredCallback(null, boundPortObject.portNumber);\n }\n return;\n }\n boundPortObject = {\n mapKey: (0, uri_parser_1.uriToString)(portUri),\n originalUri: portUri,\n completionPromise: null,\n cancelled: false,\n portNumber: 0,\n credentials: creds,\n listeningServers: new Set()\n };\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n const completionPromise = this.bindPort(portUri, boundPortObject);\n boundPortObject.completionPromise = completionPromise;\n /* If the port number is 0, defer populating the map entry until after the\n * bind operation completes and we have a specific port number. Otherwise,\n * populate it immediately. */\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n completionPromise.then(portNum => {\n const finalUri = {\n scheme: portUri.scheme,\n authority: portUri.authority,\n path: (0, uri_parser_1.combineHostPort)({ host: splitPort.host, port: portNum })\n };\n boundPortObject.mapKey = (0, uri_parser_1.uriToString)(finalUri);\n boundPortObject.completionPromise = null;\n boundPortObject.portNumber = portNum;\n this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n callback(null, portNum);\n }, error => {\n callback(error, 0);\n });\n }\n else {\n this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n completionPromise.then(portNum => {\n boundPortObject.completionPromise = null;\n boundPortObject.portNumber = portNum;\n callback(null, portNum);\n }, error => {\n callback(error, 0);\n });\n }\n }\n closeServer(server, callback) {\n this.trace('Closing server with address ' + JSON.stringify(server.address()));\n const serverInfo = this.http2Servers.get(server);\n server.close(() => {\n if (this.channelzEnabled && serverInfo) {\n this.listenerChildrenTracker.unrefChild(serverInfo.channelzRef);\n (0, channelz_1.unregisterChannelzRef)(serverInfo.channelzRef);\n }\n this.http2Servers.delete(server);\n callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n closeSession(session, callback) {\n var _b;\n this.trace('Closing session initiated by ' + ((_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress));\n const sessionInfo = this.sessions.get(session);\n const closeCallback = () => {\n if (this.channelzEnabled && sessionInfo) {\n this.sessionChildrenTracker.unrefChild(sessionInfo.ref);\n (0, channelz_1.unregisterChannelzRef)(sessionInfo.ref);\n }\n this.sessions.delete(session);\n callback === null || callback === void 0 ? void 0 : callback();\n };\n if (session.closed) {\n process.nextTick(closeCallback);\n }\n else {\n session.close(closeCallback);\n }\n }\n completeUnbind(boundPortObject) {\n for (const server of boundPortObject.listeningServers) {\n const serverInfo = this.http2Servers.get(server);\n this.closeServer(server, () => {\n boundPortObject.listeningServers.delete(server);\n });\n if (serverInfo) {\n for (const session of serverInfo.sessions) {\n this.closeSession(session);\n }\n }\n }\n this.boundPorts.delete(boundPortObject.mapKey);\n }\n /**\n * Unbind a previously bound port, or cancel an in-progress bindAsync\n * operation. If port 0 was bound, only the actual bound port can be\n * unbound. For example, if bindAsync was called with \"localhost:0\" and the\n * bound port result was 54321, it can be unbound as \"localhost:54321\".\n * @param port\n */\n unbind(port) {\n this.trace('unbind port=' + port);\n const portUri = this.normalizePort(port);\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n throw new Error('Cannot unbind port 0');\n }\n const boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (boundPortObject) {\n this.trace('unbinding ' + boundPortObject.mapKey + ' originally bound as ' + (0, uri_parser_1.uriToString)(boundPortObject.originalUri));\n /* If the bind operation is pending, the cancelled flag will trigger\n * the unbind operation later. */\n if (boundPortObject.completionPromise) {\n boundPortObject.cancelled = true;\n }\n else {\n this.completeUnbind(boundPortObject);\n }\n }\n }\n /**\n * Gracefully close all connections associated with a previously bound port.\n * After the grace time, forcefully close all remaining open connections.\n *\n * If port 0 was bound, only the actual bound port can be\n * drained. For example, if bindAsync was called with \"localhost:0\" and the\n * bound port result was 54321, it can be drained as \"localhost:54321\".\n * @param port\n * @param graceTimeMs\n * @returns\n */\n drain(port, graceTimeMs) {\n var _b, _c;\n this.trace('drain port=' + port + ' graceTimeMs=' + graceTimeMs);\n const portUri = this.normalizePort(port);\n const splitPort = (0, uri_parser_1.splitHostPort)(portUri.path);\n if ((splitPort === null || splitPort === void 0 ? void 0 : splitPort.port) === 0) {\n throw new Error('Cannot drain port 0');\n }\n const boundPortObject = this.boundPorts.get((0, uri_parser_1.uriToString)(portUri));\n if (!boundPortObject) {\n return;\n }\n const allSessions = new Set();\n for (const http2Server of boundPortObject.listeningServers) {\n const serverEntry = this.http2Servers.get(http2Server);\n if (!serverEntry) {\n continue;\n }\n for (const session of serverEntry.sessions) {\n allSessions.add(session);\n this.closeSession(session, () => {\n allSessions.delete(session);\n });\n }\n }\n /* After the grace time ends, send another goaway to all remaining sessions\n * with the CANCEL code. */\n (_c = (_b = setTimeout(() => {\n for (const session of allSessions) {\n session.destroy(http2.constants.NGHTTP2_CANCEL);\n }\n }, graceTimeMs)).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n forceShutdown() {\n for (const boundPortObject of this.boundPorts.values()) {\n boundPortObject.cancelled = true;\n }\n this.boundPorts.clear();\n // Close the server if it is still running.\n for (const server of this.http2Servers.keys()) {\n this.closeServer(server);\n }\n // Always destroy any available sessions. It's possible that one or more\n // tryShutdown() calls are in progress. Don't wait on them to finish.\n this.sessions.forEach((channelzInfo, session) => {\n this.closeSession(session);\n // Cast NGHTTP2_CANCEL to any because TypeScript doesn't seem to\n // recognize destroy(code) as a valid signature.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n session.destroy(http2.constants.NGHTTP2_CANCEL);\n });\n this.sessions.clear();\n if (this.channelzEnabled) {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n this.shutdown = true;\n }\n register(name, handler, serialize, deserialize, type) {\n if (this.handlers.has(name)) {\n return false;\n }\n this.handlers.set(name, {\n func: handler,\n serialize,\n deserialize,\n type,\n path: name,\n });\n return true;\n }\n unregister(name) {\n return this.handlers.delete(name);\n }\n /**\n * @deprecated No longer needed as of version 1.10.x\n */\n start() {\n if (this.http2Servers.size === 0 ||\n [...this.http2Servers.keys()].every(server => !server.listening)) {\n throw new Error('server must be bound in order to start');\n }\n if (this.started === true) {\n throw new Error('server is already started');\n }\n this.started = true;\n }\n tryShutdown(callback) {\n var _b;\n const wrappedCallback = (error) => {\n if (this.channelzEnabled) {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n callback(error);\n };\n let pendingChecks = 0;\n function maybeCallback() {\n pendingChecks--;\n if (pendingChecks === 0) {\n wrappedCallback();\n }\n }\n this.shutdown = true;\n for (const server of this.http2Servers.keys()) {\n pendingChecks++;\n const serverString = this.http2Servers.get(server).channelzRef.name;\n this.trace('Waiting for server ' + serverString + ' to close');\n this.closeServer(server, () => {\n this.trace('Server ' + serverString + ' finished closing');\n maybeCallback();\n });\n }\n for (const session of this.sessions.keys()) {\n pendingChecks++;\n const sessionString = (_b = session.socket) === null || _b === void 0 ? void 0 : _b.remoteAddress;\n this.trace('Waiting for session ' + sessionString + ' to close');\n this.closeSession(session, () => {\n this.trace('Session ' + sessionString + ' finished closing');\n maybeCallback();\n });\n }\n if (pendingChecks === 0) {\n wrappedCallback();\n }\n }\n addHttp2Port() {\n throw new Error('Not yet implemented');\n }\n /**\n * Get the channelz reference object for this server. The returned value is\n * garbage if channelz is disabled for this server.\n * @returns\n */\n getChannelzRef() {\n return this.channelzRef;\n }\n _verifyContentType(stream, headers) {\n const contentType = headers[http2.constants.HTTP2_HEADER_CONTENT_TYPE];\n if (typeof contentType !== 'string' ||\n !contentType.startsWith('application/grpc')) {\n stream.respond({\n [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,\n }, { endStream: true });\n return false;\n }\n return true;\n }\n _retrieveHandler(path) {\n this.trace('Received call to method ' +\n path +\n ' at address ' +\n this.serverAddressString);\n const handler = this.handlers.get(path);\n if (handler === undefined) {\n this.trace('No handler registered for method ' +\n path +\n '. Sending UNIMPLEMENTED status.');\n return null;\n }\n return handler;\n }\n _respondWithError(err, stream, channelzSessionInfo = null) {\n var _b, _c;\n const trailersToSend = Object.assign({ 'grpc-status': (_b = err.code) !== null && _b !== void 0 ? _b : constants_1.Status.INTERNAL, 'grpc-message': err.details, [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK, [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto' }, (_c = err.metadata) === null || _c === void 0 ? void 0 : _c.toHttp2Headers());\n stream.respond(trailersToSend, { endStream: true });\n if (this.channelzEnabled) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n }\n }\n _channelzHandler(stream, headers) {\n const channelzSessionInfo = this.sessions.get(stream.session);\n this.callTracker.addCallStarted();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallStarted();\n if (!this._verifyContentType(stream, headers)) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n return;\n }\n const path = headers[HTTP2_HEADER_PATH];\n const handler = this._retrieveHandler(path);\n if (!handler) {\n this._respondWithError(getUnimplementedStatusResponse(path), stream, channelzSessionInfo);\n return;\n }\n let callEventTracker = {\n addMessageSent: () => {\n if (channelzSessionInfo) {\n channelzSessionInfo.messagesSent += 1;\n channelzSessionInfo.lastMessageSentTimestamp = new Date();\n }\n },\n addMessageReceived: () => {\n if (channelzSessionInfo) {\n channelzSessionInfo.messagesReceived += 1;\n channelzSessionInfo.lastMessageReceivedTimestamp = new Date();\n }\n },\n onCallEnd: status => {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n },\n onStreamEnd: success => {\n if (channelzSessionInfo) {\n if (success) {\n channelzSessionInfo.streamTracker.addCallSucceeded();\n }\n else {\n channelzSessionInfo.streamTracker.addCallFailed();\n }\n }\n }\n };\n const call = (0, server_interceptors_1.getServerInterceptingCall)(this.interceptors, stream, headers, callEventTracker, handler, this.options);\n if (!this._runHandlerForCall(call, handler)) {\n this.callTracker.addCallFailed();\n channelzSessionInfo === null || channelzSessionInfo === void 0 ? void 0 : channelzSessionInfo.streamTracker.addCallFailed();\n call.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Unknown handler type: ${handler.type}`,\n });\n }\n }\n _streamHandler(stream, headers) {\n if (this._verifyContentType(stream, headers) !== true) {\n return;\n }\n const path = headers[HTTP2_HEADER_PATH];\n const handler = this._retrieveHandler(path);\n if (!handler) {\n this._respondWithError(getUnimplementedStatusResponse(path), stream, null);\n return;\n }\n const call = (0, server_interceptors_1.getServerInterceptingCall)(this.interceptors, stream, headers, null, handler, this.options);\n if (!this._runHandlerForCall(call, handler)) {\n call.sendStatus({\n code: constants_1.Status.INTERNAL,\n details: `Unknown handler type: ${handler.type}`,\n });\n }\n }\n _runHandlerForCall(call, handler) {\n const { type } = handler;\n if (type === 'unary') {\n handleUnary(call, handler);\n }\n else if (type === 'clientStream') {\n handleClientStreaming(call, handler);\n }\n else if (type === 'serverStream') {\n handleServerStreaming(call, handler);\n }\n else if (type === 'bidi') {\n handleBidiStreaming(call, handler);\n }\n else {\n return false;\n }\n return true;\n }\n _setupHandlers(http2Server) {\n if (http2Server === null) {\n return;\n }\n const serverAddress = http2Server.address();\n let serverAddressString = 'null';\n if (serverAddress) {\n if (typeof serverAddress === 'string') {\n serverAddressString = serverAddress;\n }\n else {\n serverAddressString = serverAddress.address + ':' + serverAddress.port;\n }\n }\n this.serverAddressString = serverAddressString;\n const handler = this.channelzEnabled\n ? this._channelzHandler\n : this._streamHandler;\n http2Server.on('stream', handler.bind(this));\n http2Server.on('session', session => {\n var _b, _c, _d, _e, _f, _g;\n const channelzRef = (0, channelz_1.registerChannelzSocket)((_b = session.socket.remoteAddress) !== null && _b !== void 0 ? _b : 'unknown', this.getChannelzSessionInfoGetter(session), this.channelzEnabled);\n const channelzSessionInfo = {\n ref: channelzRef,\n streamTracker: new channelz_1.ChannelzCallTracker(),\n messagesSent: 0,\n messagesReceived: 0,\n lastMessageSentTimestamp: null,\n lastMessageReceivedTimestamp: null,\n };\n (_c = this.http2Servers.get(http2Server)) === null || _c === void 0 ? void 0 : _c.sessions.add(session);\n this.sessions.set(session, channelzSessionInfo);\n const clientAddress = session.socket.remoteAddress;\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connection established by client ' + clientAddress);\n this.sessionChildrenTracker.refChild(channelzRef);\n }\n let connectionAgeTimer = null;\n let connectionAgeGraceTimer = null;\n let sessionClosedByServer = false;\n if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n // Apply a random jitter within a +/-10% range\n const jitterMagnitude = this.maxConnectionAgeMs / 10;\n const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n connectionAgeTimer = (_e = (_d = setTimeout(() => {\n var _b, _c;\n sessionClosedByServer = true;\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by max connection age from ' + clientAddress);\n }\n try {\n session.goaway(http2.constants.NGHTTP2_NO_ERROR, ~(1 << 31), Buffer.from('max_age'));\n }\n catch (e) {\n // The goaway can't be sent because the session is already closed\n session.destroy();\n return;\n }\n session.close();\n /* Allow a grace period after sending the GOAWAY before forcibly\n * closing the connection. */\n if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n connectionAgeGraceTimer = (_c = (_b = setTimeout(() => {\n session.destroy();\n }, this.maxConnectionAgeGraceMs)).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n }\n }, this.maxConnectionAgeMs + jitter)).unref) === null || _e === void 0 ? void 0 : _e.call(_d);\n }\n const keeapliveTimeTimer = (_g = (_f = setInterval(() => {\n var _b, _c;\n const timeoutTImer = (_c = (_b = setTimeout(() => {\n sessionClosedByServer = true;\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by keepalive timeout from ' + clientAddress);\n }\n session.close();\n }, this.keepaliveTimeoutMs)).unref) === null || _c === void 0 ? void 0 : _c.call(_b);\n try {\n session.ping((err, duration, payload) => {\n clearTimeout(timeoutTImer);\n });\n }\n catch (e) {\n // The ping can't be sent because the session is already closed\n session.destroy();\n }\n }, this.keepaliveTimeMs)).unref) === null || _g === void 0 ? void 0 : _g.call(_f);\n session.on('close', () => {\n var _b;\n if (this.channelzEnabled) {\n if (!sessionClosedByServer) {\n this.channelzTrace.addTrace('CT_INFO', 'Connection dropped by client ' + clientAddress);\n }\n this.sessionChildrenTracker.unrefChild(channelzRef);\n (0, channelz_1.unregisterChannelzRef)(channelzRef);\n }\n if (connectionAgeTimer) {\n clearTimeout(connectionAgeTimer);\n }\n if (connectionAgeGraceTimer) {\n clearTimeout(connectionAgeGraceTimer);\n }\n if (keeapliveTimeTimer) {\n clearTimeout(keeapliveTimeTimer);\n }\n (_b = this.http2Servers.get(http2Server)) === null || _b === void 0 ? void 0 : _b.sessions.delete(session);\n this.sessions.delete(session);\n });\n });\n }\n },\n (() => {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(null) : void 0;\n _start_decorators = [deprecate('Calling start() is no longer necessary. It can be safely omitted.')];\n __esDecorate(_a, null, _start_decorators, { kind: \"method\", name: \"start\", static: false, private: false, access: { has: obj => \"start\" in obj, get: obj => obj.start }, metadata: _metadata }, null, _instanceExtraInitializers);\n if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n })(),\n _a;\n})();\nexports.Server = Server;\nasync function handleUnary(call, handler) {\n let stream;\n function respond(err, value, trailer, flags) {\n if (err) {\n call.sendStatus((0, server_call_1.serverErrorToStatus)(err, trailer));\n return;\n }\n call.sendMessage(value, () => {\n call.sendStatus({\n code: constants_1.Status.OK,\n details: 'OK',\n metadata: trailer !== null && trailer !== void 0 ? trailer : null\n });\n });\n }\n let requestMetadata;\n let requestMessage = null;\n call.start({\n onReceiveMetadata(metadata) {\n requestMetadata = metadata;\n call.startRead();\n },\n onReceiveMessage(message) {\n if (requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received a second request message for server streaming method ${handler.path}`,\n metadata: null\n });\n return;\n }\n requestMessage = message;\n call.startRead();\n },\n onReceiveHalfClose() {\n if (!requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received no request message for server streaming method ${handler.path}`,\n metadata: null\n });\n return;\n }\n stream = new server_call_1.ServerWritableStreamImpl(handler.path, call, requestMetadata, requestMessage);\n try {\n handler.func(stream, respond);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null\n });\n }\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n }\n },\n });\n}\nfunction handleClientStreaming(call, handler) {\n let stream;\n function respond(err, value, trailer, flags) {\n if (err) {\n call.sendStatus((0, server_call_1.serverErrorToStatus)(err, trailer));\n return;\n }\n call.sendMessage(value, () => {\n call.sendStatus({\n code: constants_1.Status.OK,\n details: 'OK',\n metadata: trailer !== null && trailer !== void 0 ? trailer : null\n });\n });\n }\n call.start({\n onReceiveMetadata(metadata) {\n stream = new server_call_1.ServerDuplexStreamImpl(handler.path, call, metadata);\n try {\n handler.func(stream, respond);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null\n });\n }\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveHalfClose() {\n stream.push(null);\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\nfunction handleServerStreaming(call, handler) {\n let stream;\n let requestMetadata;\n let requestMessage = null;\n call.start({\n onReceiveMetadata(metadata) {\n requestMetadata = metadata;\n call.startRead();\n },\n onReceiveMessage(message) {\n if (requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received a second request message for server streaming method ${handler.path}`,\n metadata: null\n });\n return;\n }\n requestMessage = message;\n call.startRead();\n },\n onReceiveHalfClose() {\n if (!requestMessage) {\n call.sendStatus({\n code: constants_1.Status.UNIMPLEMENTED,\n details: `Received no request message for server streaming method ${handler.path}`,\n metadata: null\n });\n return;\n }\n stream = new server_call_1.ServerWritableStreamImpl(handler.path, call, requestMetadata, requestMessage);\n try {\n handler.func(stream);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null\n });\n }\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\nfunction handleBidiStreaming(call, handler) {\n let stream;\n call.start({\n onReceiveMetadata(metadata) {\n stream = new server_call_1.ServerDuplexStreamImpl(handler.path, call, metadata);\n try {\n handler.func(stream);\n }\n catch (err) {\n call.sendStatus({\n code: constants_1.Status.UNKNOWN,\n details: `Server method handler threw error ${err.message}`,\n metadata: null\n });\n }\n },\n onReceiveMessage(message) {\n stream.push(message);\n },\n onReceiveHalfClose() {\n stream.push(null);\n },\n onCancel() {\n if (stream) {\n stream.cancelled = true;\n stream.emit('cancelled', 'cancelled');\n stream.destroy();\n }\n },\n });\n}\n//# sourceMappingURL=server.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractAndSelectServiceConfig = exports.validateServiceConfig = exports.validateRetryThrottling = void 0;\n/* This file implements gRFC A2 and the service config spec:\n * https://github.com/grpc/proposal/blob/master/A2-service-configs-in-dns.md\n * https://github.com/grpc/grpc/blob/master/doc/service_config.md. Each\n * function here takes an object with unknown structure and returns its\n * specific object type if the input has the right structure, and throws an\n * error otherwise. */\n/* The any type is purposely used here. All functions validate their input at\n * runtime */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst os = require(\"os\");\nconst constants_1 = require(\"./constants\");\n/**\n * Recognizes a number with up to 9 digits after the decimal point, followed by\n * an \"s\", representing a number of seconds.\n */\nconst DURATION_REGEX = /^\\d+(\\.\\d{1,9})?s$/;\n/**\n * Client language name used for determining whether this client matches a\n * `ServiceConfigCanaryConfig`'s `clientLanguage` list.\n */\nconst CLIENT_LANGUAGE_STRING = 'node';\nfunction validateName(obj) {\n // In this context, and unset field and '' are considered the same\n if ('service' in obj && obj.service !== '') {\n if (typeof obj.service !== 'string') {\n throw new Error(`Invalid method config name: invalid service: expected type string, got ${typeof obj.service}`);\n }\n if ('method' in obj && obj.method !== '') {\n if (typeof obj.method !== 'string') {\n throw new Error(`Invalid method config name: invalid method: expected type string, got ${typeof obj.service}`);\n }\n return {\n service: obj.service,\n method: obj.method,\n };\n }\n else {\n return {\n service: obj.service,\n };\n }\n }\n else {\n if ('method' in obj && obj.method !== undefined) {\n throw new Error(`Invalid method config name: method set with empty or unset service`);\n }\n return {};\n }\n}\nfunction validateRetryPolicy(obj) {\n if (!('maxAttempts' in obj) ||\n !Number.isInteger(obj.maxAttempts) ||\n obj.maxAttempts < 2) {\n throw new Error('Invalid method config retry policy: maxAttempts must be an integer at least 2');\n }\n if (!('initialBackoff' in obj) ||\n typeof obj.initialBackoff !== 'string' ||\n !DURATION_REGEX.test(obj.initialBackoff)) {\n throw new Error('Invalid method config retry policy: initialBackoff must be a string consisting of a positive integer followed by s');\n }\n if (!('maxBackoff' in obj) ||\n typeof obj.maxBackoff !== 'string' ||\n !DURATION_REGEX.test(obj.maxBackoff)) {\n throw new Error('Invalid method config retry policy: maxBackoff must be a string consisting of a positive integer followed by s');\n }\n if (!('backoffMultiplier' in obj) ||\n typeof obj.backoffMultiplier !== 'number' ||\n obj.backoffMultiplier <= 0) {\n throw new Error('Invalid method config retry policy: backoffMultiplier must be a number greater than 0');\n }\n if (!('retryableStatusCodes' in obj && Array.isArray(obj.retryableStatusCodes))) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes is required');\n }\n if (obj.retryableStatusCodes.length === 0) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes must be non-empty');\n }\n for (const value of obj.retryableStatusCodes) {\n if (typeof value === 'number') {\n if (!Object.values(constants_1.Status).includes(value)) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value not in status code range');\n }\n }\n else if (typeof value === 'string') {\n if (!Object.values(constants_1.Status).includes(value.toUpperCase())) {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value not a status code name');\n }\n }\n else {\n throw new Error('Invalid method config retry policy: retryableStatusCodes value must be a string or number');\n }\n }\n return {\n maxAttempts: obj.maxAttempts,\n initialBackoff: obj.initialBackoff,\n maxBackoff: obj.maxBackoff,\n backoffMultiplier: obj.backoffMultiplier,\n retryableStatusCodes: obj.retryableStatusCodes,\n };\n}\nfunction validateHedgingPolicy(obj) {\n if (!('maxAttempts' in obj) ||\n !Number.isInteger(obj.maxAttempts) ||\n obj.maxAttempts < 2) {\n throw new Error('Invalid method config hedging policy: maxAttempts must be an integer at least 2');\n }\n if ('hedgingDelay' in obj &&\n (typeof obj.hedgingDelay !== 'string' ||\n !DURATION_REGEX.test(obj.hedgingDelay))) {\n throw new Error('Invalid method config hedging policy: hedgingDelay must be a string consisting of a positive integer followed by s');\n }\n if ('nonFatalStatusCodes' in obj && Array.isArray(obj.nonFatalStatusCodes)) {\n for (const value of obj.nonFatalStatusCodes) {\n if (typeof value === 'number') {\n if (!Object.values(constants_1.Status).includes(value)) {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value not in status code range');\n }\n }\n else if (typeof value === 'string') {\n if (!Object.values(constants_1.Status).includes(value.toUpperCase())) {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value not a status code name');\n }\n }\n else {\n throw new Error('Invlid method config hedging policy: nonFatalStatusCodes value must be a string or number');\n }\n }\n }\n const result = {\n maxAttempts: obj.maxAttempts,\n };\n if (obj.hedgingDelay) {\n result.hedgingDelay = obj.hedgingDelay;\n }\n if (obj.nonFatalStatusCodes) {\n result.nonFatalStatusCodes = obj.nonFatalStatusCodes;\n }\n return result;\n}\nfunction validateMethodConfig(obj) {\n var _a;\n const result = {\n name: [],\n };\n if (!('name' in obj) || !Array.isArray(obj.name)) {\n throw new Error('Invalid method config: invalid name array');\n }\n for (const name of obj.name) {\n result.name.push(validateName(name));\n }\n if ('waitForReady' in obj) {\n if (typeof obj.waitForReady !== 'boolean') {\n throw new Error('Invalid method config: invalid waitForReady');\n }\n result.waitForReady = obj.waitForReady;\n }\n if ('timeout' in obj) {\n if (typeof obj.timeout === 'object') {\n if (!('seconds' in obj.timeout) ||\n !(typeof obj.timeout.seconds === 'number')) {\n throw new Error('Invalid method config: invalid timeout.seconds');\n }\n if (!('nanos' in obj.timeout) ||\n !(typeof obj.timeout.nanos === 'number')) {\n throw new Error('Invalid method config: invalid timeout.nanos');\n }\n result.timeout = obj.timeout;\n }\n else if (typeof obj.timeout === 'string' &&\n DURATION_REGEX.test(obj.timeout)) {\n const timeoutParts = obj.timeout\n .substring(0, obj.timeout.length - 1)\n .split('.');\n result.timeout = {\n seconds: timeoutParts[0] | 0,\n nanos: ((_a = timeoutParts[1]) !== null && _a !== void 0 ? _a : 0) | 0,\n };\n }\n else {\n throw new Error('Invalid method config: invalid timeout');\n }\n }\n if ('maxRequestBytes' in obj) {\n if (typeof obj.maxRequestBytes !== 'number') {\n throw new Error('Invalid method config: invalid maxRequestBytes');\n }\n result.maxRequestBytes = obj.maxRequestBytes;\n }\n if ('maxResponseBytes' in obj) {\n if (typeof obj.maxResponseBytes !== 'number') {\n throw new Error('Invalid method config: invalid maxRequestBytes');\n }\n result.maxResponseBytes = obj.maxResponseBytes;\n }\n if ('retryPolicy' in obj) {\n if ('hedgingPolicy' in obj) {\n throw new Error('Invalid method config: retryPolicy and hedgingPolicy cannot both be specified');\n }\n else {\n result.retryPolicy = validateRetryPolicy(obj.retryPolicy);\n }\n }\n else if ('hedgingPolicy' in obj) {\n result.hedgingPolicy = validateHedgingPolicy(obj.hedgingPolicy);\n }\n return result;\n}\nfunction validateRetryThrottling(obj) {\n if (!('maxTokens' in obj) ||\n typeof obj.maxTokens !== 'number' ||\n obj.maxTokens <= 0 ||\n obj.maxTokens > 1000) {\n throw new Error('Invalid retryThrottling: maxTokens must be a number in (0, 1000]');\n }\n if (!('tokenRatio' in obj) ||\n typeof obj.tokenRatio !== 'number' ||\n obj.tokenRatio <= 0) {\n throw new Error('Invalid retryThrottling: tokenRatio must be a number greater than 0');\n }\n return {\n maxTokens: +obj.maxTokens.toFixed(3),\n tokenRatio: +obj.tokenRatio.toFixed(3),\n };\n}\nexports.validateRetryThrottling = validateRetryThrottling;\nfunction validateLoadBalancingConfig(obj) {\n if (!(typeof obj === 'object' && obj !== null)) {\n throw new Error(`Invalid loadBalancingConfig: unexpected type ${typeof obj}`);\n }\n const keys = Object.keys(obj);\n if (keys.length > 1) {\n throw new Error(`Invalid loadBalancingConfig: unexpected multiple keys ${keys}`);\n }\n if (keys.length === 0) {\n throw new Error('Invalid loadBalancingConfig: load balancing policy name required');\n }\n return {\n [keys[0]]: obj[keys[0]]\n };\n}\nfunction validateServiceConfig(obj) {\n const result = {\n loadBalancingConfig: [],\n methodConfig: [],\n };\n if ('loadBalancingPolicy' in obj) {\n if (typeof obj.loadBalancingPolicy === 'string') {\n result.loadBalancingPolicy = obj.loadBalancingPolicy;\n }\n else {\n throw new Error('Invalid service config: invalid loadBalancingPolicy');\n }\n }\n if ('loadBalancingConfig' in obj) {\n if (Array.isArray(obj.loadBalancingConfig)) {\n for (const config of obj.loadBalancingConfig) {\n result.loadBalancingConfig.push(validateLoadBalancingConfig(config));\n }\n }\n else {\n throw new Error('Invalid service config: invalid loadBalancingConfig');\n }\n }\n if ('methodConfig' in obj) {\n if (Array.isArray(obj.methodConfig)) {\n for (const methodConfig of obj.methodConfig) {\n result.methodConfig.push(validateMethodConfig(methodConfig));\n }\n }\n }\n if ('retryThrottling' in obj) {\n result.retryThrottling = validateRetryThrottling(obj.retryThrottling);\n }\n // Validate method name uniqueness\n const seenMethodNames = [];\n for (const methodConfig of result.methodConfig) {\n for (const name of methodConfig.name) {\n for (const seenName of seenMethodNames) {\n if (name.service === seenName.service &&\n name.method === seenName.method) {\n throw new Error(`Invalid service config: duplicate name ${name.service}/${name.method}`);\n }\n }\n seenMethodNames.push(name);\n }\n }\n return result;\n}\nexports.validateServiceConfig = validateServiceConfig;\nfunction validateCanaryConfig(obj) {\n if (!('serviceConfig' in obj)) {\n throw new Error('Invalid service config choice: missing service config');\n }\n const result = {\n serviceConfig: validateServiceConfig(obj.serviceConfig),\n };\n if ('clientLanguage' in obj) {\n if (Array.isArray(obj.clientLanguage)) {\n result.clientLanguage = [];\n for (const lang of obj.clientLanguage) {\n if (typeof lang === 'string') {\n result.clientLanguage.push(lang);\n }\n else {\n throw new Error('Invalid service config choice: invalid clientLanguage');\n }\n }\n }\n else {\n throw new Error('Invalid service config choice: invalid clientLanguage');\n }\n }\n if ('clientHostname' in obj) {\n if (Array.isArray(obj.clientHostname)) {\n result.clientHostname = [];\n for (const lang of obj.clientHostname) {\n if (typeof lang === 'string') {\n result.clientHostname.push(lang);\n }\n else {\n throw new Error('Invalid service config choice: invalid clientHostname');\n }\n }\n }\n else {\n throw new Error('Invalid service config choice: invalid clientHostname');\n }\n }\n if ('percentage' in obj) {\n if (typeof obj.percentage === 'number' &&\n 0 <= obj.percentage &&\n obj.percentage <= 100) {\n result.percentage = obj.percentage;\n }\n else {\n throw new Error('Invalid service config choice: invalid percentage');\n }\n }\n // Validate that no unexpected fields are present\n const allowedFields = [\n 'clientLanguage',\n 'percentage',\n 'clientHostname',\n 'serviceConfig',\n ];\n for (const field in obj) {\n if (!allowedFields.includes(field)) {\n throw new Error(`Invalid service config choice: unexpected field ${field}`);\n }\n }\n return result;\n}\nfunction validateAndSelectCanaryConfig(obj, percentage) {\n if (!Array.isArray(obj)) {\n throw new Error('Invalid service config list');\n }\n for (const config of obj) {\n const validatedConfig = validateCanaryConfig(config);\n /* For each field, we check if it is present, then only discard the\n * config if the field value does not match the current client */\n if (typeof validatedConfig.percentage === 'number' &&\n percentage > validatedConfig.percentage) {\n continue;\n }\n if (Array.isArray(validatedConfig.clientHostname)) {\n let hostnameMatched = false;\n for (const hostname of validatedConfig.clientHostname) {\n if (hostname === os.hostname()) {\n hostnameMatched = true;\n }\n }\n if (!hostnameMatched) {\n continue;\n }\n }\n if (Array.isArray(validatedConfig.clientLanguage)) {\n let languageMatched = false;\n for (const language of validatedConfig.clientLanguage) {\n if (language === CLIENT_LANGUAGE_STRING) {\n languageMatched = true;\n }\n }\n if (!languageMatched) {\n continue;\n }\n }\n return validatedConfig.serviceConfig;\n }\n throw new Error('No matching service config found');\n}\n/**\n * Find the \"grpc_config\" record among the TXT records, parse its value as JSON, validate its contents,\n * and select a service config with selection fields that all match this client. Most of these steps\n * can fail with an error; the caller must handle any errors thrown this way.\n * @param txtRecord The TXT record array that is output from a successful call to dns.resolveTxt\n * @param percentage A number chosen from the range [0, 100) that is used to select which config to use\n * @return The service configuration to use, given the percentage value, or null if the service config\n * data has a valid format but none of the options match the current client.\n */\nfunction extractAndSelectServiceConfig(txtRecord, percentage) {\n for (const record of txtRecord) {\n if (record.length > 0 && record[0].startsWith('grpc_config=')) {\n /* Treat the list of strings in this record as a single string and remove\n * \"grpc_config=\" from the beginning. The rest should be a JSON string */\n const recordString = record.join('').substring('grpc_config='.length);\n const recordJson = JSON.parse(recordString);\n return validateAndSelectCanaryConfig(recordJson, percentage);\n }\n }\n return null;\n}\nexports.extractAndSelectServiceConfig = extractAndSelectServiceConfig;\n//# sourceMappingURL=service-config.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StatusBuilder = void 0;\n/**\n * A builder for gRPC status objects.\n */\nclass StatusBuilder {\n constructor() {\n this.code = null;\n this.details = null;\n this.metadata = null;\n }\n /**\n * Adds a status code to the builder.\n */\n withCode(code) {\n this.code = code;\n return this;\n }\n /**\n * Adds details to the builder.\n */\n withDetails(details) {\n this.details = details;\n return this;\n }\n /**\n * Adds metadata to the builder.\n */\n withMetadata(metadata) {\n this.metadata = metadata;\n return this;\n }\n /**\n * Builds the status object.\n */\n build() {\n const status = {};\n if (this.code !== null) {\n status.code = this.code;\n }\n if (this.details !== null) {\n status.details = this.details;\n }\n if (this.metadata !== null) {\n status.metadata = this.metadata;\n }\n return status;\n }\n}\nexports.StatusBuilder = StatusBuilder;\n//# sourceMappingURL=status-builder.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamDecoder = void 0;\nvar ReadState;\n(function (ReadState) {\n ReadState[ReadState[\"NO_DATA\"] = 0] = \"NO_DATA\";\n ReadState[ReadState[\"READING_SIZE\"] = 1] = \"READING_SIZE\";\n ReadState[ReadState[\"READING_MESSAGE\"] = 2] = \"READING_MESSAGE\";\n})(ReadState || (ReadState = {}));\nclass StreamDecoder {\n constructor() {\n this.readState = ReadState.NO_DATA;\n this.readCompressFlag = Buffer.alloc(1);\n this.readPartialSize = Buffer.alloc(4);\n this.readSizeRemaining = 4;\n this.readMessageSize = 0;\n this.readPartialMessage = [];\n this.readMessageRemaining = 0;\n }\n write(data) {\n let readHead = 0;\n let toRead;\n const result = [];\n while (readHead < data.length) {\n switch (this.readState) {\n case ReadState.NO_DATA:\n this.readCompressFlag = data.slice(readHead, readHead + 1);\n readHead += 1;\n this.readState = ReadState.READING_SIZE;\n this.readPartialSize.fill(0);\n this.readSizeRemaining = 4;\n this.readMessageSize = 0;\n this.readMessageRemaining = 0;\n this.readPartialMessage = [];\n break;\n case ReadState.READING_SIZE:\n toRead = Math.min(data.length - readHead, this.readSizeRemaining);\n data.copy(this.readPartialSize, 4 - this.readSizeRemaining, readHead, readHead + toRead);\n this.readSizeRemaining -= toRead;\n readHead += toRead;\n // readSizeRemaining >=0 here\n if (this.readSizeRemaining === 0) {\n this.readMessageSize = this.readPartialSize.readUInt32BE(0);\n this.readMessageRemaining = this.readMessageSize;\n if (this.readMessageRemaining > 0) {\n this.readState = ReadState.READING_MESSAGE;\n }\n else {\n const message = Buffer.concat([this.readCompressFlag, this.readPartialSize], 5);\n this.readState = ReadState.NO_DATA;\n result.push(message);\n }\n }\n break;\n case ReadState.READING_MESSAGE:\n toRead = Math.min(data.length - readHead, this.readMessageRemaining);\n this.readPartialMessage.push(data.slice(readHead, readHead + toRead));\n this.readMessageRemaining -= toRead;\n readHead += toRead;\n // readMessageRemaining >=0 here\n if (this.readMessageRemaining === 0) {\n // At this point, we have read a full message\n const framedMessageBuffers = [\n this.readCompressFlag,\n this.readPartialSize,\n ].concat(this.readPartialMessage);\n const framedMessage = Buffer.concat(framedMessageBuffers, this.readMessageSize + 5);\n this.readState = ReadState.NO_DATA;\n result.push(framedMessage);\n }\n break;\n default:\n throw new Error('Unexpected read state');\n }\n }\n return result;\n }\n}\nexports.StreamDecoder = StreamDecoder;\n//# sourceMappingURL=stream-decoder.js.map","\"use strict\";\n/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndpointMap = exports.endpointHasAddress = exports.endpointToString = exports.endpointEqual = exports.stringToSubchannelAddress = exports.subchannelAddressToString = exports.subchannelAddressEqual = exports.isTcpSubchannelAddress = void 0;\nconst net_1 = require(\"net\");\nfunction isTcpSubchannelAddress(address) {\n return 'port' in address;\n}\nexports.isTcpSubchannelAddress = isTcpSubchannelAddress;\nfunction subchannelAddressEqual(address1, address2) {\n if (!address1 && !address2) {\n return true;\n }\n if (!address1 || !address2) {\n return false;\n }\n if (isTcpSubchannelAddress(address1)) {\n return (isTcpSubchannelAddress(address2) &&\n address1.host === address2.host &&\n address1.port === address2.port);\n }\n else {\n return !isTcpSubchannelAddress(address2) && address1.path === address2.path;\n }\n}\nexports.subchannelAddressEqual = subchannelAddressEqual;\nfunction subchannelAddressToString(address) {\n if (isTcpSubchannelAddress(address)) {\n return address.host + ':' + address.port;\n }\n else {\n return address.path;\n }\n}\nexports.subchannelAddressToString = subchannelAddressToString;\nconst DEFAULT_PORT = 443;\nfunction stringToSubchannelAddress(addressString, port) {\n if ((0, net_1.isIP)(addressString)) {\n return {\n host: addressString,\n port: port !== null && port !== void 0 ? port : DEFAULT_PORT,\n };\n }\n else {\n return {\n path: addressString,\n };\n }\n}\nexports.stringToSubchannelAddress = stringToSubchannelAddress;\nfunction endpointEqual(endpoint1, endpoint2) {\n if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n return false;\n }\n for (let i = 0; i < endpoint1.addresses.length; i++) {\n if (!subchannelAddressEqual(endpoint1.addresses[i], endpoint2.addresses[i])) {\n return false;\n }\n }\n return true;\n}\nexports.endpointEqual = endpointEqual;\nfunction endpointToString(endpoint) {\n return ('[' + endpoint.addresses.map(subchannelAddressToString).join(', ') + ']');\n}\nexports.endpointToString = endpointToString;\nfunction endpointHasAddress(endpoint, expectedAddress) {\n for (const address of endpoint.addresses) {\n if (subchannelAddressEqual(address, expectedAddress)) {\n return true;\n }\n }\n return false;\n}\nexports.endpointHasAddress = endpointHasAddress;\nfunction endpointEqualUnordered(endpoint1, endpoint2) {\n if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n return false;\n }\n for (const address1 of endpoint1.addresses) {\n let matchFound = false;\n for (const address2 of endpoint2.addresses) {\n if (subchannelAddressEqual(address1, address2)) {\n matchFound = true;\n break;\n }\n }\n if (!matchFound) {\n return false;\n }\n }\n return true;\n}\nclass EndpointMap {\n constructor() {\n this.map = new Set();\n }\n get size() {\n return this.map.size;\n }\n getForSubchannelAddress(address) {\n for (const entry of this.map) {\n if (endpointHasAddress(entry.key, address)) {\n return entry.value;\n }\n }\n return undefined;\n }\n /**\n * Delete any entries in this map with keys that are not in endpoints\n * @param endpoints\n */\n deleteMissing(endpoints) {\n const removedValues = [];\n for (const entry of this.map) {\n let foundEntry = false;\n for (const endpoint of endpoints) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n foundEntry = true;\n }\n }\n if (!foundEntry) {\n removedValues.push(entry.value);\n this.map.delete(entry);\n }\n }\n return removedValues;\n }\n get(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n return entry.value;\n }\n }\n return undefined;\n }\n set(endpoint, mapEntry) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n entry.value = mapEntry;\n return;\n }\n }\n this.map.add({ key: endpoint, value: mapEntry });\n }\n delete(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n this.map.delete(entry);\n return;\n }\n }\n }\n has(endpoint) {\n for (const entry of this.map) {\n if (endpointEqualUnordered(endpoint, entry.key)) {\n return true;\n }\n }\n return false;\n }\n clear() {\n this.map.clear();\n }\n *keys() {\n for (const entry of this.map) {\n yield entry.key;\n }\n }\n *values() {\n for (const entry of this.map) {\n yield entry.value;\n }\n }\n *entries() {\n for (const entry of this.map) {\n yield [entry.key, entry.value];\n }\n }\n}\nexports.EndpointMap = EndpointMap;\n//# sourceMappingURL=subchannel-address.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http2SubchannelCall = void 0;\nconst http2 = require(\"http2\");\nconst os = require(\"os\");\nconst constants_1 = require(\"./constants\");\nconst metadata_1 = require(\"./metadata\");\nconst stream_decoder_1 = require(\"./stream-decoder\");\nconst logging = require(\"./logging\");\nconst constants_2 = require(\"./constants\");\nconst TRACER_NAME = 'subchannel_call';\n/**\n * Should do approximately the same thing as util.getSystemErrorName but the\n * TypeScript types don't have that function for some reason so I just made my\n * own.\n * @param errno\n */\nfunction getSystemErrorName(errno) {\n for (const [name, num] of Object.entries(os.constants.errno)) {\n if (num === errno) {\n return name;\n }\n }\n return 'Unknown system error ' + errno;\n}\nclass Http2SubchannelCall {\n constructor(http2Stream, callEventTracker, listener, transport, callId) {\n this.http2Stream = http2Stream;\n this.callEventTracker = callEventTracker;\n this.listener = listener;\n this.transport = transport;\n this.callId = callId;\n this.decoder = new stream_decoder_1.StreamDecoder();\n this.isReadFilterPending = false;\n this.isPushPending = false;\n this.canPush = false;\n /**\n * Indicates that an 'end' event has come from the http2 stream, so there\n * will be no more data events.\n */\n this.readsClosed = false;\n this.statusOutput = false;\n this.unpushedReadMessages = [];\n // Status code mapped from :status. To be used if grpc-status is not received\n this.mappedStatusCode = constants_1.Status.UNKNOWN;\n // This is populated (non-null) if and only if the call has ended\n this.finalStatus = null;\n this.internalError = null;\n http2Stream.on('response', (headers, flags) => {\n let headersString = '';\n for (const header of Object.keys(headers)) {\n headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n }\n this.trace('Received server headers:\\n' + headersString);\n switch (headers[':status']) {\n // TODO(murgatroid99): handle 100 and 101\n case 400:\n this.mappedStatusCode = constants_1.Status.INTERNAL;\n break;\n case 401:\n this.mappedStatusCode = constants_1.Status.UNAUTHENTICATED;\n break;\n case 403:\n this.mappedStatusCode = constants_1.Status.PERMISSION_DENIED;\n break;\n case 404:\n this.mappedStatusCode = constants_1.Status.UNIMPLEMENTED;\n break;\n case 429:\n case 502:\n case 503:\n case 504:\n this.mappedStatusCode = constants_1.Status.UNAVAILABLE;\n break;\n default:\n this.mappedStatusCode = constants_1.Status.UNKNOWN;\n }\n if (flags & http2.constants.NGHTTP2_FLAG_END_STREAM) {\n this.handleTrailers(headers);\n }\n else {\n let metadata;\n try {\n metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n }\n catch (error) {\n this.endCall({\n code: constants_1.Status.UNKNOWN,\n details: error.message,\n metadata: new metadata_1.Metadata(),\n });\n return;\n }\n this.listener.onReceiveMetadata(metadata);\n }\n });\n http2Stream.on('trailers', (headers) => {\n this.handleTrailers(headers);\n });\n http2Stream.on('data', (data) => {\n /* If the status has already been output, allow the http2 stream to\n * drain without processing the data. */\n if (this.statusOutput) {\n return;\n }\n this.trace('receive HTTP/2 data frame of length ' + data.length);\n const messages = this.decoder.write(data);\n for (const message of messages) {\n this.trace('parsed message of length ' + message.length);\n this.callEventTracker.addMessageReceived();\n this.tryPush(message);\n }\n });\n http2Stream.on('end', () => {\n this.readsClosed = true;\n this.maybeOutputStatus();\n });\n http2Stream.on('close', () => {\n /* Use process.next tick to ensure that this code happens after any\n * \"error\" event that may be emitted at about the same time, so that\n * we can bubble up the error message from that event. */\n process.nextTick(() => {\n var _a;\n this.trace('HTTP/2 stream closed with code ' + http2Stream.rstCode);\n /* If we have a final status with an OK status code, that means that\n * we have received all of the messages and we have processed the\n * trailers and the call completed successfully, so it doesn't matter\n * how the stream ends after that */\n if (((_a = this.finalStatus) === null || _a === void 0 ? void 0 : _a.code) === constants_1.Status.OK) {\n return;\n }\n let code;\n let details = '';\n switch (http2Stream.rstCode) {\n case http2.constants.NGHTTP2_NO_ERROR:\n /* If we get a NO_ERROR code and we already have a status, the\n * stream completed properly and we just haven't fully processed\n * it yet */\n if (this.finalStatus !== null) {\n return;\n }\n code = constants_1.Status.INTERNAL;\n details = `Received RST_STREAM with code ${http2Stream.rstCode}`;\n break;\n case http2.constants.NGHTTP2_REFUSED_STREAM:\n code = constants_1.Status.UNAVAILABLE;\n details = 'Stream refused by server';\n break;\n case http2.constants.NGHTTP2_CANCEL:\n code = constants_1.Status.CANCELLED;\n details = 'Call cancelled';\n break;\n case http2.constants.NGHTTP2_ENHANCE_YOUR_CALM:\n code = constants_1.Status.RESOURCE_EXHAUSTED;\n details = 'Bandwidth exhausted or memory limit exceeded';\n break;\n case http2.constants.NGHTTP2_INADEQUATE_SECURITY:\n code = constants_1.Status.PERMISSION_DENIED;\n details = 'Protocol not secure enough';\n break;\n case http2.constants.NGHTTP2_INTERNAL_ERROR:\n code = constants_1.Status.INTERNAL;\n if (this.internalError === null) {\n /* This error code was previously handled in the default case, and\n * there are several instances of it online, so I wanted to\n * preserve the original error message so that people find existing\n * information in searches, but also include the more recognizable\n * \"Internal server error\" message. */\n details = `Received RST_STREAM with code ${http2Stream.rstCode} (Internal server error)`;\n }\n else {\n if (this.internalError.code === 'ECONNRESET' ||\n this.internalError.code === 'ETIMEDOUT') {\n code = constants_1.Status.UNAVAILABLE;\n details = this.internalError.message;\n }\n else {\n /* The \"Received RST_STREAM with code ...\" error is preserved\n * here for continuity with errors reported online, but the\n * error message at the end will probably be more relevant in\n * most cases. */\n details = `Received RST_STREAM with code ${http2Stream.rstCode} triggered by internal client error: ${this.internalError.message}`;\n }\n }\n break;\n default:\n code = constants_1.Status.INTERNAL;\n details = `Received RST_STREAM with code ${http2Stream.rstCode}`;\n }\n // This is a no-op if trailers were received at all.\n // This is OK, because status codes emitted here correspond to more\n // catastrophic issues that prevent us from receiving trailers in the\n // first place.\n this.endCall({\n code,\n details,\n metadata: new metadata_1.Metadata(),\n rstCode: http2Stream.rstCode,\n });\n });\n });\n http2Stream.on('error', (err) => {\n /* We need an error handler here to stop \"Uncaught Error\" exceptions\n * from bubbling up. However, errors here should all correspond to\n * \"close\" events, where we will handle the error more granularly */\n /* Specifically looking for stream errors that were *not* constructed\n * from a RST_STREAM response here:\n * https://github.com/nodejs/node/blob/8b8620d580314050175983402dfddf2674e8e22a/lib/internal/http2/core.js#L2267\n */\n if (err.code !== 'ERR_HTTP2_STREAM_ERROR') {\n this.trace('Node error event: message=' +\n err.message +\n ' code=' +\n err.code +\n ' errno=' +\n getSystemErrorName(err.errno) +\n ' syscall=' +\n err.syscall);\n this.internalError = err;\n }\n this.callEventTracker.onStreamEnd(false);\n });\n }\n onDisconnect() {\n this.endCall({\n code: constants_1.Status.UNAVAILABLE,\n details: 'Connection dropped',\n metadata: new metadata_1.Metadata(),\n });\n }\n outputStatus() {\n /* Precondition: this.finalStatus !== null */\n if (!this.statusOutput) {\n this.statusOutput = true;\n this.trace('ended with status: code=' +\n this.finalStatus.code +\n ' details=\"' +\n this.finalStatus.details +\n '\"');\n this.callEventTracker.onCallEnd(this.finalStatus);\n /* We delay the actual action of bubbling up the status to insulate the\n * cleanup code in this class from any errors that may be thrown in the\n * upper layers as a result of bubbling up the status. In particular,\n * if the status is not OK, the \"error\" event may be emitted\n * synchronously at the top level, which will result in a thrown error if\n * the user does not handle that event. */\n process.nextTick(() => {\n this.listener.onReceiveStatus(this.finalStatus);\n });\n /* Leave the http2 stream in flowing state to drain incoming messages, to\n * ensure that the stream closure completes. The call stream already does\n * not push more messages after the status is output, so the messages go\n * nowhere either way. */\n this.http2Stream.resume();\n }\n }\n trace(text) {\n logging.trace(constants_2.LogVerbosity.DEBUG, TRACER_NAME, '[' + this.callId + '] ' + text);\n }\n /**\n * On first call, emits a 'status' event with the given StatusObject.\n * Subsequent calls are no-ops.\n * @param status The status of the call.\n */\n endCall(status) {\n /* If the status is OK and a new status comes in (e.g. from a\n * deserialization failure), that new status takes priority */\n if (this.finalStatus === null || this.finalStatus.code === constants_1.Status.OK) {\n this.finalStatus = status;\n this.maybeOutputStatus();\n }\n this.destroyHttp2Stream();\n }\n maybeOutputStatus() {\n if (this.finalStatus !== null) {\n /* The combination check of readsClosed and that the two message buffer\n * arrays are empty checks that there all incoming data has been fully\n * processed */\n if (this.finalStatus.code !== constants_1.Status.OK ||\n (this.readsClosed &&\n this.unpushedReadMessages.length === 0 &&\n !this.isReadFilterPending &&\n !this.isPushPending)) {\n this.outputStatus();\n }\n }\n }\n push(message) {\n this.trace('pushing to reader message of length ' +\n (message instanceof Buffer ? message.length : null));\n this.canPush = false;\n this.isPushPending = true;\n process.nextTick(() => {\n this.isPushPending = false;\n /* If we have already output the status any later messages should be\n * ignored, and can cause out-of-order operation errors higher up in the\n * stack. Checking as late as possible here to avoid any race conditions.\n */\n if (this.statusOutput) {\n return;\n }\n this.listener.onReceiveMessage(message);\n this.maybeOutputStatus();\n });\n }\n tryPush(messageBytes) {\n if (this.canPush) {\n this.http2Stream.pause();\n this.push(messageBytes);\n }\n else {\n this.trace('unpushedReadMessages.push message of length ' + messageBytes.length);\n this.unpushedReadMessages.push(messageBytes);\n }\n }\n handleTrailers(headers) {\n this.callEventTracker.onStreamEnd(true);\n let headersString = '';\n for (const header of Object.keys(headers)) {\n headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n }\n this.trace('Received server trailers:\\n' + headersString);\n let metadata;\n try {\n metadata = metadata_1.Metadata.fromHttp2Headers(headers);\n }\n catch (e) {\n metadata = new metadata_1.Metadata();\n }\n const metadataMap = metadata.getMap();\n let code = this.mappedStatusCode;\n if (code === constants_1.Status.UNKNOWN &&\n typeof metadataMap['grpc-status'] === 'string') {\n const receivedStatus = Number(metadataMap['grpc-status']);\n if (receivedStatus in constants_1.Status) {\n code = receivedStatus;\n this.trace('received status code ' + receivedStatus + ' from server');\n }\n metadata.remove('grpc-status');\n }\n let details = '';\n if (typeof metadataMap['grpc-message'] === 'string') {\n try {\n details = decodeURI(metadataMap['grpc-message']);\n }\n catch (e) {\n details = metadataMap['grpc-message'];\n }\n metadata.remove('grpc-message');\n this.trace('received status details string \"' + details + '\" from server');\n }\n const status = { code, details, metadata };\n // This is a no-op if the call was already ended when handling headers.\n this.endCall(status);\n }\n destroyHttp2Stream() {\n var _a;\n // The http2 stream could already have been destroyed if cancelWithStatus\n // is called in response to an internal http2 error.\n if (!this.http2Stream.destroyed) {\n /* If the call has ended with an OK status, communicate that when closing\n * the stream, partly to avoid a situation in which we detect an error\n * RST_STREAM as a result after we have the status */\n let code;\n if (((_a = this.finalStatus) === null || _a === void 0 ? void 0 : _a.code) === constants_1.Status.OK) {\n code = http2.constants.NGHTTP2_NO_ERROR;\n }\n else {\n code = http2.constants.NGHTTP2_CANCEL;\n }\n this.trace('close http2 stream with code ' + code);\n this.http2Stream.close(code);\n }\n }\n cancelWithStatus(status, details) {\n this.trace('cancelWithStatus code: ' + status + ' details: \"' + details + '\"');\n this.endCall({ code: status, details, metadata: new metadata_1.Metadata() });\n }\n getStatus() {\n return this.finalStatus;\n }\n getPeer() {\n return this.transport.getPeerName();\n }\n getCallNumber() {\n return this.callId;\n }\n startRead() {\n /* If the stream has ended with an error, we should not emit any more\n * messages and we should communicate that the stream has ended */\n if (this.finalStatus !== null && this.finalStatus.code !== constants_1.Status.OK) {\n this.readsClosed = true;\n this.maybeOutputStatus();\n return;\n }\n this.canPush = true;\n if (this.unpushedReadMessages.length > 0) {\n const nextMessage = this.unpushedReadMessages.shift();\n this.push(nextMessage);\n return;\n }\n /* Only resume reading from the http2Stream if we don't have any pending\n * messages to emit */\n this.http2Stream.resume();\n }\n sendMessageWithContext(context, message) {\n this.trace('write() called with message of length ' + message.length);\n const cb = (error) => {\n /* nextTick here ensures that no stream action can be taken in the call\n * stack of the write callback, in order to hopefully work around\n * https://github.com/nodejs/node/issues/49147 */\n process.nextTick(() => {\n var _a;\n let code = constants_1.Status.UNAVAILABLE;\n if ((error === null || error === void 0 ? void 0 : error.code) ===\n 'ERR_STREAM_WRITE_AFTER_END') {\n code = constants_1.Status.INTERNAL;\n }\n if (error) {\n this.cancelWithStatus(code, `Write error: ${error.message}`);\n }\n (_a = context.callback) === null || _a === void 0 ? void 0 : _a.call(context);\n });\n };\n this.trace('sending data chunk of length ' + message.length);\n this.callEventTracker.addMessageSent();\n try {\n this.http2Stream.write(message, cb);\n }\n catch (error) {\n this.endCall({\n code: constants_1.Status.UNAVAILABLE,\n details: `Write failed with error ${error.message}`,\n metadata: new metadata_1.Metadata(),\n });\n }\n }\n halfClose() {\n this.trace('end() called');\n this.trace('calling end() on HTTP/2 stream');\n this.http2Stream.end();\n }\n}\nexports.Http2SubchannelCall = Http2SubchannelCall;\n//# sourceMappingURL=subchannel-call.js.map","\"use strict\";\n/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseSubchannelWrapper = void 0;\nclass BaseSubchannelWrapper {\n constructor(child) {\n this.child = child;\n this.healthy = true;\n this.healthListeners = new Set();\n child.addHealthStateWatcher(childHealthy => {\n /* A change to the child health state only affects this wrapper's overall\n * health state if this wrapper is reporting healthy. */\n if (this.healthy) {\n this.updateHealthListeners();\n }\n });\n }\n updateHealthListeners() {\n for (const listener of this.healthListeners) {\n listener(this.isHealthy());\n }\n }\n getConnectivityState() {\n return this.child.getConnectivityState();\n }\n addConnectivityStateListener(listener) {\n this.child.addConnectivityStateListener(listener);\n }\n removeConnectivityStateListener(listener) {\n this.child.removeConnectivityStateListener(listener);\n }\n startConnecting() {\n this.child.startConnecting();\n }\n getAddress() {\n return this.child.getAddress();\n }\n throttleKeepalive(newKeepaliveTime) {\n this.child.throttleKeepalive(newKeepaliveTime);\n }\n ref() {\n this.child.ref();\n }\n unref() {\n this.child.unref();\n }\n getChannelzRef() {\n return this.child.getChannelzRef();\n }\n isHealthy() {\n return this.healthy && this.child.isHealthy();\n }\n addHealthStateWatcher(listener) {\n this.healthListeners.add(listener);\n }\n removeHealthStateWatcher(listener) {\n this.healthListeners.delete(listener);\n }\n setHealthy(healthy) {\n if (healthy !== this.healthy) {\n this.healthy = healthy;\n /* A change to this wrapper's health state only affects the overall\n * reported health state if the child is healthy. */\n if (this.child.isHealthy()) {\n this.updateHealthListeners();\n }\n }\n }\n getRealSubchannel() {\n return this.child.getRealSubchannel();\n }\n realSubchannelEquals(other) {\n return this.getRealSubchannel() === other.getRealSubchannel();\n }\n}\nexports.BaseSubchannelWrapper = BaseSubchannelWrapper;\n//# sourceMappingURL=subchannel-interface.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSubchannelPool = exports.SubchannelPool = void 0;\nconst channel_options_1 = require(\"./channel-options\");\nconst subchannel_1 = require(\"./subchannel\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst transport_1 = require(\"./transport\");\n// 10 seconds in milliseconds. This value is arbitrary.\n/**\n * The amount of time in between checks for dropping subchannels that have no\n * other references\n */\nconst REF_CHECK_INTERVAL = 10000;\nclass SubchannelPool {\n /**\n * A pool of subchannels use for making connections. Subchannels with the\n * exact same parameters will be reused.\n */\n constructor() {\n this.pool = Object.create(null);\n /**\n * A timer of a task performing a periodic subchannel cleanup.\n */\n this.cleanupTimer = null;\n }\n /**\n * Unrefs all unused subchannels and cancels the cleanup task if all\n * subchannels have been unrefed.\n */\n unrefUnusedSubchannels() {\n let allSubchannelsUnrefed = true;\n /* These objects are created with Object.create(null), so they do not\n * have a prototype, which means that for (... in ...) loops over them\n * do not need to be filtered */\n // eslint-disable-disable-next-line:forin\n for (const channelTarget in this.pool) {\n const subchannelObjArray = this.pool[channelTarget];\n const refedSubchannels = subchannelObjArray.filter(value => !value.subchannel.unrefIfOneRef());\n if (refedSubchannels.length > 0) {\n allSubchannelsUnrefed = false;\n }\n /* For each subchannel in the pool, try to unref it if it has\n * exactly one ref (which is the ref from the pool itself). If that\n * does happen, remove the subchannel from the pool */\n this.pool[channelTarget] = refedSubchannels;\n }\n /* Currently we do not delete keys with empty values. If that results\n * in significant memory usage we should change it. */\n // Cancel the cleanup task if all subchannels have been unrefed.\n if (allSubchannelsUnrefed && this.cleanupTimer !== null) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n }\n /**\n * Ensures that the cleanup task is spawned.\n */\n ensureCleanupTask() {\n var _a, _b;\n if (this.cleanupTimer === null) {\n this.cleanupTimer = setInterval(() => {\n this.unrefUnusedSubchannels();\n }, REF_CHECK_INTERVAL);\n // Unref because this timer should not keep the event loop running.\n // Call unref only if it exists to address electron/electron#21162\n (_b = (_a = this.cleanupTimer).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n /**\n * Get a subchannel if one already exists with exactly matching parameters.\n * Otherwise, create and save a subchannel with those parameters.\n * @param channelTarget\n * @param subchannelTarget\n * @param channelArguments\n * @param channelCredentials\n */\n getOrCreateSubchannel(channelTargetUri, subchannelTarget, channelArguments, channelCredentials) {\n this.ensureCleanupTask();\n const channelTarget = (0, uri_parser_1.uriToString)(channelTargetUri);\n if (channelTarget in this.pool) {\n const subchannelObjArray = this.pool[channelTarget];\n for (const subchannelObj of subchannelObjArray) {\n if ((0, subchannel_address_1.subchannelAddressEqual)(subchannelTarget, subchannelObj.subchannelAddress) &&\n (0, channel_options_1.channelOptionsEqual)(channelArguments, subchannelObj.channelArguments) &&\n channelCredentials._equals(subchannelObj.channelCredentials)) {\n return subchannelObj.subchannel;\n }\n }\n }\n // If we get here, no matching subchannel was found\n const subchannel = new subchannel_1.Subchannel(channelTargetUri, subchannelTarget, channelArguments, channelCredentials, new transport_1.Http2SubchannelConnector(channelTargetUri));\n if (!(channelTarget in this.pool)) {\n this.pool[channelTarget] = [];\n }\n this.pool[channelTarget].push({\n subchannelAddress: subchannelTarget,\n channelArguments,\n channelCredentials,\n subchannel,\n });\n subchannel.ref();\n return subchannel;\n }\n}\nexports.SubchannelPool = SubchannelPool;\nconst globalSubchannelPool = new SubchannelPool();\n/**\n * Get either the global subchannel pool, or a new subchannel pool.\n * @param global\n */\nfunction getSubchannelPool(global) {\n if (global) {\n return globalSubchannelPool;\n }\n else {\n return new SubchannelPool();\n }\n}\nexports.getSubchannelPool = getSubchannelPool;\n//# sourceMappingURL=subchannel-pool.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Subchannel = void 0;\nconst connectivity_state_1 = require(\"./connectivity-state\");\nconst backoff_timeout_1 = require(\"./backoff-timeout\");\nconst logging = require(\"./logging\");\nconst constants_1 = require(\"./constants\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst channelz_1 = require(\"./channelz\");\nconst TRACER_NAME = 'subchannel';\n/* setInterval and setTimeout only accept signed 32 bit integers. JS doesn't\n * have a constant for the max signed 32 bit integer, so this is a simple way\n * to calculate it */\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nclass Subchannel {\n /**\n * A class representing a connection to a single backend.\n * @param channelTarget The target string for the channel as a whole\n * @param subchannelAddress The address for the backend that this subchannel\n * will connect to\n * @param options The channel options, plus any specific subchannel options\n * for this subchannel\n * @param credentials The channel credentials used to establish this\n * connection\n */\n constructor(channelTarget, subchannelAddress, options, credentials, connector) {\n var _a;\n this.channelTarget = channelTarget;\n this.subchannelAddress = subchannelAddress;\n this.options = options;\n this.credentials = credentials;\n this.connector = connector;\n /**\n * The subchannel's current connectivity state. Invariant: `session` === `null`\n * if and only if `connectivityState` is IDLE or TRANSIENT_FAILURE.\n */\n this.connectivityState = connectivity_state_1.ConnectivityState.IDLE;\n /**\n * The underlying http2 session used to make requests.\n */\n this.transport = null;\n /**\n * Indicates that the subchannel should transition from TRANSIENT_FAILURE to\n * CONNECTING instead of IDLE when the backoff timeout ends.\n */\n this.continueConnecting = false;\n /**\n * A list of listener functions that will be called whenever the connectivity\n * state changes. Will be modified by `addConnectivityStateListener` and\n * `removeConnectivityStateListener`\n */\n this.stateListeners = new Set();\n /**\n * Tracks channels and subchannel pools with references to this subchannel\n */\n this.refcount = 0;\n // Channelz info\n this.channelzEnabled = true;\n this.callTracker = new channelz_1.ChannelzCallTracker();\n this.childrenTracker = new channelz_1.ChannelzChildrenTracker();\n // Channelz socket info\n this.streamTracker = new channelz_1.ChannelzCallTracker();\n const backoffOptions = {\n initialDelay: options['grpc.initial_reconnect_backoff_ms'],\n maxDelay: options['grpc.max_reconnect_backoff_ms'],\n };\n this.backoffTimeout = new backoff_timeout_1.BackoffTimeout(() => {\n this.handleBackoffTimer();\n }, backoffOptions);\n this.backoffTimeout.unref();\n this.subchannelAddressString = (0, subchannel_address_1.subchannelAddressToString)(subchannelAddress);\n this.keepaliveTime = (_a = options['grpc.keepalive_time_ms']) !== null && _a !== void 0 ? _a : -1;\n if (options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n }\n this.channelzTrace = new channelz_1.ChannelzTrace();\n this.channelzRef = (0, channelz_1.registerChannelzSubchannel)(this.subchannelAddressString, () => this.getChannelzInfo(), this.channelzEnabled);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Subchannel created');\n }\n this.trace('Subchannel constructed with options ' +\n JSON.stringify(options, undefined, 2));\n }\n getChannelzInfo() {\n return {\n state: this.connectivityState,\n trace: this.channelzTrace,\n callTracker: this.callTracker,\n children: this.childrenTracker.getChildLists(),\n target: this.subchannelAddressString,\n };\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n refTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'subchannel_refcount', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n handleBackoffTimer() {\n if (this.continueConnecting) {\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.CONNECTING);\n }\n else {\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.IDLE);\n }\n }\n /**\n * Start a backoff timer with the current nextBackoff timeout\n */\n startBackoff() {\n this.backoffTimeout.runOnce();\n }\n stopBackoff() {\n this.backoffTimeout.stop();\n this.backoffTimeout.reset();\n }\n startConnectingInternal() {\n let options = this.options;\n if (options['grpc.keepalive_time_ms']) {\n const adjustedKeepaliveTime = Math.min(this.keepaliveTime, KEEPALIVE_MAX_TIME_MS);\n options = Object.assign(Object.assign({}, options), { 'grpc.keepalive_time_ms': adjustedKeepaliveTime });\n }\n this.connector\n .connect(this.subchannelAddress, this.credentials, options)\n .then(transport => {\n if (this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING], connectivity_state_1.ConnectivityState.READY)) {\n this.transport = transport;\n if (this.channelzEnabled) {\n this.childrenTracker.refChild(transport.getChannelzRef());\n }\n transport.addDisconnectListener(tooManyPings => {\n this.transitionToState([connectivity_state_1.ConnectivityState.READY], connectivity_state_1.ConnectivityState.IDLE);\n if (tooManyPings && this.keepaliveTime > 0) {\n this.keepaliveTime *= 2;\n logging.log(constants_1.LogVerbosity.ERROR, `Connection to ${(0, uri_parser_1.uriToString)(this.channelTarget)} at ${this.subchannelAddressString} rejected by server because of excess pings. Increasing ping interval to ${this.keepaliveTime} ms`);\n }\n });\n }\n else {\n /* If we can't transition from CONNECTING to READY here, we will\n * not be using this transport, so release its resources. */\n transport.shutdown();\n }\n }, error => {\n this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING], connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE, `${error}`);\n });\n }\n /**\n * Initiate a state transition from any element of oldStates to the new\n * state. If the current connectivityState is not in oldStates, do nothing.\n * @param oldStates The set of states to transition from\n * @param newState The state to transition to\n * @returns True if the state changed, false otherwise\n */\n transitionToState(oldStates, newState, errorMessage) {\n var _a, _b;\n if (oldStates.indexOf(this.connectivityState) === -1) {\n return false;\n }\n this.trace(connectivity_state_1.ConnectivityState[this.connectivityState] +\n ' -> ' +\n connectivity_state_1.ConnectivityState[newState]);\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Connectivity state change to ' + connectivity_state_1.ConnectivityState[newState]);\n }\n const previousState = this.connectivityState;\n this.connectivityState = newState;\n switch (newState) {\n case connectivity_state_1.ConnectivityState.READY:\n this.stopBackoff();\n break;\n case connectivity_state_1.ConnectivityState.CONNECTING:\n this.startBackoff();\n this.startConnectingInternal();\n this.continueConnecting = false;\n break;\n case connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE:\n if (this.channelzEnabled && this.transport) {\n this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n }\n (_a = this.transport) === null || _a === void 0 ? void 0 : _a.shutdown();\n this.transport = null;\n /* If the backoff timer has already ended by the time we get to the\n * TRANSIENT_FAILURE state, we want to immediately transition out of\n * TRANSIENT_FAILURE as though the backoff timer is ending right now */\n if (!this.backoffTimeout.isRunning()) {\n process.nextTick(() => {\n this.handleBackoffTimer();\n });\n }\n break;\n case connectivity_state_1.ConnectivityState.IDLE:\n if (this.channelzEnabled && this.transport) {\n this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n }\n (_b = this.transport) === null || _b === void 0 ? void 0 : _b.shutdown();\n this.transport = null;\n break;\n default:\n throw new Error(`Invalid state: unknown ConnectivityState ${newState}`);\n }\n for (const listener of this.stateListeners) {\n listener(this, previousState, newState, this.keepaliveTime, errorMessage);\n }\n return true;\n }\n ref() {\n this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount + 1));\n this.refcount += 1;\n }\n unref() {\n this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount - 1));\n this.refcount -= 1;\n if (this.refcount === 0) {\n if (this.channelzEnabled) {\n this.channelzTrace.addTrace('CT_INFO', 'Shutting down');\n }\n if (this.channelzEnabled) {\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n process.nextTick(() => {\n this.transitionToState([connectivity_state_1.ConnectivityState.CONNECTING, connectivity_state_1.ConnectivityState.READY], connectivity_state_1.ConnectivityState.IDLE);\n });\n }\n }\n unrefIfOneRef() {\n if (this.refcount === 1) {\n this.unref();\n return true;\n }\n return false;\n }\n createCall(metadata, host, method, listener) {\n if (!this.transport) {\n throw new Error('Cannot create call, subchannel not READY');\n }\n let statsTracker;\n if (this.channelzEnabled) {\n this.callTracker.addCallStarted();\n this.streamTracker.addCallStarted();\n statsTracker = {\n onCallEnd: status => {\n if (status.code === constants_1.Status.OK) {\n this.callTracker.addCallSucceeded();\n }\n else {\n this.callTracker.addCallFailed();\n }\n },\n };\n }\n else {\n statsTracker = {};\n }\n return this.transport.createCall(metadata, host, method, listener, statsTracker);\n }\n /**\n * If the subchannel is currently IDLE, start connecting and switch to the\n * CONNECTING state. If the subchannel is current in TRANSIENT_FAILURE,\n * the next time it would transition to IDLE, start connecting again instead.\n * Otherwise, do nothing.\n */\n startConnecting() {\n process.nextTick(() => {\n /* First, try to transition from IDLE to connecting. If that doesn't happen\n * because the state is not currently IDLE, check if it is\n * TRANSIENT_FAILURE, and if so indicate that it should go back to\n * connecting after the backoff timer ends. Otherwise do nothing */\n if (!this.transitionToState([connectivity_state_1.ConnectivityState.IDLE], connectivity_state_1.ConnectivityState.CONNECTING)) {\n if (this.connectivityState === connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE) {\n this.continueConnecting = true;\n }\n }\n });\n }\n /**\n * Get the subchannel's current connectivity state.\n */\n getConnectivityState() {\n return this.connectivityState;\n }\n /**\n * Add a listener function to be called whenever the subchannel's\n * connectivity state changes.\n * @param listener\n */\n addConnectivityStateListener(listener) {\n this.stateListeners.add(listener);\n }\n /**\n * Remove a listener previously added with `addConnectivityStateListener`\n * @param listener A reference to a function previously passed to\n * `addConnectivityStateListener`\n */\n removeConnectivityStateListener(listener) {\n this.stateListeners.delete(listener);\n }\n /**\n * Reset the backoff timeout, and immediately start connecting if in backoff.\n */\n resetBackoff() {\n process.nextTick(() => {\n this.backoffTimeout.reset();\n this.transitionToState([connectivity_state_1.ConnectivityState.TRANSIENT_FAILURE], connectivity_state_1.ConnectivityState.CONNECTING);\n });\n }\n getAddress() {\n return this.subchannelAddressString;\n }\n getChannelzRef() {\n return this.channelzRef;\n }\n isHealthy() {\n return true;\n }\n addHealthStateWatcher(listener) {\n // Do nothing with the listener\n }\n removeHealthStateWatcher(listener) {\n // Do nothing with the listener\n }\n getRealSubchannel() {\n return this;\n }\n realSubchannelEquals(other) {\n return other.getRealSubchannel() === this;\n }\n throttleKeepalive(newKeepaliveTime) {\n if (newKeepaliveTime > this.keepaliveTime) {\n this.keepaliveTime = newKeepaliveTime;\n }\n }\n}\nexports.Subchannel = Subchannel;\n//# sourceMappingURL=subchannel.js.map","\"use strict\";\n/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultRootsData = exports.CIPHER_SUITES = void 0;\nconst fs = require(\"fs\");\nexports.CIPHER_SUITES = process.env.GRPC_SSL_CIPHER_SUITES;\nconst DEFAULT_ROOTS_FILE_PATH = process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;\nlet defaultRootsData = null;\nfunction getDefaultRootsData() {\n if (DEFAULT_ROOTS_FILE_PATH) {\n if (defaultRootsData === null) {\n defaultRootsData = fs.readFileSync(DEFAULT_ROOTS_FILE_PATH);\n }\n return defaultRootsData;\n }\n return null;\n}\nexports.getDefaultRootsData = getDefaultRootsData;\n//# sourceMappingURL=tls-helpers.js.map","\"use strict\";\n/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http2SubchannelConnector = void 0;\nconst http2 = require(\"http2\");\nconst tls_1 = require(\"tls\");\nconst channelz_1 = require(\"./channelz\");\nconst constants_1 = require(\"./constants\");\nconst http_proxy_1 = require(\"./http_proxy\");\nconst logging = require(\"./logging\");\nconst resolver_1 = require(\"./resolver\");\nconst subchannel_address_1 = require(\"./subchannel-address\");\nconst uri_parser_1 = require(\"./uri-parser\");\nconst net = require(\"net\");\nconst subchannel_call_1 = require(\"./subchannel-call\");\nconst call_number_1 = require(\"./call-number\");\nconst TRACER_NAME = 'transport';\nconst FLOW_CONTROL_TRACER_NAME = 'transport_flowctrl';\nconst clientVersion = require('../../package.json').version;\nconst { HTTP2_HEADER_AUTHORITY, HTTP2_HEADER_CONTENT_TYPE, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_TE, HTTP2_HEADER_USER_AGENT, } = http2.constants;\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst tooManyPingsData = Buffer.from('too_many_pings', 'ascii');\nclass Http2Transport {\n constructor(session, subchannelAddress, options, \n /**\n * Name of the remote server, if it is not the same as the subchannel\n * address, i.e. if connecting through an HTTP CONNECT proxy.\n */\n remoteName) {\n this.session = session;\n this.remoteName = remoteName;\n /**\n * The amount of time in between sending pings\n */\n this.keepaliveTimeMs = -1;\n /**\n * The amount of time to wait for an acknowledgement after sending a ping\n */\n this.keepaliveTimeoutMs = KEEPALIVE_TIMEOUT_MS;\n /**\n * Timer reference for timeout that indicates when to send the next ping\n */\n this.keepaliveTimerId = null;\n /**\n * Indicates that the keepalive timer ran out while there were no active\n * calls, and a ping should be sent the next time a call starts.\n */\n this.pendingSendKeepalivePing = false;\n /**\n * Timer reference tracking when the most recent ping will be considered lost\n */\n this.keepaliveTimeoutId = null;\n /**\n * Indicates whether keepalive pings should be sent without any active calls\n */\n this.keepaliveWithoutCalls = false;\n this.activeCalls = new Set();\n this.disconnectListeners = [];\n this.disconnectHandled = false;\n this.channelzEnabled = true;\n this.streamTracker = new channelz_1.ChannelzCallTracker();\n this.keepalivesSent = 0;\n this.messagesSent = 0;\n this.messagesReceived = 0;\n this.lastMessageSentTimestamp = null;\n this.lastMessageReceivedTimestamp = null;\n /* Populate subchannelAddressString and channelzRef before doing anything\n * else, because they are used in the trace methods. */\n this.subchannelAddressString = (0, subchannel_address_1.subchannelAddressToString)(subchannelAddress);\n if (options['grpc.enable_channelz'] === 0) {\n this.channelzEnabled = false;\n }\n this.channelzRef = (0, channelz_1.registerChannelzSocket)(this.subchannelAddressString, () => this.getChannelzInfo(), this.channelzEnabled);\n // Build user-agent string.\n this.userAgent = [\n options['grpc.primary_user_agent'],\n `grpc-node-js/${clientVersion}`,\n options['grpc.secondary_user_agent'],\n ]\n .filter(e => e)\n .join(' '); // remove falsey values first\n if ('grpc.keepalive_time_ms' in options) {\n this.keepaliveTimeMs = options['grpc.keepalive_time_ms'];\n }\n if ('grpc.keepalive_timeout_ms' in options) {\n this.keepaliveTimeoutMs = options['grpc.keepalive_timeout_ms'];\n }\n if ('grpc.keepalive_permit_without_calls' in options) {\n this.keepaliveWithoutCalls =\n options['grpc.keepalive_permit_without_calls'] === 1;\n }\n else {\n this.keepaliveWithoutCalls = false;\n }\n session.once('close', () => {\n this.trace('session closed');\n this.stopKeepalivePings();\n this.handleDisconnect();\n });\n session.once('goaway', (errorCode, lastStreamID, opaqueData) => {\n let tooManyPings = false;\n /* See the last paragraph of\n * https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md#basic-keepalive */\n if (errorCode === http2.constants.NGHTTP2_ENHANCE_YOUR_CALM &&\n opaqueData &&\n opaqueData.equals(tooManyPingsData)) {\n tooManyPings = true;\n }\n this.trace('connection closed by GOAWAY with code ' + errorCode + ' and data ' + (opaqueData === null || opaqueData === void 0 ? void 0 : opaqueData.toString()));\n this.reportDisconnectToOwner(tooManyPings);\n });\n session.once('error', error => {\n /* Do nothing here. Any error should also trigger a close event, which is\n * where we want to handle that. */\n this.trace('connection closed with error ' + error.message);\n });\n if (logging.isTracerEnabled(TRACER_NAME)) {\n session.on('remoteSettings', (settings) => {\n this.trace('new settings received' +\n (this.session !== session ? ' on the old connection' : '') +\n ': ' +\n JSON.stringify(settings));\n });\n session.on('localSettings', (settings) => {\n this.trace('local settings acknowledged by remote' +\n (this.session !== session ? ' on the old connection' : '') +\n ': ' +\n JSON.stringify(settings));\n });\n }\n /* Start the keepalive timer last, because this can trigger trace logs,\n * which should only happen after everything else is set up. */\n if (this.keepaliveWithoutCalls) {\n this.maybeStartKeepalivePingTimer();\n }\n }\n getChannelzInfo() {\n var _a, _b, _c;\n const sessionSocket = this.session.socket;\n const remoteAddress = sessionSocket.remoteAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.remoteAddress, sessionSocket.remotePort)\n : null;\n const localAddress = sessionSocket.localAddress\n ? (0, subchannel_address_1.stringToSubchannelAddress)(sessionSocket.localAddress, sessionSocket.localPort)\n : null;\n let tlsInfo;\n if (this.session.encrypted) {\n const tlsSocket = sessionSocket;\n const cipherInfo = tlsSocket.getCipher();\n const certificate = tlsSocket.getCertificate();\n const peerCertificate = tlsSocket.getPeerCertificate();\n tlsInfo = {\n cipherSuiteStandardName: (_a = cipherInfo.standardName) !== null && _a !== void 0 ? _a : null,\n cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n localCertificate: certificate && 'raw' in certificate ? certificate.raw : null,\n remoteCertificate: peerCertificate && 'raw' in peerCertificate\n ? peerCertificate.raw\n : null,\n };\n }\n else {\n tlsInfo = null;\n }\n const socketInfo = {\n remoteAddress: remoteAddress,\n localAddress: localAddress,\n security: tlsInfo,\n remoteName: this.remoteName,\n streamsStarted: this.streamTracker.callsStarted,\n streamsSucceeded: this.streamTracker.callsSucceeded,\n streamsFailed: this.streamTracker.callsFailed,\n messagesSent: this.messagesSent,\n messagesReceived: this.messagesReceived,\n keepAlivesSent: this.keepalivesSent,\n lastLocalStreamCreatedTimestamp: this.streamTracker.lastCallStartedTimestamp,\n lastRemoteStreamCreatedTimestamp: null,\n lastMessageSentTimestamp: this.lastMessageSentTimestamp,\n lastMessageReceivedTimestamp: this.lastMessageReceivedTimestamp,\n localFlowControlWindow: (_b = this.session.state.localWindowSize) !== null && _b !== void 0 ? _b : null,\n remoteFlowControlWindow: (_c = this.session.state.remoteWindowSize) !== null && _c !== void 0 ? _c : null,\n };\n return socketInfo;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n keepaliveTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'keepalive', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n flowControlTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, FLOW_CONTROL_TRACER_NAME, '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n internalsTrace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, 'transport_internals', '(' +\n this.channelzRef.id +\n ') ' +\n this.subchannelAddressString +\n ' ' +\n text);\n }\n /**\n * Indicate to the owner of this object that this transport should no longer\n * be used. That happens if the connection drops, or if the server sends a\n * GOAWAY.\n * @param tooManyPings If true, this was triggered by a GOAWAY with data\n * indicating that the session was closed becaues the client sent too many\n * pings.\n * @returns\n */\n reportDisconnectToOwner(tooManyPings) {\n if (this.disconnectHandled) {\n return;\n }\n this.disconnectHandled = true;\n this.disconnectListeners.forEach(listener => listener(tooManyPings));\n }\n /**\n * Handle connection drops, but not GOAWAYs.\n */\n handleDisconnect() {\n this.reportDisconnectToOwner(false);\n /* Give calls an event loop cycle to finish naturally before reporting the\n * disconnnection to them. */\n setImmediate(() => {\n for (const call of this.activeCalls) {\n call.onDisconnect();\n }\n });\n }\n addDisconnectListener(listener) {\n this.disconnectListeners.push(listener);\n }\n clearKeepaliveTimer() {\n if (!this.keepaliveTimerId) {\n return;\n }\n clearTimeout(this.keepaliveTimerId);\n this.keepaliveTimerId = null;\n }\n clearKeepaliveTimeout() {\n if (!this.keepaliveTimeoutId) {\n return;\n }\n clearTimeout(this.keepaliveTimeoutId);\n this.keepaliveTimeoutId = null;\n }\n canSendPing() {\n return (this.keepaliveTimeMs > 0 &&\n (this.keepaliveWithoutCalls || this.activeCalls.size > 0));\n }\n maybeSendPing() {\n var _a, _b;\n this.clearKeepaliveTimer();\n if (!this.canSendPing()) {\n this.pendingSendKeepalivePing = true;\n return;\n }\n if (this.channelzEnabled) {\n this.keepalivesSent += 1;\n }\n this.keepaliveTrace('Sending ping with timeout ' + this.keepaliveTimeoutMs + 'ms');\n if (!this.keepaliveTimeoutId) {\n this.keepaliveTimeoutId = setTimeout(() => {\n this.keepaliveTrace('Ping timeout passed without response');\n this.handleDisconnect();\n }, this.keepaliveTimeoutMs);\n (_b = (_a = this.keepaliveTimeoutId).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n try {\n this.session.ping((err, duration, payload) => {\n if (err) {\n this.keepaliveTrace('Ping failed with error ' + err.message);\n this.handleDisconnect();\n }\n this.keepaliveTrace('Received ping response');\n this.clearKeepaliveTimeout();\n this.maybeStartKeepalivePingTimer();\n });\n }\n catch (e) {\n /* If we fail to send a ping, the connection is no longer functional, so\n * we should discard it. */\n this.handleDisconnect();\n }\n }\n /**\n * Starts the keepalive ping timer if appropriate. If the timer already ran\n * out while there were no active requests, instead send a ping immediately.\n * If the ping timer is already running or a ping is currently in flight,\n * instead do nothing and wait for them to resolve.\n */\n maybeStartKeepalivePingTimer() {\n var _a, _b;\n if (!this.canSendPing()) {\n return;\n }\n if (this.pendingSendKeepalivePing) {\n this.pendingSendKeepalivePing = false;\n this.maybeSendPing();\n }\n else if (!this.keepaliveTimerId && !this.keepaliveTimeoutId) {\n this.keepaliveTrace('Starting keepalive timer for ' + this.keepaliveTimeMs + 'ms');\n this.keepaliveTimerId = (_b = (_a = setTimeout(() => {\n this.maybeSendPing();\n }, this.keepaliveTimeMs)).unref) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /* Otherwise, there is already either a keepalive timer or a ping pending,\n * wait for those to resolve. */\n }\n stopKeepalivePings() {\n if (this.keepaliveTimerId) {\n clearTimeout(this.keepaliveTimerId);\n this.keepaliveTimerId = null;\n }\n this.clearKeepaliveTimeout();\n }\n removeActiveCall(call) {\n this.activeCalls.delete(call);\n if (this.activeCalls.size === 0) {\n this.session.unref();\n }\n }\n addActiveCall(call) {\n this.activeCalls.add(call);\n if (this.activeCalls.size === 1) {\n this.session.ref();\n if (!this.keepaliveWithoutCalls) {\n this.maybeStartKeepalivePingTimer();\n }\n }\n }\n createCall(metadata, host, method, listener, subchannelCallStatsTracker) {\n const headers = metadata.toHttp2Headers();\n headers[HTTP2_HEADER_AUTHORITY] = host;\n headers[HTTP2_HEADER_USER_AGENT] = this.userAgent;\n headers[HTTP2_HEADER_CONTENT_TYPE] = 'application/grpc';\n headers[HTTP2_HEADER_METHOD] = 'POST';\n headers[HTTP2_HEADER_PATH] = method;\n headers[HTTP2_HEADER_TE] = 'trailers';\n let http2Stream;\n /* In theory, if an error is thrown by session.request because session has\n * become unusable (e.g. because it has received a goaway), this subchannel\n * should soon see the corresponding close or goaway event anyway and leave\n * READY. But we have seen reports that this does not happen\n * (https://github.com/googleapis/nodejs-firestore/issues/1023#issuecomment-653204096)\n * so for defense in depth, we just discard the session when we see an\n * error here.\n */\n try {\n http2Stream = this.session.request(headers);\n }\n catch (e) {\n this.handleDisconnect();\n throw e;\n }\n this.flowControlTrace('local window size: ' +\n this.session.state.localWindowSize +\n ' remote window size: ' +\n this.session.state.remoteWindowSize);\n this.internalsTrace('session.closed=' +\n this.session.closed +\n ' session.destroyed=' +\n this.session.destroyed +\n ' session.socket.destroyed=' +\n this.session.socket.destroyed);\n let eventTracker;\n // eslint-disable-next-line prefer-const\n let call;\n if (this.channelzEnabled) {\n this.streamTracker.addCallStarted();\n eventTracker = {\n addMessageSent: () => {\n var _a;\n this.messagesSent += 1;\n this.lastMessageSentTimestamp = new Date();\n (_a = subchannelCallStatsTracker.addMessageSent) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n addMessageReceived: () => {\n var _a;\n this.messagesReceived += 1;\n this.lastMessageReceivedTimestamp = new Date();\n (_a = subchannelCallStatsTracker.addMessageReceived) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n onCallEnd: status => {\n var _a;\n (_a = subchannelCallStatsTracker.onCallEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, status);\n this.removeActiveCall(call);\n },\n onStreamEnd: success => {\n var _a;\n if (success) {\n this.streamTracker.addCallSucceeded();\n }\n else {\n this.streamTracker.addCallFailed();\n }\n (_a = subchannelCallStatsTracker.onStreamEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, success);\n },\n };\n }\n else {\n eventTracker = {\n addMessageSent: () => {\n var _a;\n (_a = subchannelCallStatsTracker.addMessageSent) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n addMessageReceived: () => {\n var _a;\n (_a = subchannelCallStatsTracker.addMessageReceived) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker);\n },\n onCallEnd: status => {\n var _a;\n (_a = subchannelCallStatsTracker.onCallEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, status);\n this.removeActiveCall(call);\n },\n onStreamEnd: success => {\n var _a;\n (_a = subchannelCallStatsTracker.onStreamEnd) === null || _a === void 0 ? void 0 : _a.call(subchannelCallStatsTracker, success);\n },\n };\n }\n call = new subchannel_call_1.Http2SubchannelCall(http2Stream, eventTracker, listener, this, (0, call_number_1.getNextCallNumber)());\n this.addActiveCall(call);\n return call;\n }\n getChannelzRef() {\n return this.channelzRef;\n }\n getPeerName() {\n return this.subchannelAddressString;\n }\n shutdown() {\n this.session.close();\n (0, channelz_1.unregisterChannelzRef)(this.channelzRef);\n }\n}\nclass Http2SubchannelConnector {\n constructor(channelTarget) {\n this.channelTarget = channelTarget;\n this.session = null;\n this.isShutdown = false;\n }\n trace(text) {\n logging.trace(constants_1.LogVerbosity.DEBUG, TRACER_NAME, (0, uri_parser_1.uriToString)(this.channelTarget) + ' ' + text);\n }\n createSession(address, credentials, options, proxyConnectionResult) {\n if (this.isShutdown) {\n return Promise.reject();\n }\n return new Promise((resolve, reject) => {\n var _a, _b, _c;\n let remoteName;\n if (proxyConnectionResult.realTarget) {\n remoteName = (0, uri_parser_1.uriToString)(proxyConnectionResult.realTarget);\n this.trace('creating HTTP/2 session through proxy to ' +\n (0, uri_parser_1.uriToString)(proxyConnectionResult.realTarget));\n }\n else {\n remoteName = null;\n this.trace('creating HTTP/2 session to ' + (0, subchannel_address_1.subchannelAddressToString)(address));\n }\n const targetAuthority = (0, resolver_1.getDefaultAuthority)((_a = proxyConnectionResult.realTarget) !== null && _a !== void 0 ? _a : this.channelTarget);\n let connectionOptions = credentials._getConnectionOptions() || {};\n connectionOptions.maxSendHeaderBlockLength = Number.MAX_SAFE_INTEGER;\n if ('grpc-node.max_session_memory' in options) {\n connectionOptions.maxSessionMemory =\n options['grpc-node.max_session_memory'];\n }\n else {\n /* By default, set a very large max session memory limit, to effectively\n * disable enforcement of the limit. Some testing indicates that Node's\n * behavior degrades badly when this limit is reached, so we solve that\n * by disabling the check entirely. */\n connectionOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n }\n let addressScheme = 'http://';\n if ('secureContext' in connectionOptions) {\n addressScheme = 'https://';\n // If provided, the value of grpc.ssl_target_name_override should be used\n // to override the target hostname when checking server identity.\n // This option is used for testing only.\n if (options['grpc.ssl_target_name_override']) {\n const sslTargetNameOverride = options['grpc.ssl_target_name_override'];\n connectionOptions.checkServerIdentity = (host, cert) => {\n return (0, tls_1.checkServerIdentity)(sslTargetNameOverride, cert);\n };\n connectionOptions.servername = sslTargetNameOverride;\n }\n else {\n const authorityHostname = (_c = (_b = (0, uri_parser_1.splitHostPort)(targetAuthority)) === null || _b === void 0 ? void 0 : _b.host) !== null && _c !== void 0 ? _c : 'localhost';\n // We want to always set servername to support SNI\n connectionOptions.servername = authorityHostname;\n }\n if (proxyConnectionResult.socket) {\n /* This is part of the workaround for\n * https://github.com/nodejs/node/issues/32922. Without that bug,\n * proxyConnectionResult.socket would always be a plaintext socket and\n * this would say\n * connectionOptions.socket = proxyConnectionResult.socket; */\n connectionOptions.createConnection = (authority, option) => {\n return proxyConnectionResult.socket;\n };\n }\n }\n else {\n /* In all but the most recent versions of Node, http2.connect does not use\n * the options when establishing plaintext connections, so we need to\n * establish that connection explicitly. */\n connectionOptions.createConnection = (authority, option) => {\n if (proxyConnectionResult.socket) {\n return proxyConnectionResult.socket;\n }\n else {\n /* net.NetConnectOpts is declared in a way that is more restrictive\n * than what net.connect will actually accept, so we use the type\n * assertion to work around that. */\n return net.connect(address);\n }\n };\n }\n connectionOptions = Object.assign(Object.assign(Object.assign({}, connectionOptions), address), { enableTrace: options['grpc-node.tls_enable_trace'] === 1 });\n /* http2.connect uses the options here:\n * https://github.com/nodejs/node/blob/70c32a6d190e2b5d7b9ff9d5b6a459d14e8b7d59/lib/internal/http2/core.js#L3028-L3036\n * The spread operator overides earlier values with later ones, so any port\n * or host values in the options will be used rather than any values extracted\n * from the first argument. In addition, the path overrides the host and port,\n * as documented for plaintext connections here:\n * https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener\n * and for TLS connections here:\n * https://nodejs.org/api/tls.html#tls_tls_connect_options_callback. In\n * earlier versions of Node, http2.connect passes these options to\n * tls.connect but not net.connect, so in the insecure case we still need\n * to set the createConnection option above to create the connection\n * explicitly. We cannot do that in the TLS case because http2.connect\n * passes necessary additional options to tls.connect.\n * The first argument just needs to be parseable as a URL and the scheme\n * determines whether the connection will be established over TLS or not.\n */\n const session = http2.connect(addressScheme + targetAuthority, connectionOptions);\n this.session = session;\n let errorMessage = 'Failed to connect';\n session.unref();\n session.once('connect', () => {\n session.removeAllListeners();\n resolve(new Http2Transport(session, address, options, remoteName));\n this.session = null;\n });\n session.once('close', () => {\n this.session = null;\n // Leave time for error event to happen before rejecting\n setImmediate(() => {\n reject(`${errorMessage} (${new Date().toISOString()})`);\n });\n });\n session.once('error', error => {\n errorMessage = error.message;\n this.trace('connection failed with error ' + errorMessage);\n });\n });\n }\n connect(address, credentials, options) {\n var _a, _b;\n if (this.isShutdown) {\n return Promise.reject();\n }\n /* Pass connection options through to the proxy so that it's able to\n * upgrade it's connection to support tls if needed.\n * This is a workaround for https://github.com/nodejs/node/issues/32922\n * See https://github.com/grpc/grpc-node/pull/1369 for more info. */\n const connectionOptions = credentials._getConnectionOptions() || {};\n if ('secureContext' in connectionOptions) {\n connectionOptions.ALPNProtocols = ['h2'];\n // If provided, the value of grpc.ssl_target_name_override should be used\n // to override the target hostname when checking server identity.\n // This option is used for testing only.\n if (options['grpc.ssl_target_name_override']) {\n const sslTargetNameOverride = options['grpc.ssl_target_name_override'];\n connectionOptions.checkServerIdentity = (host, cert) => {\n return (0, tls_1.checkServerIdentity)(sslTargetNameOverride, cert);\n };\n connectionOptions.servername = sslTargetNameOverride;\n }\n else {\n if ('grpc.http_connect_target' in options) {\n /* This is more or less how servername will be set in createSession\n * if a connection is successfully established through the proxy.\n * If the proxy is not used, these connectionOptions are discarded\n * anyway */\n const targetPath = (0, resolver_1.getDefaultAuthority)((_a = (0, uri_parser_1.parseUri)(options['grpc.http_connect_target'])) !== null && _a !== void 0 ? _a : {\n path: 'localhost',\n });\n const hostPort = (0, uri_parser_1.splitHostPort)(targetPath);\n connectionOptions.servername = (_b = hostPort === null || hostPort === void 0 ? void 0 : hostPort.host) !== null && _b !== void 0 ? _b : targetPath;\n }\n }\n if (options['grpc-node.tls_enable_trace']) {\n connectionOptions.enableTrace = true;\n }\n }\n return (0, http_proxy_1.getProxiedConnection)(address, options, connectionOptions).then(result => this.createSession(address, credentials, options, result));\n }\n shutdown() {\n var _a;\n this.isShutdown = true;\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.close();\n this.session = null;\n }\n}\nexports.Http2SubchannelConnector = Http2SubchannelConnector;\n//# sourceMappingURL=transport.js.map","\"use strict\";\n/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uriToString = exports.combineHostPort = exports.splitHostPort = exports.parseUri = void 0;\n/*\n * The groups correspond to URI parts as follows:\n * 1. scheme\n * 2. authority\n * 3. path\n */\nconst URI_REGEX = /^(?:([A-Za-z0-9+.-]+):)?(?:\\/\\/([^/]*)\\/)?(.+)$/;\nfunction parseUri(uriString) {\n const parsedUri = URI_REGEX.exec(uriString);\n if (parsedUri === null) {\n return null;\n }\n return {\n scheme: parsedUri[1],\n authority: parsedUri[2],\n path: parsedUri[3],\n };\n}\nexports.parseUri = parseUri;\nconst NUMBER_REGEX = /^\\d+$/;\nfunction splitHostPort(path) {\n if (path.startsWith('[')) {\n const hostEnd = path.indexOf(']');\n if (hostEnd === -1) {\n return null;\n }\n const host = path.substring(1, hostEnd);\n /* Only an IPv6 address should be in bracketed notation, and an IPv6\n * address should have at least one colon */\n if (host.indexOf(':') === -1) {\n return null;\n }\n if (path.length > hostEnd + 1) {\n if (path[hostEnd + 1] === ':') {\n const portString = path.substring(hostEnd + 2);\n if (NUMBER_REGEX.test(portString)) {\n return {\n host: host,\n port: +portString,\n };\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n }\n else {\n return {\n host,\n };\n }\n }\n else {\n const splitPath = path.split(':');\n /* Exactly one colon means that this is host:port. Zero colons means that\n * there is no port. And multiple colons means that this is a bare IPv6\n * address with no port */\n if (splitPath.length === 2) {\n if (NUMBER_REGEX.test(splitPath[1])) {\n return {\n host: splitPath[0],\n port: +splitPath[1],\n };\n }\n else {\n return null;\n }\n }\n else {\n return {\n host: path,\n };\n }\n }\n}\nexports.splitHostPort = splitHostPort;\nfunction combineHostPort(hostPort) {\n if (hostPort.port === undefined) {\n return hostPort.host;\n }\n else {\n // Only an IPv6 host should include a colon\n if (hostPort.host.includes(':')) {\n return `[${hostPort.host}]:${hostPort.port}`;\n }\n else {\n return `${hostPort.host}:${hostPort.port}`;\n }\n }\n}\nexports.combineHostPort = combineHostPort;\nfunction uriToString(uri) {\n let result = '';\n if (uri.scheme !== undefined) {\n result += uri.scheme + ':';\n }\n if (uri.authority !== undefined) {\n result += '//' + uri.authority + '/';\n }\n result += uri.path;\n return result;\n}\nexports.uriToString = uriToString;\n//# sourceMappingURL=uri-parser.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadFileDescriptorSetFromObject = exports.loadFileDescriptorSetFromBuffer = exports.fromJSON = exports.loadSync = exports.load = exports.isAnyExtension = exports.Long = void 0;\nconst camelCase = require(\"lodash.camelcase\");\nconst Protobuf = require(\"protobufjs\");\nconst descriptor = require(\"protobufjs/ext/descriptor\");\nconst util_1 = require(\"./util\");\nconst Long = require(\"long\");\nexports.Long = Long;\nfunction isAnyExtension(obj) {\n return ('@type' in obj) && (typeof obj['@type'] === 'string');\n}\nexports.isAnyExtension = isAnyExtension;\nconst descriptorOptions = {\n longs: String,\n enums: String,\n bytes: String,\n defaults: true,\n oneofs: true,\n json: true,\n};\nfunction joinName(baseName, name) {\n if (baseName === '') {\n return name;\n }\n else {\n return baseName + '.' + name;\n }\n}\nfunction isHandledReflectionObject(obj) {\n return (obj instanceof Protobuf.Service ||\n obj instanceof Protobuf.Type ||\n obj instanceof Protobuf.Enum);\n}\nfunction isNamespaceBase(obj) {\n return obj instanceof Protobuf.Namespace || obj instanceof Protobuf.Root;\n}\nfunction getAllHandledReflectionObjects(obj, parentName) {\n const objName = joinName(parentName, obj.name);\n if (isHandledReflectionObject(obj)) {\n return [[objName, obj]];\n }\n else {\n if (isNamespaceBase(obj) && typeof obj.nested !== 'undefined') {\n return Object.keys(obj.nested)\n .map(name => {\n return getAllHandledReflectionObjects(obj.nested[name], objName);\n })\n .reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);\n }\n }\n return [];\n}\nfunction createDeserializer(cls, options) {\n return function deserialize(argBuf) {\n return cls.toObject(cls.decode(argBuf), options);\n };\n}\nfunction createSerializer(cls) {\n return function serialize(arg) {\n if (Array.isArray(arg)) {\n throw new Error(`Failed to serialize message: expected object with ${cls.name} structure, got array instead`);\n }\n const message = cls.fromObject(arg);\n return cls.encode(message).finish();\n };\n}\nfunction createMethodDefinition(method, serviceName, options, fileDescriptors) {\n /* This is only ever called after the corresponding root.resolveAll(), so we\n * can assume that the resolved request and response types are non-null */\n const requestType = method.resolvedRequestType;\n const responseType = method.resolvedResponseType;\n return {\n path: '/' + serviceName + '/' + method.name,\n requestStream: !!method.requestStream,\n responseStream: !!method.responseStream,\n requestSerialize: createSerializer(requestType),\n requestDeserialize: createDeserializer(requestType, options),\n responseSerialize: createSerializer(responseType),\n responseDeserialize: createDeserializer(responseType, options),\n // TODO(murgatroid99): Find a better way to handle this\n originalName: camelCase(method.name),\n requestType: createMessageDefinition(requestType, fileDescriptors),\n responseType: createMessageDefinition(responseType, fileDescriptors),\n };\n}\nfunction createServiceDefinition(service, name, options, fileDescriptors) {\n const def = {};\n for (const method of service.methodsArray) {\n def[method.name] = createMethodDefinition(method, name, options, fileDescriptors);\n }\n return def;\n}\nfunction createMessageDefinition(message, fileDescriptors) {\n const messageDescriptor = message.toDescriptor('proto3');\n return {\n format: 'Protocol Buffer 3 DescriptorProto',\n type: messageDescriptor.$type.toObject(messageDescriptor, descriptorOptions),\n fileDescriptorProtos: fileDescriptors,\n };\n}\nfunction createEnumDefinition(enumType, fileDescriptors) {\n const enumDescriptor = enumType.toDescriptor('proto3');\n return {\n format: 'Protocol Buffer 3 EnumDescriptorProto',\n type: enumDescriptor.$type.toObject(enumDescriptor, descriptorOptions),\n fileDescriptorProtos: fileDescriptors,\n };\n}\n/**\n * function createDefinition(obj: Protobuf.Service, name: string, options:\n * Options): ServiceDefinition; function createDefinition(obj: Protobuf.Type,\n * name: string, options: Options): MessageTypeDefinition; function\n * createDefinition(obj: Protobuf.Enum, name: string, options: Options):\n * EnumTypeDefinition;\n */\nfunction createDefinition(obj, name, options, fileDescriptors) {\n if (obj instanceof Protobuf.Service) {\n return createServiceDefinition(obj, name, options, fileDescriptors);\n }\n else if (obj instanceof Protobuf.Type) {\n return createMessageDefinition(obj, fileDescriptors);\n }\n else if (obj instanceof Protobuf.Enum) {\n return createEnumDefinition(obj, fileDescriptors);\n }\n else {\n throw new Error('Type mismatch in reflection object handling');\n }\n}\nfunction createPackageDefinition(root, options) {\n const def = {};\n root.resolveAll();\n const descriptorList = root.toDescriptor('proto3').file;\n const bufferList = descriptorList.map(value => Buffer.from(descriptor.FileDescriptorProto.encode(value).finish()));\n for (const [name, obj] of getAllHandledReflectionObjects(root, '')) {\n def[name] = createDefinition(obj, name, options, bufferList);\n }\n return def;\n}\nfunction createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options) {\n options = options || {};\n const root = Protobuf.Root.fromDescriptor(decodedDescriptorSet);\n root.resolveAll();\n return createPackageDefinition(root, options);\n}\n/**\n * Load a .proto file with the specified options.\n * @param filename One or multiple file paths to load. Can be an absolute path\n * or relative to an include path.\n * @param options.keepCase Preserve field names. The default is to change them\n * to camel case.\n * @param options.longs The type that should be used to represent `long` values.\n * Valid options are `Number` and `String`. Defaults to a `Long` object type\n * from a library.\n * @param options.enums The type that should be used to represent `enum` values.\n * The only valid option is `String`. Defaults to the numeric value.\n * @param options.bytes The type that should be used to represent `bytes`\n * values. Valid options are `Array` and `String`. The default is to use\n * `Buffer`.\n * @param options.defaults Set default values on output objects. Defaults to\n * `false`.\n * @param options.arrays Set empty arrays for missing array values even if\n * `defaults` is `false`. Defaults to `false`.\n * @param options.objects Set empty objects for missing object values even if\n * `defaults` is `false`. Defaults to `false`.\n * @param options.oneofs Set virtual oneof properties to the present field's\n * name\n * @param options.json Represent Infinity and NaN as strings in float fields,\n * and automatically decode google.protobuf.Any values.\n * @param options.includeDirs Paths to search for imported `.proto` files.\n */\nfunction load(filename, options) {\n return (0, util_1.loadProtosWithOptions)(filename, options).then(loadedRoot => {\n return createPackageDefinition(loadedRoot, options);\n });\n}\nexports.load = load;\nfunction loadSync(filename, options) {\n const loadedRoot = (0, util_1.loadProtosWithOptionsSync)(filename, options);\n return createPackageDefinition(loadedRoot, options);\n}\nexports.loadSync = loadSync;\nfunction fromJSON(json, options) {\n options = options || {};\n const loadedRoot = Protobuf.Root.fromJSON(json);\n loadedRoot.resolveAll();\n return createPackageDefinition(loadedRoot, options);\n}\nexports.fromJSON = fromJSON;\nfunction loadFileDescriptorSetFromBuffer(descriptorSet, options) {\n const decodedDescriptorSet = descriptor.FileDescriptorSet.decode(descriptorSet);\n return createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options);\n}\nexports.loadFileDescriptorSetFromBuffer = loadFileDescriptorSetFromBuffer;\nfunction loadFileDescriptorSetFromObject(descriptorSet, options) {\n const decodedDescriptorSet = descriptor.FileDescriptorSet.fromObject(descriptorSet);\n return createPackageDefinitionFromDescriptorSet(decodedDescriptorSet, options);\n}\nexports.loadFileDescriptorSetFromObject = loadFileDescriptorSetFromObject;\n(0, util_1.addCommonProtos)();\n//# sourceMappingURL=index.js.map","\"use strict\";\n/**\n * @license\n * Copyright 2018 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addCommonProtos = exports.loadProtosWithOptionsSync = exports.loadProtosWithOptions = void 0;\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst Protobuf = require(\"protobufjs\");\nfunction addIncludePathResolver(root, includePaths) {\n const originalResolvePath = root.resolvePath;\n root.resolvePath = (origin, target) => {\n if (path.isAbsolute(target)) {\n return target;\n }\n for (const directory of includePaths) {\n const fullPath = path.join(directory, target);\n try {\n fs.accessSync(fullPath, fs.constants.R_OK);\n return fullPath;\n }\n catch (err) {\n continue;\n }\n }\n process.emitWarning(`${target} not found in any of the include paths ${includePaths}`);\n return originalResolvePath(origin, target);\n };\n}\nasync function loadProtosWithOptions(filename, options) {\n const root = new Protobuf.Root();\n options = options || {};\n if (!!options.includeDirs) {\n if (!Array.isArray(options.includeDirs)) {\n return Promise.reject(new Error('The includeDirs option must be an array'));\n }\n addIncludePathResolver(root, options.includeDirs);\n }\n const loadedRoot = await root.load(filename, options);\n loadedRoot.resolveAll();\n return loadedRoot;\n}\nexports.loadProtosWithOptions = loadProtosWithOptions;\nfunction loadProtosWithOptionsSync(filename, options) {\n const root = new Protobuf.Root();\n options = options || {};\n if (!!options.includeDirs) {\n if (!Array.isArray(options.includeDirs)) {\n throw new Error('The includeDirs option must be an array');\n }\n addIncludePathResolver(root, options.includeDirs);\n }\n const loadedRoot = root.loadSync(filename, options);\n loadedRoot.resolveAll();\n return loadedRoot;\n}\nexports.loadProtosWithOptionsSync = loadProtosWithOptionsSync;\n/**\n * Load Google's well-known proto files that aren't exposed by Protobuf.js.\n */\nfunction addCommonProtos() {\n // Protobuf.js exposes: any, duration, empty, field_mask, struct, timestamp,\n // and wrappers. compiler/plugin is excluded in Protobuf.js and here.\n // Using constant strings for compatibility with tools like Webpack\n const apiDescriptor = require('protobufjs/google/protobuf/api.json');\n const descriptorDescriptor = require('protobufjs/google/protobuf/descriptor.json');\n const sourceContextDescriptor = require('protobufjs/google/protobuf/source_context.json');\n const typeDescriptor = require('protobufjs/google/protobuf/type.json');\n Protobuf.common('api', apiDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('descriptor', descriptorDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('source_context', sourceContextDescriptor.nested.google.nested.protobuf.nested);\n Protobuf.common('type', typeDescriptor.nested.google.nested.protobuf.nested);\n}\nexports.addCommonProtos = addCommonProtos;\n//# sourceMappingURL=util.js.map","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n /* istanbul ignore if */\r\n if (typeof functionParams === \"string\") {\r\n functionName = functionParams;\r\n functionParams = undefined;\r\n }\r\n\r\n var body = [];\r\n\r\n /**\r\n * Appends code to the function's body or finishes generation.\r\n * @typedef Codegen\r\n * @type {function}\r\n * @param {string|Object.} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n * @param {...*} [formatParams] Format parameters\r\n * @returns {Codegen|Function} Itself or the generated function if finished\r\n * @throws {Error} If format parameter counts do not match\r\n */\r\n\r\n function Codegen(formatStringOrScope) {\r\n // note that explicit array handling below makes this ~50% faster\r\n\r\n // finish the function\r\n if (typeof formatStringOrScope !== \"string\") {\r\n var source = toString();\r\n if (codegen.verbose)\r\n console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n source = \"return \" + source;\r\n if (formatStringOrScope) {\r\n var scopeKeys = Object.keys(formatStringOrScope),\r\n scopeParams = new Array(scopeKeys.length + 1),\r\n scopeValues = new Array(scopeKeys.length),\r\n scopeOffset = 0;\r\n while (scopeOffset < scopeKeys.length) {\r\n scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n }\r\n scopeParams[scopeOffset] = source;\r\n return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n }\r\n return Function(source)(); // eslint-disable-line no-new-func\r\n }\r\n\r\n // otherwise append to body\r\n var formatParams = new Array(arguments.length - 1),\r\n formatOffset = 0;\r\n while (formatOffset < formatParams.length)\r\n formatParams[formatOffset] = arguments[++formatOffset];\r\n formatOffset = 0;\r\n formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n var value = formatParams[formatOffset++];\r\n switch ($1) {\r\n case \"d\": case \"f\": return String(Number(value));\r\n case \"i\": return String(Math.floor(value));\r\n case \"j\": return JSON.stringify(value);\r\n case \"s\": return String(value);\r\n }\r\n return \"%\";\r\n });\r\n if (formatOffset !== formatParams.length)\r\n throw Error(\"parameter count mismatch\");\r\n body.push(formatStringOrScope);\r\n return Codegen;\r\n }\r\n\r\n function toString(functionNameOverride) {\r\n return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n \" + body.join(\"\\n \") + \"\\n}\";\r\n }\r\n\r\n Codegen.toString = toString;\r\n return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n inquire = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n if (typeof options === \"function\") {\r\n callback = options;\r\n options = {};\r\n } else if (!options)\r\n options = {};\r\n\r\n if (!callback)\r\n return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n if (!options.xhr && fs && fs.readFile)\r\n return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n return err && typeof XMLHttpRequest !== \"undefined\"\r\n ? fetch.xhr(filename, options, callback)\r\n : err\r\n ? callback(err)\r\n : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n });\r\n\r\n // use the XHR version otherwise.\r\n return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n if (xhr.readyState !== 4)\r\n return undefined;\r\n\r\n // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n // reliably distinguished from an actually empty file for security reasons. feel free\r\n // to send a pull request if you are aware of a solution.\r\n if (xhr.status !== 0 && xhr.status !== 200)\r\n return callback(Error(\"status \" + xhr.status));\r\n\r\n // if binary data is expected, make sure that some sort of array is returned, even if\r\n // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n if (options.binary) {\r\n var buffer = xhr.response;\r\n if (!buffer) {\r\n buffer = [];\r\n for (var i = 0; i < xhr.responseText.length; ++i)\r\n buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n }\r\n return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n }\r\n return callback(null, xhr.responseText);\r\n };\r\n\r\n if (options.binary) {\r\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n if (\"overrideMimeType\" in xhr)\r\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n xhr.responseType = \"arraybuffer\";\r\n }\r\n\r\n xhr.open(\"GET\", filename);\r\n xhr.send();\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n path = path.replace(/\\\\/g, \"/\")\r\n .replace(/\\/{2,}/g, \"/\");\r\n var parts = path.split(\"/\"),\r\n absolute = isAbsolute(path),\r\n prefix = \"\";\r\n if (absolute)\r\n prefix = parts.shift() + \"/\";\r\n for (var i = 0; i < parts.length;) {\r\n if (parts[i] === \"..\") {\r\n if (i > 0 && parts[i - 1] !== \"..\")\r\n parts.splice(--i, 2);\r\n else if (absolute)\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n } else if (parts[i] === \".\")\r\n parts.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n if (!alreadyNormalized)\r\n includePath = normalize(includePath);\r\n if (isAbsolute(includePath))\r\n return includePath;\r\n if (!alreadyNormalized)\r\n originPath = normalize(originPath);\r\n return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams.js');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n if ((0, _wrapAsync.isAsync)(func)) {\n return function (...args /*, callback*/) {\n const callback = args.pop();\n const promise = func.apply(this, args);\n return handlePromise(promise, callback);\n };\n }\n\n return (0, _initialParams2.default)(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if (result && typeof result.then === 'function') {\n return handlePromise(result, callback);\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction handlePromise(promise, callback) {\n return promise.then(value => {\n invokeCallback(callback, null, value);\n }, err => {\n invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (err) {\n (0, _setImmediate2.default)(e => {\n throw e;\n }, err);\n }\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isArrayLike = require('./internal/isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _breakLoop = require('./internal/breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nvar _eachOfLimit = require('./eachOfLimit.js');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _once = require('./internal/once.js');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _onlyOnce = require('./internal/onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n callback = (0, _once2.default)(callback);\n var index = 0,\n completed = 0,\n { length } = coll,\n canceled = false;\n if (length === 0) {\n callback(null);\n }\n\n function iteratorCallback(err, value) {\n if (err === false) {\n canceled = true;\n }\n if (canceled === true) return;\n if (err) {\n callback(err);\n } else if (++completed === length || value === _breakLoop2.default) {\n callback(null);\n }\n }\n\n for (; index < length; index++) {\n iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback));\n }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nfunction eachOfGeneric(coll, iteratee, callback) {\n return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback);\n}\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dev.json is a file containing a valid json object config for dev environment\n * // dev.json is a file containing a valid json object config for test environment\n * // prod.json is a file containing a valid json object config for prod environment\n * // invalid.json is a file with a malformed json object\n *\n * let configs = {}; //global variable\n * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'};\n * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'};\n *\n * // asynchronous function that reads a json file and parses the contents as json object\n * function parseFile(file, key, callback) {\n * fs.readFile(file, \"utf8\", function(err, data) {\n * if (err) return calback(err);\n * try {\n * configs[key] = JSON.parse(data);\n * } catch (e) {\n * return callback(e);\n * }\n * callback();\n * });\n * }\n *\n * // Using callbacks\n * async.forEachOf(validConfigFileMap, parseFile, function (err) {\n * if (err) {\n * console.error(err);\n * } else {\n * console.log(configs);\n * // configs is now a map of JSON data, e.g.\n * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile, function (err) {\n * if (err) {\n * console.error(err);\n * // JSON parse error exception\n * } else {\n * console.log(configs);\n * }\n * });\n *\n * // Using Promises\n * async.forEachOf(validConfigFileMap, parseFile)\n * .then( () => {\n * console.log(configs);\n * // configs is now a map of JSON data, e.g.\n * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }).catch( err => {\n * console.error(err);\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile)\n * .then( () => {\n * console.log(configs);\n * }).catch( err => {\n * console.error(err);\n * // JSON parse error exception\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * let result = await async.forEachOf(validConfigFileMap, parseFile);\n * console.log(configs);\n * // configs is now a map of JSON data, e.g.\n * // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * //Error handing\n * async () => {\n * try {\n * let result = await async.forEachOf(invalidConfigFileMap, parseFile);\n * console.log(configs);\n * }\n * catch (err) {\n * console.log(err);\n * // JSON parse error exception\n * }\n * }\n *\n */\nfunction eachOf(coll, iteratee, callback) {\n var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;\n return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachOf, 3);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eachOfLimit2 = require('./internal/eachOfLimit.js');\n\nvar _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachOfLimit, 4);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eachOfLimit = require('./eachOfLimit.js');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time.\n *\n * @name eachOfSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\nfunction eachOfSeries(coll, iteratee, callback) {\n return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback);\n}\nexports.default = (0, _awaitify2.default)(eachOfSeries, 3);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eachOf = require('./eachOf.js');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _withoutIndex = require('./internal/withoutIndex.js');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Applies the function `iteratee` to each item in `coll`, in parallel.\n * The `iteratee` is called with an item from the list, and a callback for when\n * it has finished. If the `iteratee` passes an error to its `callback`, the\n * main `callback` (for the `each` function) is immediately called with the\n * error.\n *\n * Note, that since this function applies `iteratee` to each item in parallel,\n * there is no guarantee that the iteratee functions will complete in order.\n *\n * @name each\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEach\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to\n * each item in `coll`. Invoked with (item, callback).\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOf`.\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt'];\n * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt'];\n *\n * // asynchronous function that deletes a file\n * const deleteFile = function(file, callback) {\n * fs.unlink(file, callback);\n * };\n *\n * // Using callbacks\n * async.each(fileList, deleteFile, function(err) {\n * if( err ) {\n * console.log(err);\n * } else {\n * console.log('All files have been deleted successfully');\n * }\n * });\n *\n * // Error Handling\n * async.each(withMissingFileList, deleteFile, function(err){\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4/file2.txt does not exist\n * // dir1/file1.txt could have been deleted\n * });\n *\n * // Using Promises\n * async.each(fileList, deleteFile)\n * .then( () => {\n * console.log('All files have been deleted successfully');\n * }).catch( err => {\n * console.log(err);\n * });\n *\n * // Error Handling\n * async.each(fileList, deleteFile)\n * .then( () => {\n * console.log('All files have been deleted successfully');\n * }).catch( err => {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4/file2.txt does not exist\n * // dir1/file1.txt could have been deleted\n * });\n *\n * // Using async/await\n * async () => {\n * try {\n * await async.each(files, deleteFile);\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // Error Handling\n * async () => {\n * try {\n * await async.each(withMissingFileList, deleteFile);\n * }\n * catch (err) {\n * console.log(err);\n * // [ Error: ENOENT: no such file or directory ]\n * // since dir4/file2.txt does not exist\n * // dir1/file1.txt could have been deleted\n * }\n * }\n *\n */\nfunction eachLimit(coll, iteratee, callback) {\n return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachLimit, 3);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncEachOfLimit;\n\nvar _breakLoop = require('./breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// for async generators\nfunction asyncEachOfLimit(generator, limit, iteratee, callback) {\n let done = false;\n let canceled = false;\n let awaiting = false;\n let running = 0;\n let idx = 0;\n\n function replenish() {\n //console.log('replenish')\n if (running >= limit || awaiting || done) return;\n //console.log('replenish awaiting')\n awaiting = true;\n generator.next().then(({ value, done: iterDone }) => {\n //console.log('got value', value)\n if (canceled || done) return;\n awaiting = false;\n if (iterDone) {\n done = true;\n if (running <= 0) {\n //console.log('done nextCb')\n callback(null);\n }\n return;\n }\n running++;\n iteratee(value, idx, iterateeCallback);\n idx++;\n replenish();\n }).catch(handleError);\n }\n\n function iterateeCallback(err, result) {\n //console.log('iterateeCallback')\n running -= 1;\n if (canceled) return;\n if (err) return handleError(err);\n\n if (err === false) {\n done = true;\n canceled = true;\n return;\n }\n\n if (result === _breakLoop2.default || done && running <= 0) {\n done = true;\n //console.log('done iterCb')\n return callback(null);\n }\n replenish();\n }\n\n function handleError(err) {\n if (canceled) return;\n awaiting = false;\n done = true;\n callback(err);\n }\n\n replenish();\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = awaitify;\n// conditionally promisify a function.\n// only return a promise if a callback is omitted\nfunction awaitify(asyncFn, arity) {\n if (!arity) arity = asyncFn.length;\n if (!arity) throw new Error('arity is undefined');\n function awaitable(...args) {\n if (typeof args[arity - 1] === 'function') {\n return asyncFn.apply(this, args);\n }\n\n return new Promise((resolve, reject) => {\n args[arity - 1] = (err, ...cbArgs) => {\n if (err) return reject(err);\n resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]);\n };\n asyncFn.apply(this, args);\n });\n }\n\n return awaitable;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nconst breakLoop = {};\nexports.default = breakLoop;\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _once = require('./once.js');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _iterator = require('./iterator.js');\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _onlyOnce = require('./onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _asyncEachOfLimit = require('./asyncEachOfLimit.js');\n\nvar _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit);\n\nvar _breakLoop = require('./breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = limit => {\n return (obj, iteratee, callback) => {\n callback = (0, _once2.default)(callback);\n if (limit <= 0) {\n throw new RangeError('concurrency limit cannot be less than 1');\n }\n if (!obj) {\n return callback(null);\n }\n if ((0, _wrapAsync.isAsyncGenerator)(obj)) {\n return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback);\n }\n if ((0, _wrapAsync.isAsyncIterable)(obj)) {\n return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback);\n }\n var nextElem = (0, _iterator2.default)(obj);\n var done = false;\n var canceled = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n if (canceled) return;\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n } else if (err === false) {\n done = true;\n canceled = true;\n } else if (value === _breakLoop2.default || done && running <= 0) {\n done = true;\n return callback(null);\n } else if (!looping) {\n replenish();\n }\n }\n\n function replenish() {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n};\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll) {\n return coll[Symbol.iterator] && coll[Symbol.iterator]();\n};\n\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (fn) {\n return function (...args /*, callback*/) {\n var callback = args.pop();\n return fn.call(this, args, callback);\n };\n};\n\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isArrayLike;\nfunction isArrayLike(value) {\n return value && typeof value.length === 'number' && value.length >= 0 && value.length % 1 === 0;\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createIterator;\n\nvar _isArrayLike = require('./isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _getIterator = require('./getIterator.js');\n\nvar _getIterator2 = _interopRequireDefault(_getIterator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? { value: coll[i], key: i } : null;\n };\n}\n\nfunction createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done) return null;\n i++;\n return { value: item.value, key: i };\n };\n}\n\nfunction createObjectIterator(obj) {\n var okeys = obj ? Object.keys(obj) : [];\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n if (key === '__proto__') {\n return next();\n }\n return i < len ? { value: obj[key], key } : null;\n };\n}\n\nfunction createIterator(coll) {\n if ((0, _isArrayLike2.default)(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = (0, _getIterator2.default)(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = once;\nfunction once(fn) {\n function wrapper(...args) {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n }\n Object.assign(wrapper, fn);\n return wrapper;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n return function (...args) {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n };\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isArrayLike = require('./isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _awaitify2.default)((eachfn, tasks, callback) => {\n var results = (0, _isArrayLike2.default)(tasks) ? [] : {};\n\n eachfn(tasks, (task, key, taskCb) => {\n (0, _wrapAsync2.default)(task)((err, ...result) => {\n if (result.length < 2) {\n [result] = result;\n }\n results[key] = result;\n taskCb(err);\n });\n }, err => callback(err, results));\n}, 3);\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.fallback = fallback;\nexports.wrap = wrap;\n/* istanbul ignore file */\n\nvar hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n return (fn, ...args) => defer(() => fn(...args));\n}\n\nvar _defer;\n\nif (hasQueueMicrotask) {\n _defer = queueMicrotask;\n} else if (hasSetImmediate) {\n _defer = setImmediate;\n} else if (hasNextTick) {\n _defer = process.nextTick;\n} else {\n _defer = fallback;\n}\n\nexports.default = wrap(_defer);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _withoutIndex;\nfunction _withoutIndex(iteratee) {\n return (value, index, callback) => iteratee(value, callback);\n}\nmodule.exports = exports.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify.js');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAsync(fn) {\n return fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction isAsyncGenerator(fn) {\n return fn[Symbol.toStringTag] === 'AsyncGenerator';\n}\n\nfunction isAsyncIterable(obj) {\n return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\nfunction wrapAsync(asyncFn) {\n if (typeof asyncFn !== 'function') throw new Error('expected a function');\n return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;\nexports.isAsyncGenerator = isAsyncGenerator;\nexports.isAsyncIterable = isAsyncIterable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = series;\n\nvar _parallel2 = require('./internal/parallel.js');\n\nvar _parallel3 = _interopRequireDefault(_parallel2);\n\nvar _eachOfSeries = require('./eachOfSeries.js');\n\nvar _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Run the functions in the `tasks` collection in series, each one running once\n * the previous function has completed. If any functions in the series pass an\n * error to its callback, no more functions are run, and `callback` is\n * immediately called with the value of the error. Otherwise, `callback`\n * receives an array of results when `tasks` have completed.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function, and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.series}.\n *\n * **Note** that while many implementations preserve the order of object\n * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n * explicitly states that\n *\n * > The mechanics and order of enumerating the properties is not specified.\n *\n * So if you rely on the order in which your series of functions are executed,\n * and want this to work on all platforms, consider using an array.\n *\n * @name series\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing\n * [async functions]{@link AsyncFunction} to run in series.\n * Each function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This function gets a results array (or object)\n * containing all the result arguments passed to the `task` callbacks. Invoked\n * with (err, result).\n * @return {Promise} a promise, if no callback is passed\n * @example\n *\n * //Using Callbacks\n * async.series([\n * function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 'two');\n * }, 100);\n * }\n * ], function(err, results) {\n * console.log(results);\n * // results is equal to ['one','two']\n * });\n *\n * // an example using objects instead of arrays\n * async.series({\n * one: function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * });\n *\n * //Using Promises\n * async.series([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ]).then(results => {\n * console.log(results);\n * // results is equal to ['one','two']\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * // an example using an object instead of an array\n * async.series({\n * one: function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 2);\n * }, 100);\n * }\n * }).then(results => {\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * }).catch(err => {\n * console.log(err);\n * });\n *\n * //Using async/await\n * async () => {\n * try {\n * let results = await async.series([\n * function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 'two');\n * }, 100);\n * }\n * ]);\n * console.log(results);\n * // results is equal to ['one','two']\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n * // an example using an object instead of an array\n * async () => {\n * try {\n * let results = await async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * // do some async task\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * // then do another async task\n * callback(null, 2);\n * }, 100);\n * }\n * });\n * console.log(results);\n * // results is equal to: { one: 1, two: 2 }\n * }\n * catch (err) {\n * console.log(err);\n * }\n * }\n *\n */\nfunction series(tasks, callback) {\n return (0, _parallel3.default)(_eachOfSeries2.default, tasks, callback);\n}\nmodule.exports = exports.default;","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","'use strict';\n\nvar color = require('color')\n , hex = require('text-hex');\n\n/**\n * Generate a color for a given name. But be reasonably smart about it by\n * understanding name spaces and coloring each namespace a bit lighter so they\n * still have the same base color as the root.\n *\n * @param {string} namespace The namespace\n * @param {string} [delimiter] The delimiter\n * @returns {string} color\n */\nmodule.exports = function colorspace(namespace, delimiter) {\n var split = namespace.split(delimiter || ':');\n var base = hex(split[0]);\n\n if (!split.length) return base;\n\n for (var i = 0, l = split.length - 1; i < l; i++) {\n base = color(base)\n .mix(color(hex(split[i + 1])))\n .saturate(1)\n .hex();\n }\n\n return base;\n};\n","'use strict';\n\n/**\n * Checks if a given namespace is allowed by the given variable.\n *\n * @param {String} name namespace that should be included.\n * @param {String} variable Value that needs to be tested.\n * @returns {Boolean} Indication if namespace is enabled.\n * @public\n */\nmodule.exports = function enabled(name, variable) {\n if (!variable) return false;\n\n var variables = variable.split(/[\\s,]+/)\n , i = 0;\n\n for (; i < variables.length; i++) {\n variable = variables[i].replace('*', '.*?');\n\n if ('-' === variable.charAt(0)) {\n if ((new RegExp('^'+ variable.substr(1) +'$')).test(name)) {\n return false;\n }\n\n continue;\n }\n\n if ((new RegExp('^'+ variable +'$')).test(name)) {\n return true;\n }\n }\n\n return false;\n};\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.fecha = {})));\n}(this, (function (exports) { 'use strict';\n\n var token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\n var twoDigitsOptional = \"\\\\d\\\\d?\";\n var twoDigits = \"\\\\d\\\\d\";\n var threeDigits = \"\\\\d{3}\";\n var fourDigits = \"\\\\d{4}\";\n var word = \"[^\\\\s]+\";\n var literal = /\\[([^]*?)\\]/gm;\n function shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n }\n var monthUpdate = function (arrName) { return function (v, i18n) {\n var lowerCaseArr = i18n[arrName].map(function (v) { return v.toLowerCase(); });\n var index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n }; };\n function assign(origObj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var obj = args_1[_a];\n for (var key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n }\n var dayNames = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ];\n var monthNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n var monthNamesShort = shorten(monthNames, 3);\n var dayNamesShort = shorten(dayNames, 3);\n var defaultI18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn: function (dayOfMonth) {\n return (dayOfMonth +\n [\"th\", \"st\", \"nd\", \"rd\"][dayOfMonth % 10 > 3\n ? 0\n : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10]);\n }\n };\n var globalI18n = assign({}, defaultI18n);\n var setGlobalDateI18n = function (i18n) {\n return (globalI18n = assign(globalI18n, i18n));\n };\n var regexEscape = function (str) {\n return str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n };\n var pad = function (val, len) {\n if (len === void 0) { len = 2; }\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n };\n var formatFlags = {\n D: function (dateObj) { return String(dateObj.getDate()); },\n DD: function (dateObj) { return pad(dateObj.getDate()); },\n Do: function (dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function (dateObj) { return String(dateObj.getDay()); },\n dd: function (dateObj) { return pad(dateObj.getDay()); },\n ddd: function (dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function (dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function (dateObj) { return String(dateObj.getMonth() + 1); },\n MM: function (dateObj) { return pad(dateObj.getMonth() + 1); },\n MMM: function (dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function (dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n YY: function (dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n YYYY: function (dateObj) { return pad(dateObj.getFullYear(), 4); },\n h: function (dateObj) { return String(dateObj.getHours() % 12 || 12); },\n hh: function (dateObj) { return pad(dateObj.getHours() % 12 || 12); },\n H: function (dateObj) { return String(dateObj.getHours()); },\n HH: function (dateObj) { return pad(dateObj.getHours()); },\n m: function (dateObj) { return String(dateObj.getMinutes()); },\n mm: function (dateObj) { return pad(dateObj.getMinutes()); },\n s: function (dateObj) { return String(dateObj.getSeconds()); },\n ss: function (dateObj) { return pad(dateObj.getSeconds()); },\n S: function (dateObj) {\n return String(Math.round(dateObj.getMilliseconds() / 100));\n },\n SS: function (dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function (dateObj) { return pad(dateObj.getMilliseconds(), 3); },\n a: function (dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function (dateObj, i18n) {\n return dateObj.getHours() < 12\n ? i18n.amPm[0].toUpperCase()\n : i18n.amPm[1].toUpperCase();\n },\n ZZ: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4));\n },\n Z: function (dateObj) {\n var offset = dateObj.getTimezoneOffset();\n return ((offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60), 2) +\n \":\" +\n pad(Math.abs(offset) % 60, 2));\n }\n };\n var monthParse = function (v) { return +v - 1; };\n var emptyDigits = [null, twoDigitsOptional];\n var emptyWord = [null, word];\n var amPm = [\n \"isPm\",\n word,\n function (v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n }\n else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n }\n ];\n var timezoneOffset = [\n \"timezoneOffset\",\n \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n function (v) {\n var parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n if (parts) {\n var minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n return 0;\n }\n ];\n var parseFlags = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, function (v) { return parseInt(v, 10); }],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\n \"year\",\n twoDigits,\n function (v) {\n var now = new Date();\n var cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }\n ],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", function (v) { return +v * 100; }],\n SS: [\"millisecond\", twoDigits, function (v) { return +v * 10; }],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n };\n // Some common format strings\n var globalMasks = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n };\n var setGlobalDateMasks = function (masks) { return assign(globalMasks, masks); };\n /***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\n var format = function (dateObj, mask, i18n) {\n if (mask === void 0) { mask = globalMasks[\"default\"]; }\n if (i18n === void 0) { i18n = {}; }\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n if (Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())) {\n throw new Error(\"Invalid Date pass to format\");\n }\n mask = globalMasks[mask] || mask;\n var literals = [];\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function ($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return formatFlags[$0](dateObj, combinedI18nSettings);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function () { return literals.shift(); });\n };\n /**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\n function parse(dateStr, format, i18n) {\n if (i18n === void 0) { i18n = {}; }\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n // Default to the beginning of the year.\n var today = new Date();\n var dateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n var parseInfo = [];\n var literals = [];\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n var newFormat = format.replace(literal, function ($0, $1) {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n var specifiedFields = {};\n var requiredFields = {};\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, function ($0) {\n var info = parseFlags[$0];\n var field = info[0], regex = info[1], requiredField = info[3];\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" specified twice in format\");\n }\n specifiedFields[field] = true;\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(function (field) {\n if (!specifiedFields[field]) {\n throw new Error(\"Invalid format. \" + field + \" is required in specified format\");\n }\n });\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, function () { return literals.shift(); });\n // Check if the date string matches the format. If it doesn't return null\n var matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n var combinedI18nSettings = assign(assign({}, globalI18n), i18n);\n // For each match, call the parser function for that date part\n for (var i = 1; i < matches.length; i++) {\n var _a = parseInfo[i - 1], field = _a[0], parser = _a[2];\n var value = parser\n ? parser(matches[i], combinedI18nSettings)\n : +matches[i];\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n dateInfo[field] = value;\n }\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n }\n else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n var dateTZ;\n if (dateInfo.timezoneOffset == null) {\n dateTZ = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\n var validateFields = [\n [\"month\", \"getMonth\"],\n [\"day\", \"getDate\"],\n [\"hour\", \"getHours\"],\n [\"minute\", \"getMinutes\"],\n [\"second\", \"getSeconds\"]\n ];\n for (var i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (specifiedFields[validateFields[i][0]] &&\n dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()) {\n return null;\n }\n }\n }\n else {\n dateTZ = new Date(Date.UTC(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute - dateInfo.timezoneOffset, dateInfo.second, dateInfo.millisecond));\n // We can't validate dates in another timezone unfortunately. Do a basic check instead\n if (dateInfo.month > 11 ||\n dateInfo.month < 0 ||\n dateInfo.day > 31 ||\n dateInfo.day < 1 ||\n dateInfo.hour > 23 ||\n dateInfo.hour < 0 ||\n dateInfo.minute > 59 ||\n dateInfo.minute < 0 ||\n dateInfo.second > 59 ||\n dateInfo.second < 0) {\n return null;\n }\n }\n // Don't allow invalid dates\n return dateTZ;\n }\n var fecha = {\n format: format,\n parse: parse,\n defaultI18n: defaultI18n,\n setGlobalDateI18n: setGlobalDateI18n,\n setGlobalDateMasks: setGlobalDateMasks\n };\n\n exports.assign = assign;\n exports.default = fecha;\n exports.format = format;\n exports.parse = parse;\n exports.defaultI18n = defaultI18n;\n exports.setGlobalDateI18n = setGlobalDateI18n;\n exports.setGlobalDateMasks = setGlobalDateMasks;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=fecha.umd.js.map\n","'use strict';\n\nvar toString = Object.prototype.toString;\n\n/**\n * Extract names from functions.\n *\n * @param {Function} fn The function who's name we need to extract.\n * @returns {String} The name of the function.\n * @public\n */\nmodule.exports = function name(fn) {\n if ('string' === typeof fn.displayName && fn.constructor.name) {\n return fn.displayName;\n } else if ('string' === typeof fn.name && fn.name) {\n return fn.name;\n }\n\n //\n // Check to see if the constructor has a name.\n //\n if (\n 'object' === typeof fn\n && fn.constructor\n && 'string' === typeof fn.constructor.name\n ) return fn.constructor.name;\n\n //\n // toString the given function and attempt to parse it out of it, or determine\n // the class.\n //\n var named = fn.toString()\n , type = toString.call(fn).slice(8, -1);\n\n if ('Function' === type) {\n named = named.substring(named.indexOf('(') + 1, named.indexOf(')'));\n } else {\n named = type;\n }\n\n return named || 'anonymous';\n};\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","'use strict';\n\n/**\n * Kuler: Color text using CSS colors\n *\n * @constructor\n * @param {String} text The text that needs to be styled\n * @param {String} color Optional color for alternate API.\n * @api public\n */\nfunction Kuler(text, color) {\n if (color) return (new Kuler(text)).style(color);\n if (!(this instanceof Kuler)) return new Kuler(text);\n\n this.text = text;\n}\n\n/**\n * ANSI color codes.\n *\n * @type {String}\n * @private\n */\nKuler.prototype.prefix = '\\x1b[';\nKuler.prototype.suffix = 'm';\n\n/**\n * Parse a hex color string and parse it to it's RGB equiv.\n *\n * @param {String} color\n * @returns {Array}\n * @api private\n */\nKuler.prototype.hex = function hex(color) {\n color = color[0] === '#' ? color.substring(1) : color;\n\n //\n // Pre-parse for shorthand hex colors.\n //\n if (color.length === 3) {\n color = color.split('');\n\n color[5] = color[2]; // F60##0\n color[4] = color[2]; // F60#00\n color[3] = color[1]; // F60600\n color[2] = color[1]; // F66600\n color[1] = color[0]; // FF6600\n\n color = color.join('');\n }\n\n var r = color.substring(0, 2)\n , g = color.substring(2, 4)\n , b = color.substring(4, 6);\n\n return [ parseInt(r, 16), parseInt(g, 16), parseInt(b, 16) ];\n};\n\n/**\n * Transform a 255 RGB value to an RGV code.\n *\n * @param {Number} r Red color channel.\n * @param {Number} g Green color channel.\n * @param {Number} b Blue color channel.\n * @returns {String}\n * @api public\n */\nKuler.prototype.rgb = function rgb(r, g, b) {\n var red = r / 255 * 5\n , green = g / 255 * 5\n , blue = b / 255 * 5;\n\n return this.ansi(red, green, blue);\n};\n\n/**\n * Turns RGB 0-5 values into a single ANSI code.\n *\n * @param {Number} r Red color channel.\n * @param {Number} g Green color channel.\n * @param {Number} b Blue color channel.\n * @returns {String}\n * @api public\n */\nKuler.prototype.ansi = function ansi(r, g, b) {\n var red = Math.round(r)\n , green = Math.round(g)\n , blue = Math.round(b);\n\n return 16 + (red * 36) + (green * 6) + blue;\n};\n\n/**\n * Marks an end of color sequence.\n *\n * @returns {String} Reset sequence.\n * @api public\n */\nKuler.prototype.reset = function reset() {\n return this.prefix +'39;49'+ this.suffix;\n};\n\n/**\n * Colour the terminal using CSS.\n *\n * @param {String} color The HEX color code.\n * @returns {String} the escape code.\n * @api public\n */\nKuler.prototype.style = function style(color) {\n return this.prefix +'38;5;'+ this.rgb.apply(this, this.hex(color)) + this.suffix + this.text + this.reset();\n};\n\n\n//\n// Expose the actual interface.\n//\nmodule.exports = Kuler;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\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',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function align (info)\n * Returns a new instance of the align Format which adds a `\\t`\n * delimiter before the message to properly align it in the same place.\n * It was previously { align: true } in winston < 3.0.0\n */\nmodule.exports = format(info => {\n info.message = `\\t${info.message}`;\n return info;\n});\n","'use strict';\n\nconst { Colorizer } = require('./colorize');\nconst { Padder } = require('./pad-levels');\nconst { configs, MESSAGE } = require('triple-beam');\n\n\n/**\n * Cli format class that handles initial state for a a separate\n * Colorizer and Padder instance.\n */\nclass CliFormat {\n constructor(opts = {}) {\n if (!opts.levels) {\n opts.levels = configs.cli.levels;\n }\n\n this.colorizer = new Colorizer(opts);\n this.padder = new Padder(opts);\n this.options = opts;\n }\n\n /*\n * function transform (info, opts)\n * Attempts to both:\n * 1. Pad the { level }\n * 2. Colorize the { level, message }\n * of the given `logform` info object depending on the `opts`.\n */\n transform(info, opts) {\n this.colorizer.transform(\n this.padder.transform(info, opts),\n opts\n );\n\n info[MESSAGE] = `${info.level}:${info.message}`;\n return info;\n }\n}\n\n/*\n * function cli (opts)\n * Returns a new instance of the CLI format that turns a log\n * `info` object into the same format previously available\n * in `winston.cli()` in `winston < 3.0.0`.\n */\nmodule.exports = opts => new CliFormat(opts);\n\n//\n// Attach the CliFormat for registration purposes\n//\nmodule.exports.Format = CliFormat;\n","'use strict';\n\nconst colors = require('@colors/colors/safe');\nconst { LEVEL, MESSAGE } = require('triple-beam');\n\n//\n// Fix colors not appearing in non-tty environments\n//\ncolors.enabled = true;\n\n/**\n * @property {RegExp} hasSpace\n * Simple regex to check for presence of spaces.\n */\nconst hasSpace = /\\s+/;\n\n/*\n * Colorizer format. Wraps the `level` and/or `message` properties\n * of the `info` objects with ANSI color codes based on a few options.\n */\nclass Colorizer {\n constructor(opts = {}) {\n if (opts.colors) {\n this.addColors(opts.colors);\n }\n\n this.options = opts;\n }\n\n /*\n * Adds the colors Object to the set of allColors\n * known by the Colorizer\n *\n * @param {Object} colors Set of color mappings to add.\n */\n static addColors(clrs) {\n const nextColors = Object.keys(clrs).reduce((acc, level) => {\n acc[level] = hasSpace.test(clrs[level])\n ? clrs[level].split(hasSpace)\n : clrs[level];\n\n return acc;\n }, {});\n\n Colorizer.allColors = Object.assign({}, Colorizer.allColors || {}, nextColors);\n return Colorizer.allColors;\n }\n\n /*\n * Adds the colors Object to the set of allColors\n * known by the Colorizer\n *\n * @param {Object} colors Set of color mappings to add.\n */\n addColors(clrs) {\n return Colorizer.addColors(clrs);\n }\n\n /*\n * function colorize (lookup, level, message)\n * Performs multi-step colorization using @colors/colors/safe\n */\n colorize(lookup, level, message) {\n if (typeof message === 'undefined') {\n message = level;\n }\n\n //\n // If the color for the level is just a string\n // then attempt to colorize the message with it.\n //\n if (!Array.isArray(Colorizer.allColors[lookup])) {\n return colors[Colorizer.allColors[lookup]](message);\n }\n\n //\n // If it is an Array then iterate over that Array, applying\n // the colors function for each item.\n //\n for (let i = 0, len = Colorizer.allColors[lookup].length; i < len; i++) {\n message = colors[Colorizer.allColors[lookup][i]](message);\n }\n\n return message;\n }\n\n /*\n * function transform (info, opts)\n * Attempts to colorize the { level, message } of the given\n * `logform` info object.\n */\n transform(info, opts) {\n if (opts.all && typeof info[MESSAGE] === 'string') {\n info[MESSAGE] = this.colorize(info[LEVEL], info.level, info[MESSAGE]);\n }\n\n if (opts.level || opts.all || !opts.message) {\n info.level = this.colorize(info[LEVEL], info.level);\n }\n\n if (opts.all || opts.message) {\n info.message = this.colorize(info[LEVEL], info.level, info.message);\n }\n\n return info;\n }\n}\n\n/*\n * function colorize (info)\n * Returns a new instance of the colorize Format that applies\n * level colors to `info` objects. This was previously exposed\n * as { colorize: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Colorizer(opts);\n\n//\n// Attach the Colorizer for registration purposes\n//\nmodule.exports.Colorizer\n = module.exports.Format\n = Colorizer;\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function cascade(formats)\n * Returns a function that invokes the `._format` function in-order\n * for the specified set of `formats`. In this manner we say that Formats\n * are \"pipe-like\", but not a pure pumpify implementation. Since there is no back\n * pressure we can remove all of the \"readable\" plumbing in Node streams.\n */\nfunction cascade(formats) {\n if (!formats.every(isValidFormat)) {\n return;\n }\n\n return info => {\n let obj = info;\n for (let i = 0; i < formats.length; i++) {\n obj = formats[i].transform(obj, formats[i].options);\n if (!obj) {\n return false;\n }\n }\n\n return obj;\n };\n}\n\n/*\n * function isValidFormat(format)\n * If the format does not define a `transform` function throw an error\n * with more detailed usage.\n */\nfunction isValidFormat(fmt) {\n if (typeof fmt.transform !== 'function') {\n throw new Error([\n 'No transform function found on format. Did you create a format instance?',\n 'const myFormat = format(formatFn);',\n 'const instance = myFormat();'\n ].join('\\n'));\n }\n\n return true;\n}\n\n/*\n * function combine (info)\n * Returns a new instance of the combine Format which combines the specified\n * formats into a new format. This is similar to a pipe-chain in transform streams.\n * We choose to combine the prototypes this way because there is no back pressure in\n * an in-memory transform chain.\n */\nmodule.exports = (...formats) => {\n const combinedFormat = format(cascade(formats));\n const instance = combinedFormat();\n instance.Format = combinedFormat.Format;\n return instance;\n};\n\n//\n// Export the cascade method for use in cli and other\n// combined formats that should not be assumed to be\n// singletons.\n//\nmodule.exports.cascade = cascade;\n","/* eslint no-undefined: 0 */\n'use strict';\n\nconst format = require('./format');\nconst { LEVEL, MESSAGE } = require('triple-beam');\n\n/*\n * function errors (info)\n * If the `message` property of the `info` object is an instance of `Error`,\n * replace the `Error` object its own `message` property.\n *\n * Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.\n */\nmodule.exports = format((einfo, { stack, cause }) => {\n if (einfo instanceof Error) {\n const info = Object.assign({}, einfo, {\n level: einfo.level,\n [LEVEL]: einfo[LEVEL] || einfo.level,\n message: einfo.message,\n [MESSAGE]: einfo[MESSAGE] || einfo.message\n });\n\n if (stack) info.stack = einfo.stack;\n if (cause) info.cause = einfo.cause;\n return info;\n }\n\n if (!(einfo.message instanceof Error)) return einfo;\n\n // Assign all enumerable properties and the\n // message property from the error provided.\n const err = einfo.message;\n Object.assign(einfo, err);\n einfo.message = err.message;\n einfo[MESSAGE] = err.message;\n\n // Assign the stack and/or cause if requested.\n if (stack) einfo.stack = err.stack;\n if (cause) einfo.cause = err.cause;\n return einfo;\n});\n","'use strict';\n\n/*\n * Displays a helpful message and the source of\n * the format when it is invalid.\n */\nclass InvalidFormatError extends Error {\n constructor(formatFn) {\n super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${formatFn.toString().split('\\n')[0]}\\n`);\n\n Error.captureStackTrace(this, InvalidFormatError);\n }\n}\n\n/*\n * function format (formatFn)\n * Returns a create function for the `formatFn`.\n */\nmodule.exports = formatFn => {\n if (formatFn.length > 2) {\n throw new InvalidFormatError(formatFn);\n }\n\n /*\n * function Format (options)\n * Base prototype which calls a `_format`\n * function and pushes the result.\n */\n function Format(options = {}) {\n this.options = options;\n }\n\n Format.prototype.transform = formatFn;\n\n //\n // Create a function which returns new instances of\n // FormatWrap for simple syntax like:\n //\n // require('winston').formats.json();\n //\n function createFormatWrap(opts) {\n return new Format(opts);\n }\n\n //\n // Expose the FormatWrap through the create function\n // for testability.\n //\n createFormatWrap.Format = Format;\n return createFormatWrap;\n};\n","'use strict';\n\n/*\n * @api public\n * @property {function} format\n * Both the construction method and set of exposed\n * formats.\n */\nconst format = exports.format = require('./format');\n\n/*\n * @api public\n * @method {function} levels\n * Registers the specified levels with logform.\n */\nexports.levels = require('./levels');\n\n/*\n * @api private\n * method {function} exposeFormat\n * Exposes a sub-format on the main format object\n * as a lazy-loaded getter.\n */\nfunction exposeFormat(name, requireFormat) {\n Object.defineProperty(format, name, {\n get() {\n return requireFormat();\n },\n configurable: true\n });\n}\n\n//\n// Setup all transports as lazy-loaded getters.\n//\nexposeFormat('align', function () { return require('./align'); });\nexposeFormat('errors', function () { return require('./errors'); });\nexposeFormat('cli', function () { return require('./cli'); });\nexposeFormat('combine', function () { return require('./combine'); });\nexposeFormat('colorize', function () { return require('./colorize'); });\nexposeFormat('json', function () { return require('./json'); });\nexposeFormat('label', function () { return require('./label'); });\nexposeFormat('logstash', function () { return require('./logstash'); });\nexposeFormat('metadata', function () { return require('./metadata'); });\nexposeFormat('ms', function () { return require('./ms'); });\nexposeFormat('padLevels', function () { return require('./pad-levels'); });\nexposeFormat('prettyPrint', function () { return require('./pretty-print'); });\nexposeFormat('printf', function () { return require('./printf'); });\nexposeFormat('simple', function () { return require('./simple'); });\nexposeFormat('splat', function () { return require('./splat'); });\nexposeFormat('timestamp', function () { return require('./timestamp'); });\nexposeFormat('uncolorize', function () { return require('./uncolorize'); });\n","'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst stringify = require('safe-stable-stringify');\n\n/*\n * function replacer (key, value)\n * Handles proper stringification of Buffer and bigint output.\n */\nfunction replacer(key, value) {\n // safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.\n // Leading to a loss in fidelity if the resulting string is parsed.\n // It would also be a breaking change for logform.\n if (typeof value === 'bigint')\n return value.toString();\n return value;\n}\n\n/*\n * function json (info)\n * Returns a new instance of the JSON format that turns a log `info`\n * object into pure JSON. This was previously exposed as { json: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n const jsonStringify = stringify.configure(opts);\n info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);\n return info;\n});\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function label (info)\n * Returns a new instance of the label Format which adds the specified\n * `opts.label` before the message. This was previously exposed as\n * { label: 'my label' } to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n if (opts.message) {\n info.message = `[${opts.label}] ${info.message}`;\n return info;\n }\n\n info.label = opts.label;\n return info;\n});\n","'use strict';\n\nconst { Colorizer } = require('./colorize');\n\n/*\n * Simple method to register colors with a simpler require\n * path within the module.\n */\nmodule.exports = config => {\n Colorizer.addColors(config.colors || config);\n return config;\n};\n","'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst jsonStringify = require('safe-stable-stringify');\n\n/*\n * function logstash (info)\n * Returns a new instance of the LogStash Format that turns a\n * log `info` object into pure JSON with the appropriate logstash\n * options. This was previously exposed as { logstash: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format(info => {\n const logstash = {};\n if (info.message) {\n logstash['@message'] = info.message;\n delete info.message;\n }\n\n if (info.timestamp) {\n logstash['@timestamp'] = info.timestamp;\n delete info.timestamp;\n }\n\n logstash['@fields'] = info;\n info[MESSAGE] = jsonStringify(logstash);\n return info;\n});\n","'use strict';\n\nconst format = require('./format');\n\nfunction fillExcept(info, fillExceptKeys, metadataKey) {\n const savedKeys = fillExceptKeys.reduce((acc, key) => {\n acc[key] = info[key];\n delete info[key];\n return acc;\n }, {});\n const metadata = Object.keys(info).reduce((acc, key) => {\n acc[key] = info[key];\n delete info[key];\n return acc;\n }, {});\n\n Object.assign(info, savedKeys, {\n [metadataKey]: metadata\n });\n return info;\n}\n\nfunction fillWith(info, fillWithKeys, metadataKey) {\n info[metadataKey] = fillWithKeys.reduce((acc, key) => {\n acc[key] = info[key];\n delete info[key];\n return acc;\n }, {});\n return info;\n}\n\n/**\n * Adds in a \"metadata\" object to collect extraneous data, similar to the metadata\n * object in winston 2.x.\n */\nmodule.exports = format((info, opts = {}) => {\n let metadataKey = 'metadata';\n if (opts.key) {\n metadataKey = opts.key;\n }\n\n let fillExceptKeys = [];\n if (!opts.fillExcept && !opts.fillWith) {\n fillExceptKeys.push('level');\n fillExceptKeys.push('message');\n }\n\n if (opts.fillExcept) {\n fillExceptKeys = opts.fillExcept;\n }\n\n if (fillExceptKeys.length > 0) {\n return fillExcept(info, fillExceptKeys, metadataKey);\n }\n\n if (opts.fillWith) {\n return fillWith(info, opts.fillWith, metadataKey);\n }\n\n return info;\n});\n","'use strict';\n\nconst format = require('./format');\nconst ms = require('ms');\n\n/*\n * function ms (info)\n * Returns an `info` with a `ms` property. The `ms` property holds the Value\n * of the time difference between two calls in milliseconds.\n */\nmodule.exports = format(info => {\n const curr = +new Date();\n this.diff = curr - (this.prevTime || curr);\n this.prevTime = curr;\n info.ms = `+${ms(this.diff)}`;\n\n return info;\n});\n","/*\n\nThe MIT License (MIT)\n\nOriginal Library\n - Copyright (c) Marak Squires\n\nAdditional functionality\n - Copyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar colors = {};\nmodule['exports'] = colors;\n\ncolors.themes = {};\n\nvar util = require('util');\nvar ansiStyles = colors.styles = require('./styles');\nvar defineProps = Object.defineProperties;\nvar newLineRegex = new RegExp(/[\\r\\n]+/g);\n\ncolors.supportsColor = require('./system/supports-colors').supportsColor;\n\nif (typeof colors.enabled === 'undefined') {\n colors.enabled = colors.supportsColor() !== false;\n}\n\ncolors.enable = function() {\n colors.enabled = true;\n};\n\ncolors.disable = function() {\n colors.enabled = false;\n};\n\ncolors.stripColors = colors.strip = function(str) {\n return ('' + str).replace(/\\x1B\\[\\d+m/g, '');\n};\n\n// eslint-disable-next-line no-unused-vars\nvar stylize = colors.stylize = function stylize(str, style) {\n if (!colors.enabled) {\n return str+'';\n }\n\n var styleMap = ansiStyles[style];\n\n // Stylize should work for non-ANSI styles, too\n if (!styleMap && style in colors) {\n // Style maps like trap operate as functions on strings;\n // they don't have properties like open or close.\n return colors[style](str);\n }\n\n return styleMap.open + str + styleMap.close;\n};\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nvar escapeStringRegexp = function(str) {\n if (typeof str !== 'string') {\n throw new TypeError('Expected a string');\n }\n return str.replace(matchOperatorsRe, '\\\\$&');\n};\n\nfunction build(_styles) {\n var builder = function builder() {\n return applyStyle.apply(builder, arguments);\n };\n builder._styles = _styles;\n // __proto__ is used because we must return a function, but there is\n // no way to create a function with a different prototype.\n builder.__proto__ = proto;\n return builder;\n}\n\nvar styles = (function() {\n var ret = {};\n ansiStyles.grey = ansiStyles.gray;\n Object.keys(ansiStyles).forEach(function(key) {\n ansiStyles[key].closeRe =\n new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n ret[key] = {\n get: function() {\n return build(this._styles.concat(key));\n },\n };\n });\n return ret;\n})();\n\nvar proto = defineProps(function colors() {}, styles);\n\nfunction applyStyle() {\n var args = Array.prototype.slice.call(arguments);\n\n var str = args.map(function(arg) {\n // Use weak equality check so we can colorize null/undefined in safe mode\n if (arg != null && arg.constructor === String) {\n return arg;\n } else {\n return util.inspect(arg);\n }\n }).join(' ');\n\n if (!colors.enabled || !str) {\n return str;\n }\n\n var newLinesPresent = str.indexOf('\\n') != -1;\n\n var nestedStyles = this._styles;\n\n var i = nestedStyles.length;\n while (i--) {\n var code = ansiStyles[nestedStyles[i]];\n str = code.open + str.replace(code.closeRe, code.open) + code.close;\n if (newLinesPresent) {\n str = str.replace(newLineRegex, function(match) {\n return code.close + match + code.open;\n });\n }\n }\n\n return str;\n}\n\ncolors.setTheme = function(theme) {\n if (typeof theme === 'string') {\n console.log('colors.setTheme now only accepts an object, not a string. ' +\n 'If you are trying to set a theme from a file, it is now your (the ' +\n 'caller\\'s) responsibility to require the file. The old syntax ' +\n 'looked like colors.setTheme(__dirname + ' +\n '\\'/../themes/generic-logging.js\\'); The new syntax looks like '+\n 'colors.setTheme(require(__dirname + ' +\n '\\'/../themes/generic-logging.js\\'));');\n return;\n }\n for (var style in theme) {\n (function(style) {\n colors[style] = function(str) {\n if (typeof theme[style] === 'object') {\n var out = str;\n for (var i in theme[style]) {\n out = colors[theme[style][i]](out);\n }\n return out;\n }\n return colors[theme[style]](str);\n };\n })(style);\n }\n};\n\nfunction init() {\n var ret = {};\n Object.keys(styles).forEach(function(name) {\n ret[name] = {\n get: function() {\n return build([name]);\n },\n };\n });\n return ret;\n}\n\nvar sequencer = function sequencer(map, str) {\n var exploded = str.split('');\n exploded = exploded.map(map);\n return exploded.join('');\n};\n\n// custom formatter methods\ncolors.trap = require('./custom/trap');\ncolors.zalgo = require('./custom/zalgo');\n\n// maps\ncolors.maps = {};\ncolors.maps.america = require('./maps/america')(colors);\ncolors.maps.zebra = require('./maps/zebra')(colors);\ncolors.maps.rainbow = require('./maps/rainbow')(colors);\ncolors.maps.random = require('./maps/random')(colors);\n\nfor (var map in colors.maps) {\n (function(map) {\n colors[map] = function(str) {\n return sequencer(colors.maps[map], str);\n };\n })(map);\n}\n\ndefineProps(colors, init());\n","module['exports'] = function runTheTrap(text, options) {\n var result = '';\n text = text || 'Run the trap, drop the bass';\n text = text.split('');\n var trap = {\n a: ['\\u0040', '\\u0104', '\\u023a', '\\u0245', '\\u0394', '\\u039b', '\\u0414'],\n b: ['\\u00df', '\\u0181', '\\u0243', '\\u026e', '\\u03b2', '\\u0e3f'],\n c: ['\\u00a9', '\\u023b', '\\u03fe'],\n d: ['\\u00d0', '\\u018a', '\\u0500', '\\u0501', '\\u0502', '\\u0503'],\n e: ['\\u00cb', '\\u0115', '\\u018e', '\\u0258', '\\u03a3', '\\u03be', '\\u04bc',\n '\\u0a6c'],\n f: ['\\u04fa'],\n g: ['\\u0262'],\n h: ['\\u0126', '\\u0195', '\\u04a2', '\\u04ba', '\\u04c7', '\\u050a'],\n i: ['\\u0f0f'],\n j: ['\\u0134'],\n k: ['\\u0138', '\\u04a0', '\\u04c3', '\\u051e'],\n l: ['\\u0139'],\n m: ['\\u028d', '\\u04cd', '\\u04ce', '\\u0520', '\\u0521', '\\u0d69'],\n n: ['\\u00d1', '\\u014b', '\\u019d', '\\u0376', '\\u03a0', '\\u048a'],\n o: ['\\u00d8', '\\u00f5', '\\u00f8', '\\u01fe', '\\u0298', '\\u047a', '\\u05dd',\n '\\u06dd', '\\u0e4f'],\n p: ['\\u01f7', '\\u048e'],\n q: ['\\u09cd'],\n r: ['\\u00ae', '\\u01a6', '\\u0210', '\\u024c', '\\u0280', '\\u042f'],\n s: ['\\u00a7', '\\u03de', '\\u03df', '\\u03e8'],\n t: ['\\u0141', '\\u0166', '\\u0373'],\n u: ['\\u01b1', '\\u054d'],\n v: ['\\u05d8'],\n w: ['\\u0428', '\\u0460', '\\u047c', '\\u0d70'],\n x: ['\\u04b2', '\\u04fe', '\\u04fc', '\\u04fd'],\n y: ['\\u00a5', '\\u04b0', '\\u04cb'],\n z: ['\\u01b5', '\\u0240'],\n };\n text.forEach(function(c) {\n c = c.toLowerCase();\n var chars = trap[c] || [' '];\n var rand = Math.floor(Math.random() * chars.length);\n if (typeof trap[c] !== 'undefined') {\n result += trap[c][rand];\n } else {\n result += c;\n }\n });\n return result;\n};\n","// please no\nmodule['exports'] = function zalgo(text, options) {\n text = text || ' he is here ';\n var soul = {\n 'up': [\n '̍', '̎', '̄', '̅',\n '̿', '̑', '̆', '̐',\n '͒', '͗', '͑', '̇',\n '̈', '̊', '͂', '̓',\n '̈', '͊', '͋', '͌',\n '̃', '̂', '̌', '͐',\n '̀', '́', '̋', '̏',\n '̒', '̓', '̔', '̽',\n '̉', 'ͣ', 'ͤ', 'ͥ',\n 'ͦ', 'ͧ', 'ͨ', 'ͩ',\n 'ͪ', 'ͫ', 'ͬ', 'ͭ',\n 'ͮ', 'ͯ', '̾', '͛',\n '͆', '̚',\n ],\n 'down': [\n '̖', '̗', '̘', '̙',\n '̜', '̝', '̞', '̟',\n '̠', '̤', '̥', '̦',\n '̩', '̪', '̫', '̬',\n '̭', '̮', '̯', '̰',\n '̱', '̲', '̳', '̹',\n '̺', '̻', '̼', 'ͅ',\n '͇', '͈', '͉', '͍',\n '͎', '͓', '͔', '͕',\n '͖', '͙', '͚', '̣',\n ],\n 'mid': [\n '̕', '̛', '̀', '́',\n '͘', '̡', '̢', '̧',\n '̨', '̴', '̵', '̶',\n '͜', '͝', '͞',\n '͟', '͠', '͢', '̸',\n '̷', '͡', ' ҉',\n ],\n };\n var all = [].concat(soul.up, soul.down, soul.mid);\n\n function randomNumber(range) {\n var r = Math.floor(Math.random() * range);\n return r;\n }\n\n function isChar(character) {\n var bool = false;\n all.filter(function(i) {\n bool = (i === character);\n });\n return bool;\n }\n\n\n function heComes(text, options) {\n var result = '';\n var counts;\n var l;\n options = options || {};\n options['up'] =\n typeof options['up'] !== 'undefined' ? options['up'] : true;\n options['mid'] =\n typeof options['mid'] !== 'undefined' ? options['mid'] : true;\n options['down'] =\n typeof options['down'] !== 'undefined' ? options['down'] : true;\n options['size'] =\n typeof options['size'] !== 'undefined' ? options['size'] : 'maxi';\n text = text.split('');\n for (l in text) {\n if (isChar(l)) {\n continue;\n }\n result = result + text[l];\n counts = {'up': 0, 'down': 0, 'mid': 0};\n switch (options.size) {\n case 'mini':\n counts.up = randomNumber(8);\n counts.mid = randomNumber(2);\n counts.down = randomNumber(8);\n break;\n case 'maxi':\n counts.up = randomNumber(16) + 3;\n counts.mid = randomNumber(4) + 1;\n counts.down = randomNumber(64) + 3;\n break;\n default:\n counts.up = randomNumber(8) + 1;\n counts.mid = randomNumber(6) / 2;\n counts.down = randomNumber(8) + 1;\n break;\n }\n\n var arr = ['up', 'mid', 'down'];\n for (var d in arr) {\n var index = arr[d];\n for (var i = 0; i <= counts[index]; i++) {\n if (options[index]) {\n result = result + soul[index][randomNumber(soul[index].length)];\n }\n }\n }\n }\n return result;\n }\n // don't summon him\n return heComes(text, options);\n};\n\n","module['exports'] = function(colors) {\n return function(letter, i, exploded) {\n if (letter === ' ') return letter;\n switch (i%3) {\n case 0: return colors.red(letter);\n case 1: return colors.white(letter);\n case 2: return colors.blue(letter);\n }\n };\n};\n","module['exports'] = function(colors) {\n // RoY G BiV\n var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];\n return function(letter, i, exploded) {\n if (letter === ' ') {\n return letter;\n } else {\n return colors[rainbowColors[i++ % rainbowColors.length]](letter);\n }\n };\n};\n\n","module['exports'] = function(colors) {\n var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green',\n 'blue', 'white', 'cyan', 'magenta', 'brightYellow', 'brightRed',\n 'brightGreen', 'brightBlue', 'brightWhite', 'brightCyan', 'brightMagenta'];\n return function(letter, i, exploded) {\n return letter === ' ' ? letter :\n colors[\n available[Math.round(Math.random() * (available.length - 2))]\n ](letter);\n };\n};\n","module['exports'] = function(colors) {\n return function(letter, i, exploded) {\n return i % 2 === 0 ? letter : colors.inverse(letter);\n };\n};\n","/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar styles = {};\nmodule['exports'] = styles;\n\nvar codes = {\n reset: [0, 0],\n\n bold: [1, 22],\n dim: [2, 22],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n gray: [90, 39],\n grey: [90, 39],\n\n brightRed: [91, 39],\n brightGreen: [92, 39],\n brightYellow: [93, 39],\n brightBlue: [94, 39],\n brightMagenta: [95, 39],\n brightCyan: [96, 39],\n brightWhite: [97, 39],\n\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n bgGray: [100, 49],\n bgGrey: [100, 49],\n\n bgBrightRed: [101, 49],\n bgBrightGreen: [102, 49],\n bgBrightYellow: [103, 49],\n bgBrightBlue: [104, 49],\n bgBrightMagenta: [105, 49],\n bgBrightCyan: [106, 49],\n bgBrightWhite: [107, 49],\n\n // legacy styles for colors pre v1.0.0\n blackBG: [40, 49],\n redBG: [41, 49],\n greenBG: [42, 49],\n yellowBG: [43, 49],\n blueBG: [44, 49],\n magentaBG: [45, 49],\n cyanBG: [46, 49],\n whiteBG: [47, 49],\n\n};\n\nObject.keys(codes).forEach(function(key) {\n var val = codes[key];\n var style = styles[key] = [];\n style.open = '\\u001b[' + val[0] + 'm';\n style.close = '\\u001b[' + val[1] + 'm';\n});\n","/*\nMIT License\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n'use strict';\n\nmodule.exports = function(flag, argv) {\n argv = argv || process.argv || [];\n\n var terminatorPos = argv.indexOf('--');\n var prefix = /^-{1,2}/.test(flag) ? '' : '--';\n var pos = argv.indexOf(prefix + flag);\n\n return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\n'use strict';\n\nvar os = require('os');\nvar hasFlag = require('./has-flag.js');\n\nvar env = process.env;\n\nvar forceColor = void 0;\nif (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {\n forceColor = false;\n} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true')\n || hasFlag('color=always')) {\n forceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n forceColor = env.FORCE_COLOR.length === 0\n || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n if (level === 0) {\n return false;\n }\n\n return {\n level: level,\n hasBasic: true,\n has256: level >= 2,\n has16m: level >= 3,\n };\n}\n\nfunction supportsColor(stream) {\n if (forceColor === false) {\n return 0;\n }\n\n if (hasFlag('color=16m') || hasFlag('color=full')\n || hasFlag('color=truecolor')) {\n return 3;\n }\n\n if (hasFlag('color=256')) {\n return 2;\n }\n\n if (stream && !stream.isTTY && forceColor !== true) {\n return 0;\n }\n\n var min = forceColor ? 1 : 0;\n\n if (process.platform === 'win32') {\n // Node.js 7.5.0 is the first version of Node.js to include a patch to\n // libuv that enables 256 color output on Windows. Anything earlier and it\n // won't work. However, here we target Node.js 8 at minimum as it is an LTS\n // release, and Node.js 7 is not. Windows 10 build 10586 is the first\n // Windows release that supports 256 colors. Windows 10 build 14931 is the\n // first release that supports 16m/TrueColor.\n var osRelease = os.release().split('.');\n if (Number(process.versions.node.split('.')[0]) >= 8\n && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {\n return Number(osRelease[2]) >= 14931 ? 3 : 2;\n }\n\n return 1;\n }\n\n if ('CI' in env) {\n if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function(sign) {\n return sign in env;\n }) || env.CI_NAME === 'codeship') {\n return 1;\n }\n\n return min;\n }\n\n if ('TEAMCITY_VERSION' in env) {\n return (/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0\n );\n }\n\n if ('TERM_PROGRAM' in env) {\n var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n switch (env.TERM_PROGRAM) {\n case 'iTerm.app':\n return version >= 3 ? 3 : 2;\n case 'Hyper':\n return 3;\n case 'Apple_Terminal':\n return 2;\n // No default\n }\n }\n\n if (/-256(color)?$/i.test(env.TERM)) {\n return 2;\n }\n\n if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n return 1;\n }\n\n if ('COLORTERM' in env) {\n return 1;\n }\n\n if (env.TERM === 'dumb') {\n return min;\n }\n\n return min;\n}\n\nfunction getSupportLevel(stream) {\n var level = supportsColor(stream);\n return translateLevel(level);\n}\n\nmodule.exports = {\n supportsColor: getSupportLevel,\n stdout: getSupportLevel(process.stdout),\n stderr: getSupportLevel(process.stderr),\n};\n","//\n// Remark: Requiring this file will use the \"safe\" colors API,\n// which will not touch String.prototype.\n//\n// var colors = require('colors/safe');\n// colors.red(\"foo\")\n//\n//\nvar colors = require('./lib/colors');\nmodule['exports'] = colors;\n","/* eslint no-unused-vars: 0 */\n'use strict';\n\nconst { configs, LEVEL, MESSAGE } = require('triple-beam');\n\nclass Padder {\n constructor(opts = { levels: configs.npm.levels }) {\n this.paddings = Padder.paddingForLevels(opts.levels, opts.filler);\n this.options = opts;\n }\n\n /**\n * Returns the maximum length of keys in the specified `levels` Object.\n * @param {Object} levels Set of all levels to calculate longest level against.\n * @returns {Number} Maximum length of the longest level string.\n */\n static getLongestLevel(levels) {\n const lvls = Object.keys(levels).map(level => level.length);\n return Math.max(...lvls);\n }\n\n /**\n * Returns the padding for the specified `level` assuming that the\n * maximum length of all levels it's associated with is `maxLength`.\n * @param {String} level Level to calculate padding for.\n * @param {String} filler Repeatable text to use for padding.\n * @param {Number} maxLength Length of the longest level\n * @returns {String} Padding string for the `level`\n */\n static paddingForLevel(level, filler, maxLength) {\n const targetLen = maxLength + 1 - level.length;\n const rep = Math.floor(targetLen / filler.length);\n const padding = `${filler}${filler.repeat(rep)}`;\n return padding.slice(0, targetLen);\n }\n\n /**\n * Returns an object with the string paddings for the given `levels`\n * using the specified `filler`.\n * @param {Object} levels Set of all levels to calculate padding for.\n * @param {String} filler Repeatable text to use for padding.\n * @returns {Object} Mapping of level to desired padding.\n */\n static paddingForLevels(levels, filler = ' ') {\n const maxLength = Padder.getLongestLevel(levels);\n return Object.keys(levels).reduce((acc, level) => {\n acc[level] = Padder.paddingForLevel(level, filler, maxLength);\n return acc;\n }, {});\n }\n\n /**\n * Prepends the padding onto the `message` based on the `LEVEL` of\n * the `info`. This is based on the behavior of `winston@2` which also\n * prepended the level onto the message.\n *\n * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201\n *\n * @param {Info} info Logform info object\n * @param {Object} opts Options passed along to this instance.\n * @returns {Info} Modified logform info object.\n */\n transform(info, opts) {\n info.message = `${this.paddings[info[LEVEL]]}${info.message}`;\n if (info[MESSAGE]) {\n info[MESSAGE] = `${this.paddings[info[LEVEL]]}${info[MESSAGE]}`;\n }\n\n return info;\n }\n}\n\n/*\n * function padLevels (info)\n * Returns a new instance of the padLevels Format which pads\n * levels to be the same length. This was previously exposed as\n * { padLevels: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Padder(opts);\n\nmodule.exports.Padder\n = module.exports.Format\n = Padder;\n","'use strict';\n\nconst inspect = require('util').inspect;\nconst format = require('./format');\nconst { LEVEL, MESSAGE, SPLAT } = require('triple-beam');\n\n/*\n * function prettyPrint (info)\n * Returns a new instance of the prettyPrint Format that \"prettyPrint\"\n * serializes `info` objects. This was previously exposed as\n * { prettyPrint: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts = {}) => {\n //\n // info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they\n // are internal, we remove them before util.inspect so they\n // are not printed.\n //\n const stripped = Object.assign({}, info);\n\n // Remark (indexzero): update this technique in April 2019\n // when node@6 is EOL\n delete stripped[LEVEL];\n delete stripped[MESSAGE];\n delete stripped[SPLAT];\n\n info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize);\n return info;\n});\n","'use strict';\n\nconst { MESSAGE } = require('triple-beam');\n\nclass Printf {\n constructor(templateFn) {\n this.template = templateFn;\n }\n\n transform(info) {\n info[MESSAGE] = this.template(info);\n return info;\n }\n}\n\n/*\n * function printf (templateFn)\n * Returns a new instance of the printf Format that creates an\n * intermediate prototype to store the template string-based formatter\n * function.\n */\nmodule.exports = opts => new Printf(opts);\n\nmodule.exports.Printf\n = module.exports.Format\n = Printf;\n","/* eslint no-undefined: 0 */\n'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst jsonStringify = require('safe-stable-stringify');\n\n/*\n * function simple (info)\n * Returns a new instance of the simple format TransformStream\n * which writes a simple representation of logs.\n *\n * const { level, message, splat, ...rest } = info;\n *\n * ${level}: ${message} if rest is empty\n * ${level}: ${message} ${JSON.stringify(rest)} otherwise\n */\nmodule.exports = format(info => {\n const stringifiedRest = jsonStringify(Object.assign({}, info, {\n level: undefined,\n message: undefined,\n splat: undefined\n }));\n\n const padding = info.padding && info.padding[info.level] || '';\n if (stringifiedRest !== '{}') {\n info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;\n } else {\n info[MESSAGE] = `${info.level}:${padding} ${info.message}`;\n }\n\n return info;\n});\n","'use strict';\n\nconst util = require('util');\nconst { SPLAT } = require('triple-beam');\n\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\nconst formatRegExp = /%[scdjifoO%]/g;\n\n/**\n * Captures the number of escaped % signs in a format string (i.e. %s strings).\n * @type {RegExp}\n */\nconst escapedPercent = /%%/g;\n\nclass Splatter {\n constructor(opts) {\n this.options = opts;\n }\n\n /**\n * Check to see if tokens <= splat.length, assign { splat, meta } into the\n * `info` accordingly, and write to this instance.\n *\n * @param {Info} info Logform info message.\n * @param {String[]} tokens Set of string interpolation tokens.\n * @returns {Info} Modified info message\n * @private\n */\n _splat(info, tokens) {\n const msg = info.message;\n const splat = info[SPLAT] || info.splat || [];\n const percents = msg.match(escapedPercent);\n const escapes = percents && percents.length || 0;\n\n // The expected splat is the number of tokens minus the number of escapes\n // e.g.\n // - { expectedSplat: 3 } '%d %s %j'\n // - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j'\n //\n // Any \"meta\" will be arugments in addition to the expected splat size\n // regardless of type. e.g.\n //\n // logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true });\n // would result in splat of four (4), but only three (3) are expected. Therefore:\n //\n // extraSplat = 3 - 4 = -1\n // metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1);\n // splat = [100, 'wow', { such: 'js' }]\n const expectedSplat = tokens.length - escapes;\n const extraSplat = expectedSplat - splat.length;\n const metas = extraSplat < 0\n ? splat.splice(extraSplat, -1 * extraSplat)\n : [];\n\n // Now that { splat } has been separated from any potential { meta }. we\n // can assign this to the `info` object and write it to our format stream.\n // If the additional metas are **NOT** objects or **LACK** enumerable properties\n // you are going to have a bad time.\n const metalen = metas.length;\n if (metalen) {\n for (let i = 0; i < metalen; i++) {\n Object.assign(info, metas[i]);\n }\n }\n\n info.message = util.format(msg, ...splat);\n return info;\n }\n\n /**\n * Transforms the `info` message by using `util.format` to complete\n * any `info.message` provided it has string interpolation tokens.\n * If no tokens exist then `info` is immutable.\n *\n * @param {Info} info Logform info message.\n * @param {Object} opts Options for this instance.\n * @returns {Info} Modified info message\n */\n transform(info) {\n const msg = info.message;\n const splat = info[SPLAT] || info.splat;\n\n // No need to process anything if splat is undefined\n if (!splat || !splat.length) {\n return info;\n }\n\n // Extract tokens, if none available default to empty array to\n // ensure consistancy in expected results\n const tokens = msg && msg.match && msg.match(formatRegExp);\n\n // This condition will take care of inputs with info[SPLAT]\n // but no tokens present\n if (!tokens && (splat || splat.length)) {\n const metas = splat.length > 1\n ? splat.splice(0)\n : splat;\n\n // Now that { splat } has been separated from any potential { meta }. we\n // can assign this to the `info` object and write it to our format stream.\n // If the additional metas are **NOT** objects or **LACK** enumerable properties\n // you are going to have a bad time.\n const metalen = metas.length;\n if (metalen) {\n for (let i = 0; i < metalen; i++) {\n Object.assign(info, metas[i]);\n }\n }\n\n return info;\n }\n\n if (tokens) {\n return this._splat(info, tokens);\n }\n\n return info;\n }\n}\n\n/*\n * function splat (info)\n * Returns a new instance of the splat format TransformStream\n * which performs string interpolation from `info` objects. This was\n * previously exposed implicitly in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Splatter(opts);\n","'use strict';\n\nconst fecha = require('fecha');\nconst format = require('./format');\n\n/*\n * function timestamp (info)\n * Returns a new instance of the timestamp Format which adds a timestamp\n * to the info. It was previously available in winston < 3.0.0 as:\n *\n * - { timestamp: true } // `new Date.toISOString()`\n * - { timestamp: function:String } // Value returned by `timestamp()`\n */\nmodule.exports = format((info, opts = {}) => {\n if (opts.format) {\n info.timestamp = typeof opts.format === 'function'\n ? opts.format()\n : fecha.format(new Date(), opts.format);\n }\n\n if (!info.timestamp) {\n info.timestamp = new Date().toISOString();\n }\n\n if (opts.alias) {\n info[opts.alias] = info.timestamp;\n }\n\n return info;\n});\n","'use strict';\n\nconst colors = require('@colors/colors/safe');\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\n\n/*\n * function uncolorize (info)\n * Returns a new instance of the uncolorize Format that strips colors\n * from `info` objects. This was previously exposed as { stripColors: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n if (opts.level !== false) {\n info.level = colors.strip(info.level);\n }\n\n if (opts.message !== false) {\n info.message = colors.strip(String(info.message));\n }\n\n if (opts.raw !== false && info[MESSAGE]) {\n info[MESSAGE] = colors.strip(String(info[MESSAGE]));\n }\n\n return info;\n});\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\n\nvar name = require('fn.name');\n\n/**\n * Wrap callbacks to prevent double execution.\n *\n * @param {Function} fn Function that should only be called once.\n * @returns {Function} A wrapped callback which prevents multiple executions.\n * @public\n */\nmodule.exports = function one(fn) {\n var called = 0\n , value;\n\n /**\n * The function that prevents double execution.\n *\n * @private\n */\n function onetime() {\n if (called) return value;\n\n called = 1;\n value = fn.apply(this, arguments);\n fn = null;\n\n return value;\n }\n\n //\n // To make debugging more easy we want to use the name of the supplied\n // function. So when you look at the functions that are assigned to event\n // listeners you don't see a load of `onetime` functions but actually the\n // names of the functions that this module will call.\n //\n // NOTE: We cannot override the `name` property, as that is `readOnly`\n // property, so displayName will have to do.\n //\n onetime.displayName = name(fn);\n return onetime;\n};\n","\"use strict\";\nvar $protobuf = require(\"../..\");\nmodule.exports = exports = $protobuf.descriptor = $protobuf.Root.fromJSON(require(\"../../google/protobuf/descriptor.json\")).lookup(\".google.protobuf\");\n\nvar Namespace = $protobuf.Namespace,\n Root = $protobuf.Root,\n Enum = $protobuf.Enum,\n Type = $protobuf.Type,\n Field = $protobuf.Field,\n MapField = $protobuf.MapField,\n OneOf = $protobuf.OneOf,\n Service = $protobuf.Service,\n Method = $protobuf.Method;\n\n// --- Root ---\n\n/**\n * Properties of a FileDescriptorSet message.\n * @interface IFileDescriptorSet\n * @property {IFileDescriptorProto[]} file Files\n */\n\n/**\n * Properties of a FileDescriptorProto message.\n * @interface IFileDescriptorProto\n * @property {string} [name] File name\n * @property {string} [package] Package\n * @property {*} [dependency] Not supported\n * @property {*} [publicDependency] Not supported\n * @property {*} [weakDependency] Not supported\n * @property {IDescriptorProto[]} [messageType] Nested message types\n * @property {IEnumDescriptorProto[]} [enumType] Nested enums\n * @property {IServiceDescriptorProto[]} [service] Nested services\n * @property {IFieldDescriptorProto[]} [extension] Nested extension fields\n * @property {IFileOptions} [options] Options\n * @property {*} [sourceCodeInfo] Not supported\n * @property {string} [syntax=\"proto2\"] Syntax\n */\n\n/**\n * Properties of a FileOptions message.\n * @interface IFileOptions\n * @property {string} [javaPackage]\n * @property {string} [javaOuterClassname]\n * @property {boolean} [javaMultipleFiles]\n * @property {boolean} [javaGenerateEqualsAndHash]\n * @property {boolean} [javaStringCheckUtf8]\n * @property {IFileOptionsOptimizeMode} [optimizeFor=1]\n * @property {string} [goPackage]\n * @property {boolean} [ccGenericServices]\n * @property {boolean} [javaGenericServices]\n * @property {boolean} [pyGenericServices]\n * @property {boolean} [deprecated]\n * @property {boolean} [ccEnableArenas]\n * @property {string} [objcClassPrefix]\n * @property {string} [csharpNamespace]\n */\n\n/**\n * Values of he FileOptions.OptimizeMode enum.\n * @typedef IFileOptionsOptimizeMode\n * @type {number}\n * @property {number} SPEED=1\n * @property {number} CODE_SIZE=2\n * @property {number} LITE_RUNTIME=3\n */\n\n/**\n * Creates a root from a descriptor set.\n * @param {IFileDescriptorSet|Reader|Uint8Array} descriptor Descriptor\n * @returns {Root} Root instance\n */\nRoot.fromDescriptor = function fromDescriptor(descriptor) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.FileDescriptorSet.decode(descriptor);\n\n var root = new Root();\n\n if (descriptor.file) {\n var fileDescriptor,\n filePackage;\n for (var j = 0, i; j < descriptor.file.length; ++j) {\n filePackage = root;\n if ((fileDescriptor = descriptor.file[j])[\"package\"] && fileDescriptor[\"package\"].length)\n filePackage = root.define(fileDescriptor[\"package\"]);\n if (fileDescriptor.name && fileDescriptor.name.length)\n root.files.push(filePackage.filename = fileDescriptor.name);\n if (fileDescriptor.messageType)\n for (i = 0; i < fileDescriptor.messageType.length; ++i)\n filePackage.add(Type.fromDescriptor(fileDescriptor.messageType[i], fileDescriptor.syntax));\n if (fileDescriptor.enumType)\n for (i = 0; i < fileDescriptor.enumType.length; ++i)\n filePackage.add(Enum.fromDescriptor(fileDescriptor.enumType[i]));\n if (fileDescriptor.extension)\n for (i = 0; i < fileDescriptor.extension.length; ++i)\n filePackage.add(Field.fromDescriptor(fileDescriptor.extension[i]));\n if (fileDescriptor.service)\n for (i = 0; i < fileDescriptor.service.length; ++i)\n filePackage.add(Service.fromDescriptor(fileDescriptor.service[i]));\n var opts = fromDescriptorOptions(fileDescriptor.options, exports.FileOptions);\n if (opts) {\n var ks = Object.keys(opts);\n for (i = 0; i < ks.length; ++i)\n filePackage.setOption(ks[i], opts[ks[i]]);\n }\n }\n }\n\n return root;\n};\n\n/**\n * Converts a root to a descriptor set.\n * @returns {Message} Descriptor\n * @param {string} [syntax=\"proto2\"] Syntax\n */\nRoot.prototype.toDescriptor = function toDescriptor(syntax) {\n var set = exports.FileDescriptorSet.create();\n Root_toDescriptorRecursive(this, set.file, syntax);\n return set;\n};\n\n// Traverses a namespace and assembles the descriptor set\nfunction Root_toDescriptorRecursive(ns, files, syntax) {\n\n // Create a new file\n var file = exports.FileDescriptorProto.create({ name: ns.filename || (ns.fullName.substring(1).replace(/\\./g, \"_\") || \"root\") + \".proto\" });\n if (syntax)\n file.syntax = syntax;\n if (!(ns instanceof Root))\n file[\"package\"] = ns.fullName.substring(1);\n\n // Add nested types\n for (var i = 0, nested; i < ns.nestedArray.length; ++i)\n if ((nested = ns._nestedArray[i]) instanceof Type)\n file.messageType.push(nested.toDescriptor(syntax));\n else if (nested instanceof Enum)\n file.enumType.push(nested.toDescriptor());\n else if (nested instanceof Field)\n file.extension.push(nested.toDescriptor(syntax));\n else if (nested instanceof Service)\n file.service.push(nested.toDescriptor());\n else if (nested instanceof /* plain */ Namespace)\n Root_toDescriptorRecursive(nested, files, syntax); // requires new file\n\n // Keep package-level options\n file.options = toDescriptorOptions(ns.options, exports.FileOptions);\n\n // And keep the file only if there is at least one nested object\n if (file.messageType.length + file.enumType.length + file.extension.length + file.service.length)\n files.push(file);\n}\n\n// --- Type ---\n\n/**\n * Properties of a DescriptorProto message.\n * @interface IDescriptorProto\n * @property {string} [name] Message type name\n * @property {IFieldDescriptorProto[]} [field] Fields\n * @property {IFieldDescriptorProto[]} [extension] Extension fields\n * @property {IDescriptorProto[]} [nestedType] Nested message types\n * @property {IEnumDescriptorProto[]} [enumType] Nested enums\n * @property {IDescriptorProtoExtensionRange[]} [extensionRange] Extension ranges\n * @property {IOneofDescriptorProto[]} [oneofDecl] Oneofs\n * @property {IMessageOptions} [options] Not supported\n * @property {IDescriptorProtoReservedRange[]} [reservedRange] Reserved ranges\n * @property {string[]} [reservedName] Reserved names\n */\n\n/**\n * Properties of a MessageOptions message.\n * @interface IMessageOptions\n * @property {boolean} [mapEntry=false] Whether this message is a map entry\n */\n\n/**\n * Properties of an ExtensionRange message.\n * @interface IDescriptorProtoExtensionRange\n * @property {number} [start] Start field id\n * @property {number} [end] End field id\n */\n\n/**\n * Properties of a ReservedRange message.\n * @interface IDescriptorProtoReservedRange\n * @property {number} [start] Start field id\n * @property {number} [end] End field id\n */\n\nvar unnamedMessageIndex = 0;\n\n/**\n * Creates a type from a descriptor.\n * @param {IDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @param {string} [syntax=\"proto2\"] Syntax\n * @returns {Type} Type instance\n */\nType.fromDescriptor = function fromDescriptor(descriptor, syntax) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.DescriptorProto.decode(descriptor);\n\n // Create the message type\n var type = new Type(descriptor.name.length ? descriptor.name : \"Type\" + unnamedMessageIndex++, fromDescriptorOptions(descriptor.options, exports.MessageOptions)),\n i;\n\n /* Oneofs */ if (descriptor.oneofDecl)\n for (i = 0; i < descriptor.oneofDecl.length; ++i)\n type.add(OneOf.fromDescriptor(descriptor.oneofDecl[i]));\n /* Fields */ if (descriptor.field)\n for (i = 0; i < descriptor.field.length; ++i) {\n var field = Field.fromDescriptor(descriptor.field[i], syntax);\n type.add(field);\n if (descriptor.field[i].hasOwnProperty(\"oneofIndex\")) // eslint-disable-line no-prototype-builtins\n type.oneofsArray[descriptor.field[i].oneofIndex].add(field);\n }\n /* Extension fields */ if (descriptor.extension)\n for (i = 0; i < descriptor.extension.length; ++i)\n type.add(Field.fromDescriptor(descriptor.extension[i], syntax));\n /* Nested types */ if (descriptor.nestedType)\n for (i = 0; i < descriptor.nestedType.length; ++i) {\n type.add(Type.fromDescriptor(descriptor.nestedType[i], syntax));\n if (descriptor.nestedType[i].options && descriptor.nestedType[i].options.mapEntry)\n type.setOption(\"map_entry\", true);\n }\n /* Nested enums */ if (descriptor.enumType)\n for (i = 0; i < descriptor.enumType.length; ++i)\n type.add(Enum.fromDescriptor(descriptor.enumType[i]));\n /* Extension ranges */ if (descriptor.extensionRange && descriptor.extensionRange.length) {\n type.extensions = [];\n for (i = 0; i < descriptor.extensionRange.length; ++i)\n type.extensions.push([ descriptor.extensionRange[i].start, descriptor.extensionRange[i].end ]);\n }\n /* Reserved... */ if (descriptor.reservedRange && descriptor.reservedRange.length || descriptor.reservedName && descriptor.reservedName.length) {\n type.reserved = [];\n /* Ranges */ if (descriptor.reservedRange)\n for (i = 0; i < descriptor.reservedRange.length; ++i)\n type.reserved.push([ descriptor.reservedRange[i].start, descriptor.reservedRange[i].end ]);\n /* Names */ if (descriptor.reservedName)\n for (i = 0; i < descriptor.reservedName.length; ++i)\n type.reserved.push(descriptor.reservedName[i]);\n }\n\n return type;\n};\n\n/**\n * Converts a type to a descriptor.\n * @returns {Message} Descriptor\n * @param {string} [syntax=\"proto2\"] Syntax\n */\nType.prototype.toDescriptor = function toDescriptor(syntax) {\n var descriptor = exports.DescriptorProto.create({ name: this.name }),\n i;\n\n /* Fields */ for (i = 0; i < this.fieldsArray.length; ++i) {\n var fieldDescriptor;\n descriptor.field.push(fieldDescriptor = this._fieldsArray[i].toDescriptor(syntax));\n if (this._fieldsArray[i] instanceof MapField) { // map fields are repeated FieldNameEntry\n var keyType = toDescriptorType(this._fieldsArray[i].keyType, this._fieldsArray[i].resolvedKeyType),\n valueType = toDescriptorType(this._fieldsArray[i].type, this._fieldsArray[i].resolvedType),\n valueTypeName = valueType === /* type */ 11 || valueType === /* enum */ 14\n ? this._fieldsArray[i].resolvedType && shortname(this.parent, this._fieldsArray[i].resolvedType) || this._fieldsArray[i].type\n : undefined;\n descriptor.nestedType.push(exports.DescriptorProto.create({\n name: fieldDescriptor.typeName,\n field: [\n exports.FieldDescriptorProto.create({ name: \"key\", number: 1, label: 1, type: keyType }), // can't reference a type or enum\n exports.FieldDescriptorProto.create({ name: \"value\", number: 2, label: 1, type: valueType, typeName: valueTypeName })\n ],\n options: exports.MessageOptions.create({ mapEntry: true })\n }));\n }\n }\n /* Oneofs */ for (i = 0; i < this.oneofsArray.length; ++i)\n descriptor.oneofDecl.push(this._oneofsArray[i].toDescriptor());\n /* Nested... */ for (i = 0; i < this.nestedArray.length; ++i) {\n /* Extension fields */ if (this._nestedArray[i] instanceof Field)\n descriptor.field.push(this._nestedArray[i].toDescriptor(syntax));\n /* Types */ else if (this._nestedArray[i] instanceof Type)\n descriptor.nestedType.push(this._nestedArray[i].toDescriptor(syntax));\n /* Enums */ else if (this._nestedArray[i] instanceof Enum)\n descriptor.enumType.push(this._nestedArray[i].toDescriptor());\n // plain nested namespaces become packages instead in Root#toDescriptor\n }\n /* Extension ranges */ if (this.extensions)\n for (i = 0; i < this.extensions.length; ++i)\n descriptor.extensionRange.push(exports.DescriptorProto.ExtensionRange.create({ start: this.extensions[i][0], end: this.extensions[i][1] }));\n /* Reserved... */ if (this.reserved)\n for (i = 0; i < this.reserved.length; ++i)\n /* Names */ if (typeof this.reserved[i] === \"string\")\n descriptor.reservedName.push(this.reserved[i]);\n /* Ranges */ else\n descriptor.reservedRange.push(exports.DescriptorProto.ReservedRange.create({ start: this.reserved[i][0], end: this.reserved[i][1] }));\n\n descriptor.options = toDescriptorOptions(this.options, exports.MessageOptions);\n\n return descriptor;\n};\n\n// --- Field ---\n\n/**\n * Properties of a FieldDescriptorProto message.\n * @interface IFieldDescriptorProto\n * @property {string} [name] Field name\n * @property {number} [number] Field id\n * @property {IFieldDescriptorProtoLabel} [label] Field rule\n * @property {IFieldDescriptorProtoType} [type] Field basic type\n * @property {string} [typeName] Field type name\n * @property {string} [extendee] Extended type name\n * @property {string} [defaultValue] Literal default value\n * @property {number} [oneofIndex] Oneof index if part of a oneof\n * @property {*} [jsonName] Not supported\n * @property {IFieldOptions} [options] Field options\n */\n\n/**\n * Values of the FieldDescriptorProto.Label enum.\n * @typedef IFieldDescriptorProtoLabel\n * @type {number}\n * @property {number} LABEL_OPTIONAL=1\n * @property {number} LABEL_REQUIRED=2\n * @property {number} LABEL_REPEATED=3\n */\n\n/**\n * Values of the FieldDescriptorProto.Type enum.\n * @typedef IFieldDescriptorProtoType\n * @type {number}\n * @property {number} TYPE_DOUBLE=1\n * @property {number} TYPE_FLOAT=2\n * @property {number} TYPE_INT64=3\n * @property {number} TYPE_UINT64=4\n * @property {number} TYPE_INT32=5\n * @property {number} TYPE_FIXED64=6\n * @property {number} TYPE_FIXED32=7\n * @property {number} TYPE_BOOL=8\n * @property {number} TYPE_STRING=9\n * @property {number} TYPE_GROUP=10\n * @property {number} TYPE_MESSAGE=11\n * @property {number} TYPE_BYTES=12\n * @property {number} TYPE_UINT32=13\n * @property {number} TYPE_ENUM=14\n * @property {number} TYPE_SFIXED32=15\n * @property {number} TYPE_SFIXED64=16\n * @property {number} TYPE_SINT32=17\n * @property {number} TYPE_SINT64=18\n */\n\n/**\n * Properties of a FieldOptions message.\n * @interface IFieldOptions\n * @property {boolean} [packed] Whether packed or not (defaults to `false` for proto2 and `true` for proto3)\n * @property {IFieldOptionsJSType} [jstype] JavaScript value type (not used by protobuf.js)\n */\n\n/**\n * Values of the FieldOptions.JSType enum.\n * @typedef IFieldOptionsJSType\n * @type {number}\n * @property {number} JS_NORMAL=0\n * @property {number} JS_STRING=1\n * @property {number} JS_NUMBER=2\n */\n\n// copied here from parse.js\nvar numberRe = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/;\n\n/**\n * Creates a field from a descriptor.\n * @param {IFieldDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @param {string} [syntax=\"proto2\"] Syntax\n * @returns {Field} Field instance\n */\nField.fromDescriptor = function fromDescriptor(descriptor, syntax) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.DescriptorProto.decode(descriptor);\n\n if (typeof descriptor.number !== \"number\")\n throw Error(\"missing field id\");\n\n // Rewire field type\n var fieldType;\n if (descriptor.typeName && descriptor.typeName.length)\n fieldType = descriptor.typeName;\n else\n fieldType = fromDescriptorType(descriptor.type);\n\n // Rewire field rule\n var fieldRule;\n switch (descriptor.label) {\n // 0 is reserved for errors\n case 1: fieldRule = undefined; break;\n case 2: fieldRule = \"required\"; break;\n case 3: fieldRule = \"repeated\"; break;\n default: throw Error(\"illegal label: \" + descriptor.label);\n }\n\n\tvar extendee = descriptor.extendee;\n\tif (descriptor.extendee !== undefined) {\n\t\textendee = extendee.length ? extendee : undefined;\n\t}\n var field = new Field(\n descriptor.name.length ? descriptor.name : \"field\" + descriptor.number,\n descriptor.number,\n fieldType,\n fieldRule,\n extendee\n );\n\n field.options = fromDescriptorOptions(descriptor.options, exports.FieldOptions);\n\n if (descriptor.defaultValue && descriptor.defaultValue.length) {\n var defaultValue = descriptor.defaultValue;\n switch (defaultValue) {\n case \"true\": case \"TRUE\":\n defaultValue = true;\n break;\n case \"false\": case \"FALSE\":\n defaultValue = false;\n break;\n default:\n var match = numberRe.exec(defaultValue);\n if (match)\n defaultValue = parseInt(defaultValue); // eslint-disable-line radix\n break;\n }\n field.setOption(\"default\", defaultValue);\n }\n\n if (packableDescriptorType(descriptor.type)) {\n if (syntax === \"proto3\") { // defaults to packed=true (internal preset is packed=true)\n if (descriptor.options && !descriptor.options.packed)\n field.setOption(\"packed\", false);\n } else if (!(descriptor.options && descriptor.options.packed)) // defaults to packed=false\n field.setOption(\"packed\", false);\n }\n\n return field;\n};\n\n/**\n * Converts a field to a descriptor.\n * @returns {Message} Descriptor\n * @param {string} [syntax=\"proto2\"] Syntax\n */\nField.prototype.toDescriptor = function toDescriptor(syntax) {\n var descriptor = exports.FieldDescriptorProto.create({ name: this.name, number: this.id });\n\n if (this.map) {\n\n descriptor.type = 11; // message\n descriptor.typeName = $protobuf.util.ucFirst(this.name); // fieldName -> FieldNameEntry (built in Type#toDescriptor)\n descriptor.label = 3; // repeated\n\n } else {\n\n // Rewire field type\n switch (descriptor.type = toDescriptorType(this.type, this.resolve().resolvedType)) {\n case 10: // group\n case 11: // type\n case 14: // enum\n descriptor.typeName = this.resolvedType ? shortname(this.parent, this.resolvedType) : this.type;\n break;\n }\n\n // Rewire field rule\n switch (this.rule) {\n case \"repeated\": descriptor.label = 3; break;\n case \"required\": descriptor.label = 2; break;\n default: descriptor.label = 1; break;\n }\n\n }\n\n // Handle extension field\n descriptor.extendee = this.extensionField ? this.extensionField.parent.fullName : this.extend;\n\n // Handle part of oneof\n if (this.partOf)\n if ((descriptor.oneofIndex = this.parent.oneofsArray.indexOf(this.partOf)) < 0)\n throw Error(\"missing oneof\");\n\n if (this.options) {\n descriptor.options = toDescriptorOptions(this.options, exports.FieldOptions);\n if (this.options[\"default\"] != null)\n descriptor.defaultValue = String(this.options[\"default\"]);\n }\n\n if (syntax === \"proto3\") { // defaults to packed=true\n if (!this.packed)\n (descriptor.options || (descriptor.options = exports.FieldOptions.create())).packed = false;\n } else if (this.packed) // defaults to packed=false\n (descriptor.options || (descriptor.options = exports.FieldOptions.create())).packed = true;\n\n return descriptor;\n};\n\n// --- Enum ---\n\n/**\n * Properties of an EnumDescriptorProto message.\n * @interface IEnumDescriptorProto\n * @property {string} [name] Enum name\n * @property {IEnumValueDescriptorProto[]} [value] Enum values\n * @property {IEnumOptions} [options] Enum options\n */\n\n/**\n * Properties of an EnumValueDescriptorProto message.\n * @interface IEnumValueDescriptorProto\n * @property {string} [name] Name\n * @property {number} [number] Value\n * @property {*} [options] Not supported\n */\n\n/**\n * Properties of an EnumOptions message.\n * @interface IEnumOptions\n * @property {boolean} [allowAlias] Whether aliases are allowed\n * @property {boolean} [deprecated]\n */\n\nvar unnamedEnumIndex = 0;\n\n/**\n * Creates an enum from a descriptor.\n * @param {IEnumDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @returns {Enum} Enum instance\n */\nEnum.fromDescriptor = function fromDescriptor(descriptor) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.EnumDescriptorProto.decode(descriptor);\n\n // Construct values object\n var values = {};\n if (descriptor.value)\n for (var i = 0; i < descriptor.value.length; ++i) {\n var name = descriptor.value[i].name,\n value = descriptor.value[i].number || 0;\n values[name && name.length ? name : \"NAME\" + value] = value;\n }\n\n return new Enum(\n descriptor.name && descriptor.name.length ? descriptor.name : \"Enum\" + unnamedEnumIndex++,\n values,\n fromDescriptorOptions(descriptor.options, exports.EnumOptions)\n );\n};\n\n/**\n * Converts an enum to a descriptor.\n * @returns {Message} Descriptor\n */\nEnum.prototype.toDescriptor = function toDescriptor() {\n\n // Values\n var values = [];\n for (var i = 0, ks = Object.keys(this.values); i < ks.length; ++i)\n values.push(exports.EnumValueDescriptorProto.create({ name: ks[i], number: this.values[ks[i]] }));\n\n return exports.EnumDescriptorProto.create({\n name: this.name,\n value: values,\n options: toDescriptorOptions(this.options, exports.EnumOptions)\n });\n};\n\n// --- OneOf ---\n\n/**\n * Properties of a OneofDescriptorProto message.\n * @interface IOneofDescriptorProto\n * @property {string} [name] Oneof name\n * @property {*} [options] Not supported\n */\n\nvar unnamedOneofIndex = 0;\n\n/**\n * Creates a oneof from a descriptor.\n * @param {IOneofDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @returns {OneOf} OneOf instance\n */\nOneOf.fromDescriptor = function fromDescriptor(descriptor) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.OneofDescriptorProto.decode(descriptor);\n\n return new OneOf(\n // unnamedOneOfIndex is global, not per type, because we have no ref to a type here\n descriptor.name && descriptor.name.length ? descriptor.name : \"oneof\" + unnamedOneofIndex++\n // fromDescriptorOptions(descriptor.options, exports.OneofOptions) - only uninterpreted_option\n );\n};\n\n/**\n * Converts a oneof to a descriptor.\n * @returns {Message} Descriptor\n */\nOneOf.prototype.toDescriptor = function toDescriptor() {\n return exports.OneofDescriptorProto.create({\n name: this.name\n // options: toDescriptorOptions(this.options, exports.OneofOptions) - only uninterpreted_option\n });\n};\n\n// --- Service ---\n\n/**\n * Properties of a ServiceDescriptorProto message.\n * @interface IServiceDescriptorProto\n * @property {string} [name] Service name\n * @property {IMethodDescriptorProto[]} [method] Methods\n * @property {IServiceOptions} [options] Options\n */\n\n/**\n * Properties of a ServiceOptions message.\n * @interface IServiceOptions\n * @property {boolean} [deprecated]\n */\n\nvar unnamedServiceIndex = 0;\n\n/**\n * Creates a service from a descriptor.\n * @param {IServiceDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @returns {Service} Service instance\n */\nService.fromDescriptor = function fromDescriptor(descriptor) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.ServiceDescriptorProto.decode(descriptor);\n\n var service = new Service(descriptor.name && descriptor.name.length ? descriptor.name : \"Service\" + unnamedServiceIndex++, fromDescriptorOptions(descriptor.options, exports.ServiceOptions));\n if (descriptor.method)\n for (var i = 0; i < descriptor.method.length; ++i)\n service.add(Method.fromDescriptor(descriptor.method[i]));\n\n return service;\n};\n\n/**\n * Converts a service to a descriptor.\n * @returns {Message} Descriptor\n */\nService.prototype.toDescriptor = function toDescriptor() {\n\n // Methods\n var methods = [];\n for (var i = 0; i < this.methodsArray.length; ++i)\n methods.push(this._methodsArray[i].toDescriptor());\n\n return exports.ServiceDescriptorProto.create({\n name: this.name,\n method: methods,\n options: toDescriptorOptions(this.options, exports.ServiceOptions)\n });\n};\n\n// --- Method ---\n\n/**\n * Properties of a MethodDescriptorProto message.\n * @interface IMethodDescriptorProto\n * @property {string} [name] Method name\n * @property {string} [inputType] Request type name\n * @property {string} [outputType] Response type name\n * @property {IMethodOptions} [options] Not supported\n * @property {boolean} [clientStreaming=false] Whether requests are streamed\n * @property {boolean} [serverStreaming=false] Whether responses are streamed\n */\n\n/**\n * Properties of a MethodOptions message.\n * @interface IMethodOptions\n * @property {boolean} [deprecated]\n */\n\nvar unnamedMethodIndex = 0;\n\n/**\n * Creates a method from a descriptor.\n * @param {IMethodDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @returns {Method} Reflected method instance\n */\nMethod.fromDescriptor = function fromDescriptor(descriptor) {\n\n // Decode the descriptor message if specified as a buffer:\n if (typeof descriptor.length === \"number\")\n descriptor = exports.MethodDescriptorProto.decode(descriptor);\n\n return new Method(\n // unnamedMethodIndex is global, not per service, because we have no ref to a service here\n descriptor.name && descriptor.name.length ? descriptor.name : \"Method\" + unnamedMethodIndex++,\n \"rpc\",\n descriptor.inputType,\n descriptor.outputType,\n Boolean(descriptor.clientStreaming),\n Boolean(descriptor.serverStreaming),\n fromDescriptorOptions(descriptor.options, exports.MethodOptions)\n );\n};\n\n/**\n * Converts a method to a descriptor.\n * @returns {Message} Descriptor\n */\nMethod.prototype.toDescriptor = function toDescriptor() {\n return exports.MethodDescriptorProto.create({\n name: this.name,\n inputType: this.resolvedRequestType ? this.resolvedRequestType.fullName : this.requestType,\n outputType: this.resolvedResponseType ? this.resolvedResponseType.fullName : this.responseType,\n clientStreaming: this.requestStream,\n serverStreaming: this.responseStream,\n options: toDescriptorOptions(this.options, exports.MethodOptions)\n });\n};\n\n// --- utility ---\n\n// Converts a descriptor type to a protobuf.js basic type\nfunction fromDescriptorType(type) {\n switch (type) {\n // 0 is reserved for errors\n case 1: return \"double\";\n case 2: return \"float\";\n case 3: return \"int64\";\n case 4: return \"uint64\";\n case 5: return \"int32\";\n case 6: return \"fixed64\";\n case 7: return \"fixed32\";\n case 8: return \"bool\";\n case 9: return \"string\";\n case 12: return \"bytes\";\n case 13: return \"uint32\";\n case 15: return \"sfixed32\";\n case 16: return \"sfixed64\";\n case 17: return \"sint32\";\n case 18: return \"sint64\";\n }\n throw Error(\"illegal type: \" + type);\n}\n\n// Tests if a descriptor type is packable\nfunction packableDescriptorType(type) {\n switch (type) {\n case 1: // double\n case 2: // float\n case 3: // int64\n case 4: // uint64\n case 5: // int32\n case 6: // fixed64\n case 7: // fixed32\n case 8: // bool\n case 13: // uint32\n case 14: // enum (!)\n case 15: // sfixed32\n case 16: // sfixed64\n case 17: // sint32\n case 18: // sint64\n return true;\n }\n return false;\n}\n\n// Converts a protobuf.js basic type to a descriptor type\nfunction toDescriptorType(type, resolvedType) {\n switch (type) {\n // 0 is reserved for errors\n case \"double\": return 1;\n case \"float\": return 2;\n case \"int64\": return 3;\n case \"uint64\": return 4;\n case \"int32\": return 5;\n case \"fixed64\": return 6;\n case \"fixed32\": return 7;\n case \"bool\": return 8;\n case \"string\": return 9;\n case \"bytes\": return 12;\n case \"uint32\": return 13;\n case \"sfixed32\": return 15;\n case \"sfixed64\": return 16;\n case \"sint32\": return 17;\n case \"sint64\": return 18;\n }\n if (resolvedType instanceof Enum)\n return 14;\n if (resolvedType instanceof Type)\n return resolvedType.group ? 10 : 11;\n throw Error(\"illegal type: \" + type);\n}\n\n// Converts descriptor options to an options object\nfunction fromDescriptorOptions(options, type) {\n if (!options)\n return undefined;\n var out = [];\n for (var i = 0, field, key, val; i < type.fieldsArray.length; ++i)\n if ((key = (field = type._fieldsArray[i]).name) !== \"uninterpretedOption\")\n if (options.hasOwnProperty(key)) { // eslint-disable-line no-prototype-builtins\n val = options[key];\n if (field.resolvedType instanceof Enum && typeof val === \"number\" && field.resolvedType.valuesById[val] !== undefined)\n val = field.resolvedType.valuesById[val];\n out.push(underScore(key), val);\n }\n return out.length ? $protobuf.util.toObject(out) : undefined;\n}\n\n// Converts an options object to descriptor options\nfunction toDescriptorOptions(options, type) {\n if (!options)\n return undefined;\n var out = [];\n for (var i = 0, ks = Object.keys(options), key, val; i < ks.length; ++i) {\n val = options[key = ks[i]];\n if (key === \"default\")\n continue;\n var field = type.fields[key];\n if (!field && !(field = type.fields[key = $protobuf.util.camelCase(key)]))\n continue;\n out.push(key, val);\n }\n return out.length ? type.fromObject($protobuf.util.toObject(out)) : undefined;\n}\n\n// Calculates the shortest relative path from `from` to `to`.\nfunction shortname(from, to) {\n var fromPath = from.fullName.split(\".\"),\n toPath = to.fullName.split(\".\"),\n i = 0,\n j = 0,\n k = toPath.length - 1;\n if (!(from instanceof Root) && to instanceof Namespace)\n while (i < fromPath.length && j < k && fromPath[i] === toPath[j]) {\n var other = to.lookup(fromPath[i++], true);\n if (other !== null && other !== to)\n break;\n ++j;\n }\n else\n for (; i < fromPath.length && j < k && fromPath[i] === toPath[j]; ++i, ++j);\n return toPath.slice(j).join(\".\");\n}\n\n// copied here from cli/targets/proto.js\nfunction underScore(str) {\n return str.substring(0,1)\n + str.substring(1)\n .replace(/([A-Z])(?=[a-z]|$)/g, function($0, $1) { return \"_\" + $1.toLowerCase(); });\n}\n\n// --- exports ---\n\n/**\n * Reflected file descriptor set.\n * @name FileDescriptorSet\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected file descriptor proto.\n * @name FileDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected descriptor proto.\n * @name DescriptorProto\n * @type {Type}\n * @property {Type} ExtensionRange\n * @property {Type} ReservedRange\n * @const\n * @tstype $protobuf.Type & {\n * ExtensionRange: $protobuf.Type,\n * ReservedRange: $protobuf.Type\n * }\n */\n\n/**\n * Reflected field descriptor proto.\n * @name FieldDescriptorProto\n * @type {Type}\n * @property {Enum} Label\n * @property {Enum} Type\n * @const\n * @tstype $protobuf.Type & {\n * Label: $protobuf.Enum,\n * Type: $protobuf.Enum\n * }\n */\n\n/**\n * Reflected oneof descriptor proto.\n * @name OneofDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum descriptor proto.\n * @name EnumDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected service descriptor proto.\n * @name ServiceDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum value descriptor proto.\n * @name EnumValueDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected method descriptor proto.\n * @name MethodDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected file options.\n * @name FileOptions\n * @type {Type}\n * @property {Enum} OptimizeMode\n * @const\n * @tstype $protobuf.Type & {\n * OptimizeMode: $protobuf.Enum\n * }\n */\n\n/**\n * Reflected message options.\n * @name MessageOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected field options.\n * @name FieldOptions\n * @type {Type}\n * @property {Enum} CType\n * @property {Enum} JSType\n * @const\n * @tstype $protobuf.Type & {\n * CType: $protobuf.Enum,\n * JSType: $protobuf.Enum\n * }\n */\n\n/**\n * Reflected oneof options.\n * @name OneofOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum options.\n * @name EnumOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum value options.\n * @name EnumValueOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected service options.\n * @name ServiceOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected method options.\n * @name MethodOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected uninterpretet option.\n * @name UninterpretedOption\n * @type {Type}\n * @property {Type} NamePart\n * @const\n * @tstype $protobuf.Type & {\n * NamePart: $protobuf.Type\n * }\n */\n\n/**\n * Reflected source code info.\n * @name SourceCodeInfo\n * @type {Type}\n * @property {Type} Location\n * @const\n * @tstype $protobuf.Type & {\n * Location: $protobuf.Type\n * }\n */\n\n/**\n * Reflected generated code info.\n * @name GeneratedCodeInfo\n * @type {Type}\n * @property {Type} Annotation\n * @const\n * @tstype $protobuf.Type & {\n * Annotation: $protobuf.Type\n * }\n */\n","// full library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index\");\n","\"use strict\";\nmodule.exports = common;\n\nvar commonRe = /\\/|\\./;\n\n/**\n * Provides common type definitions.\n * Can also be used to provide additional google types or your own custom types.\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\n * @param {Object.} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\n * @returns {undefined}\n * @property {INamespace} google/protobuf/any.proto Any\n * @property {INamespace} google/protobuf/duration.proto Duration\n * @property {INamespace} google/protobuf/empty.proto Empty\n * @property {INamespace} google/protobuf/field_mask.proto FieldMask\n * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\n * @property {INamespace} google/protobuf/timestamp.proto Timestamp\n * @property {INamespace} google/protobuf/wrappers.proto Wrappers\n * @example\n * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)\n * protobuf.common(\"descriptor\", descriptorJson);\n *\n * // manually provides a custom definition (uses my.foo namespace)\n * protobuf.common(\"my/foo/bar.proto\", myFooBarJson);\n */\nfunction common(name, json) {\n if (!commonRe.test(name)) {\n name = \"google/protobuf/\" + name + \".proto\";\n json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\n }\n common[name] = json;\n}\n\n// Not provided because of limited use (feel free to discuss or to provide yourself):\n//\n// google/protobuf/descriptor.proto\n// google/protobuf/source_context.proto\n// google/protobuf/type.proto\n//\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\n// the repository or package within the google/protobuf directory.\n\ncommon(\"any\", {\n\n /**\n * Properties of a google.protobuf.Any message.\n * @interface IAny\n * @type {Object}\n * @property {string} [typeUrl]\n * @property {Uint8Array} [bytes]\n * @memberof common\n */\n Any: {\n fields: {\n type_url: {\n type: \"string\",\n id: 1\n },\n value: {\n type: \"bytes\",\n id: 2\n }\n }\n }\n});\n\nvar timeType;\n\ncommon(\"duration\", {\n\n /**\n * Properties of a google.protobuf.Duration message.\n * @interface IDuration\n * @type {Object}\n * @property {number|Long} [seconds]\n * @property {number} [nanos]\n * @memberof common\n */\n Duration: timeType = {\n fields: {\n seconds: {\n type: \"int64\",\n id: 1\n },\n nanos: {\n type: \"int32\",\n id: 2\n }\n }\n }\n});\n\ncommon(\"timestamp\", {\n\n /**\n * Properties of a google.protobuf.Timestamp message.\n * @interface ITimestamp\n * @type {Object}\n * @property {number|Long} [seconds]\n * @property {number} [nanos]\n * @memberof common\n */\n Timestamp: timeType\n});\n\ncommon(\"empty\", {\n\n /**\n * Properties of a google.protobuf.Empty message.\n * @interface IEmpty\n * @memberof common\n */\n Empty: {\n fields: {}\n }\n});\n\ncommon(\"struct\", {\n\n /**\n * Properties of a google.protobuf.Struct message.\n * @interface IStruct\n * @type {Object}\n * @property {Object.} [fields]\n * @memberof common\n */\n Struct: {\n fields: {\n fields: {\n keyType: \"string\",\n type: \"Value\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.Value message.\n * @interface IValue\n * @type {Object}\n * @property {string} [kind]\n * @property {0} [nullValue]\n * @property {number} [numberValue]\n * @property {string} [stringValue]\n * @property {boolean} [boolValue]\n * @property {IStruct} [structValue]\n * @property {IListValue} [listValue]\n * @memberof common\n */\n Value: {\n oneofs: {\n kind: {\n oneof: [\n \"nullValue\",\n \"numberValue\",\n \"stringValue\",\n \"boolValue\",\n \"structValue\",\n \"listValue\"\n ]\n }\n },\n fields: {\n nullValue: {\n type: \"NullValue\",\n id: 1\n },\n numberValue: {\n type: \"double\",\n id: 2\n },\n stringValue: {\n type: \"string\",\n id: 3\n },\n boolValue: {\n type: \"bool\",\n id: 4\n },\n structValue: {\n type: \"Struct\",\n id: 5\n },\n listValue: {\n type: \"ListValue\",\n id: 6\n }\n }\n },\n\n NullValue: {\n values: {\n NULL_VALUE: 0\n }\n },\n\n /**\n * Properties of a google.protobuf.ListValue message.\n * @interface IListValue\n * @type {Object}\n * @property {Array.} [values]\n * @memberof common\n */\n ListValue: {\n fields: {\n values: {\n rule: \"repeated\",\n type: \"Value\",\n id: 1\n }\n }\n }\n});\n\ncommon(\"wrappers\", {\n\n /**\n * Properties of a google.protobuf.DoubleValue message.\n * @interface IDoubleValue\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n DoubleValue: {\n fields: {\n value: {\n type: \"double\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.FloatValue message.\n * @interface IFloatValue\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n FloatValue: {\n fields: {\n value: {\n type: \"float\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.Int64Value message.\n * @interface IInt64Value\n * @type {Object}\n * @property {number|Long} [value]\n * @memberof common\n */\n Int64Value: {\n fields: {\n value: {\n type: \"int64\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.UInt64Value message.\n * @interface IUInt64Value\n * @type {Object}\n * @property {number|Long} [value]\n * @memberof common\n */\n UInt64Value: {\n fields: {\n value: {\n type: \"uint64\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.Int32Value message.\n * @interface IInt32Value\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n Int32Value: {\n fields: {\n value: {\n type: \"int32\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.UInt32Value message.\n * @interface IUInt32Value\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n UInt32Value: {\n fields: {\n value: {\n type: \"uint32\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.BoolValue message.\n * @interface IBoolValue\n * @type {Object}\n * @property {boolean} [value]\n * @memberof common\n */\n BoolValue: {\n fields: {\n value: {\n type: \"bool\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.StringValue message.\n * @interface IStringValue\n * @type {Object}\n * @property {string} [value]\n * @memberof common\n */\n StringValue: {\n fields: {\n value: {\n type: \"string\",\n id: 1\n }\n }\n },\n\n /**\n * Properties of a google.protobuf.BytesValue message.\n * @interface IBytesValue\n * @type {Object}\n * @property {Uint8Array} [value]\n * @memberof common\n */\n BytesValue: {\n fields: {\n value: {\n type: \"bytes\",\n id: 1\n }\n }\n }\n});\n\ncommon(\"field_mask\", {\n\n /**\n * Properties of a google.protobuf.FieldMask message.\n * @interface IDoubleValue\n * @type {Object}\n * @property {number} [value]\n * @memberof common\n */\n FieldMask: {\n fields: {\n paths: {\n rule: \"repeated\",\n type: \"string\",\n id: 1\n }\n }\n }\n});\n\n/**\n * Gets the root definition of the specified common proto file.\n *\n * Bundled definitions are:\n * - google/protobuf/any.proto\n * - google/protobuf/duration.proto\n * - google/protobuf/empty.proto\n * - google/protobuf/field_mask.proto\n * - google/protobuf/struct.proto\n * - google/protobuf/timestamp.proto\n * - google/protobuf/wrappers.proto\n *\n * @param {string} file Proto file name\n * @returns {INamespace|null} Root definition or `null` if not defined\n */\ncommon.get = function get(file) {\n return common[file] || null;\n};\n","\"use strict\";\n/**\n * Runtime message from/to plain object converters.\n * @namespace\n */\nvar converter = exports;\n\nvar Enum = require(\"./enum\"),\n util = require(\"./util\");\n\n/**\n * Generates a partial value fromObject conveter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\n var defaultAlreadyEmitted = false;\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) { gen\n (\"switch(d%s){\", prop);\n for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\n // enum unknown values passthrough\n if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen\n (\"default:\")\n (\"if(typeof(d%s)===\\\"number\\\"){m%s=d%s;break}\", prop, prop, prop);\n if (!field.repeated) gen // fallback to default value only for\n // arrays, to avoid leaving holes.\n (\"break\"); // for non-repeated fields, just ignore\n defaultAlreadyEmitted = true;\n }\n gen\n (\"case%j:\", keys[i])\n (\"case %i:\", values[keys[i]])\n (\"m%s=%j\", prop, values[keys[i]])\n (\"break\");\n } gen\n (\"}\");\n } else gen\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\n } else {\n var isUnsigned = false;\n switch (field.type) {\n case \"double\":\n case \"float\": gen\n (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\n break;\n case \"uint32\":\n case \"fixed32\": gen\n (\"m%s=d%s>>>0\", prop, prop);\n break;\n case \"int32\":\n case \"sint32\":\n case \"sfixed32\": gen\n (\"m%s=d%s|0\", prop, prop);\n break;\n case \"uint64\":\n isUnsigned = true;\n // eslint-disable-next-line no-fallthrough\n case \"int64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(util.Long)\")\n (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\n (\"else if(typeof d%s===\\\"string\\\")\", prop)\n (\"m%s=parseInt(d%s,10)\", prop, prop)\n (\"else if(typeof d%s===\\\"number\\\")\", prop)\n (\"m%s=d%s\", prop, prop)\n (\"else if(typeof d%s===\\\"object\\\")\", prop)\n (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\n break;\n case \"bytes\": gen\n (\"if(typeof d%s===\\\"string\\\")\", prop)\n (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\n (\"else if(d%s.length >= 0)\", prop)\n (\"m%s=d%s\", prop, prop);\n break;\n case \"string\": gen\n (\"m%s=String(d%s)\", prop, prop);\n break;\n case \"bool\": gen\n (\"m%s=Boolean(d%s)\", prop, prop);\n break;\n /* default: gen\n (\"m%s=d%s\", prop, prop);\n break; */\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a plain object to runtime message converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.fromObject = function fromObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray;\n var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\n (\"if(d instanceof this.ctor)\")\n (\"return d\");\n if (!fields.length) return gen\n (\"return new this.ctor\");\n gen\n (\"var m=new this.ctor\");\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n prop = util.safeProp(field.name);\n\n // Map fields\n if (field.map) { gen\n (\"if(d%s){\", prop)\n (\"if(typeof d%s!==\\\"object\\\")\", prop)\n (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n (\"m%s={}\", prop)\n (\"for(var ks=Object.keys(d%s),i=0;i>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\n break;\n case \"bytes\": gen\n (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\n break;\n default: gen\n (\"d%s=m%s\", prop, prop);\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a runtime message to plain object converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.toObject = function toObject(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\n if (!fields.length)\n return util.codegen()(\"return {}\");\n var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\n (\"if(!o)\")\n (\"o={}\")\n (\"var d={}\");\n\n var repeatedFields = [],\n mapFields = [],\n normalFields = [],\n i = 0;\n for (; i < fields.length; ++i)\n if (!fields[i].partOf)\n ( fields[i].resolve().repeated ? repeatedFields\n : fields[i].map ? mapFields\n : normalFields).push(fields[i]);\n\n if (repeatedFields.length) { gen\n (\"if(o.arrays||o.defaults){\");\n for (i = 0; i < repeatedFields.length; ++i) gen\n (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\n gen\n (\"}\");\n }\n\n if (mapFields.length) { gen\n (\"if(o.objects||o.defaults){\");\n for (i = 0; i < mapFields.length; ++i) gen\n (\"d%s={}\", util.safeProp(mapFields[i].name));\n gen\n (\"}\");\n }\n\n if (normalFields.length) { gen\n (\"if(o.defaults){\");\n for (i = 0; i < normalFields.length; ++i) {\n var field = normalFields[i],\n prop = util.safeProp(field.name);\n if (field.resolvedType instanceof Enum) gen\n (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\n else if (field.long) gen\n (\"if(util.Long){\")\n (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\n (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\n (\"}else\")\n (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\n else if (field.bytes) {\n var arrayDefault = \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\";\n gen\n (\"if(o.bytes===String)d%s=%j\", prop, String.fromCharCode.apply(String, field.typeDefault))\n (\"else{\")\n (\"d%s=%s\", prop, arrayDefault)\n (\"if(o.bytes!==Array)d%s=util.newBuffer(d%s)\", prop, prop)\n (\"}\");\n } else gen\n (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\n } gen\n (\"}\");\n }\n var hasKs2 = false;\n for (i = 0; i < fields.length; ++i) {\n var field = fields[i],\n index = mtype._fieldsArray.indexOf(field),\n prop = util.safeProp(field.name);\n if (field.map) {\n if (!hasKs2) { hasKs2 = true; gen\n (\"var ks2\");\n } gen\n (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\n (\"d%s={}\", prop)\n (\"for(var j=0;j>>3){\");\n\n var i = 0;\n for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n ref = \"m\" + util.safeProp(field.name); gen\n (\"case %i: {\", field.id);\n\n // Map fields\n if (field.map) { gen\n (\"if(%s===util.emptyObject)\", ref)\n (\"%s={}\", ref)\n (\"var c2 = r.uint32()+r.pos\");\n\n if (types.defaults[field.keyType] !== undefined) gen\n (\"k=%j\", types.defaults[field.keyType]);\n else gen\n (\"k=null\");\n\n if (types.defaults[type] !== undefined) gen\n (\"value=%j\", types.defaults[type]);\n else gen\n (\"value=null\");\n\n gen\n (\"while(r.pos>>3){\")\n (\"case 1: k=r.%s(); break\", field.keyType)\n (\"case 2:\");\n\n if (types.basic[type] === undefined) gen\n (\"value=types[%i].decode(r,r.uint32())\", i); // can't be groups\n else gen\n (\"value=r.%s()\", type);\n\n gen\n (\"break\")\n (\"default:\")\n (\"r.skipType(tag2&7)\")\n (\"break\")\n (\"}\")\n (\"}\");\n\n if (types.long[field.keyType] !== undefined) gen\n (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=value\", ref);\n else gen\n (\"%s[k]=value\", ref);\n\n // Repeated fields\n } else if (field.repeated) { gen\n\n (\"if(!(%s&&%s.length))\", ref, ref)\n (\"%s=[]\", ref);\n\n // Packable (always check for forward and backward compatiblity)\n if (types.packed[type] !== undefined) gen\n (\"if((t&7)===2){\")\n (\"var c2=r.uint32()+r.pos\")\n (\"while(r.pos>> 0, (field.id << 3 | 4) >>> 0)\n : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\n}\n\n/**\n * Generates an encoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction encoder(mtype) {\n /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\n (\"if(!w)\")\n (\"w=Writer.create()\");\n\n var i, ref;\n\n // \"when a message is serialized its known fields should be written sequentially by field number\"\n var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\n\n for (var i = 0; i < fields.length; ++i) {\n var field = fields[i].resolve(),\n index = mtype._fieldsArray.indexOf(field),\n type = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n wireType = types.basic[type];\n ref = \"m\" + util.safeProp(field.name);\n\n // Map fields\n if (field.map) {\n gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j)){\", ref, field.name) // !== undefined && !== null\n (\"for(var ks=Object.keys(%s),i=0;i>> 0, 8 | types.mapKey[field.keyType], field.keyType);\n if (wireType === undefined) gen\n (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\n else gen\n (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\n gen\n (\"}\")\n (\"}\");\n\n // Repeated fields\n } else if (field.repeated) { gen\n (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\n\n // Packed repeated\n if (field.packed && types.packed[type] !== undefined) { gen\n\n (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\n (\"for(var i=0;i<%s.length;++i)\", ref)\n (\"w.%s(%s[i])\", type, ref)\n (\"w.ldelim()\");\n\n // Non-packed\n } else { gen\n\n (\"for(var i=0;i<%s.length;++i)\", ref);\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref + \"[i]\");\n else gen\n (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n } gen\n (\"}\");\n\n // Non-repeated\n } else {\n if (field.optional) gen\n (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j))\", ref, field.name); // !== undefined && !== null\n\n if (wireType === undefined)\n genTypePartial(gen, field, index, ref);\n else gen\n (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n }\n }\n\n return gen\n (\"return w\");\n /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n","\"use strict\";\nmodule.exports = Enum;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\n\nvar Namespace = require(\"./namespace\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new enum instance.\n * @classdesc Reflected enum.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {Object.} [values] Enum values as an object, by name\n * @param {Object.} [options] Declared options\n * @param {string} [comment] The comment for this enum\n * @param {Object.} [comments] The value comments for this enum\n * @param {Object.>|undefined} [valuesOptions] The value options for this enum\n */\nfunction Enum(name, values, options, comment, comments, valuesOptions) {\n ReflectionObject.call(this, name, options);\n\n if (values && typeof values !== \"object\")\n throw TypeError(\"values must be an object\");\n\n /**\n * Enum values by id.\n * @type {Object.}\n */\n this.valuesById = {};\n\n /**\n * Enum values by name.\n * @type {Object.}\n */\n this.values = Object.create(this.valuesById); // toJSON, marker\n\n /**\n * Enum comment text.\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Value comment texts, if any.\n * @type {Object.}\n */\n this.comments = comments || {};\n\n /**\n * Values options, if any\n * @type {Object>|undefined}\n */\n this.valuesOptions = valuesOptions;\n\n /**\n * Reserved ranges, if any.\n * @type {Array.}\n */\n this.reserved = undefined; // toJSON\n\n // Note that values inherit valuesById on their prototype which makes them a TypeScript-\n // compatible enum. This is used by pbts to write actual enum definitions that work for\n // static and reflection code alike instead of emitting generic object definitions.\n\n if (values)\n for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\n if (typeof values[keys[i]] === \"number\") // use forward entries only\n this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\n}\n\n/**\n * Enum descriptor.\n * @interface IEnum\n * @property {Object.} values Enum values\n * @property {Object.} [options] Enum options\n */\n\n/**\n * Constructs an enum from an enum descriptor.\n * @param {string} name Enum name\n * @param {IEnum} json Enum descriptor\n * @returns {Enum} Created enum\n * @throws {TypeError} If arguments are invalid\n */\nEnum.fromJSON = function fromJSON(name, json) {\n var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\n enm.reserved = json.reserved;\n return enm;\n};\n\n/**\n * Converts this enum to an enum descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IEnum} Enum descriptor\n */\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"valuesOptions\" , this.valuesOptions,\n \"values\" , this.values,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"comment\" , keepComments ? this.comment : undefined,\n \"comments\" , keepComments ? this.comments : undefined\n ]);\n};\n\n/**\n * Adds a value to this enum.\n * @param {string} name Value name\n * @param {number} id Value id\n * @param {string} [comment] Comment, if any\n * @param {Object.|undefined} [options] Options, if any\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a value with this name or id\n */\nEnum.prototype.add = function add(name, id, comment, options) {\n // utilized by the parser but not by .fromJSON\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (!util.isInteger(id))\n throw TypeError(\"id must be an integer\");\n\n if (this.values[name] !== undefined)\n throw Error(\"duplicate name '\" + name + \"' in \" + this);\n\n if (this.isReservedId(id))\n throw Error(\"id \" + id + \" is reserved in \" + this);\n\n if (this.isReservedName(name))\n throw Error(\"name '\" + name + \"' is reserved in \" + this);\n\n if (this.valuesById[id] !== undefined) {\n if (!(this.options && this.options.allow_alias))\n throw Error(\"duplicate id \" + id + \" in \" + this);\n this.values[name] = id;\n } else\n this.valuesById[this.values[name] = id] = name;\n\n if (options) {\n if (this.valuesOptions === undefined)\n this.valuesOptions = {};\n this.valuesOptions[name] = options || null;\n }\n\n this.comments[name] = comment || null;\n return this;\n};\n\n/**\n * Removes a value from this enum\n * @param {string} name Value name\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `name` is not a name of this enum\n */\nEnum.prototype.remove = function remove(name) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n var val = this.values[name];\n if (val == null)\n throw Error(\"name '\" + name + \"' does not exist in \" + this);\n\n delete this.valuesById[val];\n delete this.values[name];\n delete this.comments[name];\n if (this.valuesOptions)\n delete this.valuesOptions[name];\n\n return this;\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n","\"use strict\";\nmodule.exports = Field;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\n\nvar Enum = require(\"./enum\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nvar Type; // cyclic\n\nvar ruleRe = /^required|optional|repeated$/;\n\n/**\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\n * @name Field\n * @classdesc Reflected message field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.} [rule=\"optional\"] Field rule\n * @param {string|Object.} [extend] Extended type if different from parent\n * @param {Object.} [options] Declared options\n */\n\n/**\n * Constructs a field from a field descriptor.\n * @param {string} name Field name\n * @param {IField} json Field descriptor\n * @returns {Field} Created field\n * @throws {TypeError} If arguments are invalid\n */\nField.fromJSON = function fromJSON(name, json) {\n return new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\n};\n\n/**\n * Not an actual constructor. Use {@link Field} instead.\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports FieldBase\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.} [rule=\"optional\"] Field rule\n * @param {string|Object.} [extend] Extended type if different from parent\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction Field(name, id, type, rule, extend, options, comment) {\n\n if (util.isObject(rule)) {\n comment = extend;\n options = rule;\n rule = extend = undefined;\n } else if (util.isObject(extend)) {\n comment = options;\n options = extend;\n extend = undefined;\n }\n\n ReflectionObject.call(this, name, options);\n\n if (!util.isInteger(id) || id < 0)\n throw TypeError(\"id must be a non-negative integer\");\n\n if (!util.isString(type))\n throw TypeError(\"type must be a string\");\n\n if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\n throw TypeError(\"rule must be a string rule\");\n\n if (extend !== undefined && !util.isString(extend))\n throw TypeError(\"extend must be a string\");\n\n /**\n * Field rule, if any.\n * @type {string|undefined}\n */\n if (rule === \"proto3_optional\") {\n rule = \"optional\";\n }\n this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\n\n /**\n * Field type.\n * @type {string}\n */\n this.type = type; // toJSON\n\n /**\n * Unique field id.\n * @type {number}\n */\n this.id = id; // toJSON, marker\n\n /**\n * Extended type if different from parent.\n * @type {string|undefined}\n */\n this.extend = extend || undefined; // toJSON\n\n /**\n * Whether this field is required.\n * @type {boolean}\n */\n this.required = rule === \"required\";\n\n /**\n * Whether this field is optional.\n * @type {boolean}\n */\n this.optional = !this.required;\n\n /**\n * Whether this field is repeated.\n * @type {boolean}\n */\n this.repeated = rule === \"repeated\";\n\n /**\n * Whether this field is a map or not.\n * @type {boolean}\n */\n this.map = false;\n\n /**\n * Message this field belongs to.\n * @type {Type|null}\n */\n this.message = null;\n\n /**\n * OneOf this field belongs to, if any,\n * @type {OneOf|null}\n */\n this.partOf = null;\n\n /**\n * The field type's default value.\n * @type {*}\n */\n this.typeDefault = null;\n\n /**\n * The field's default value on prototypes.\n * @type {*}\n */\n this.defaultValue = null;\n\n /**\n * Whether this field's value should be treated as a long.\n * @type {boolean}\n */\n this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\n\n /**\n * Whether this field's value is a buffer.\n * @type {boolean}\n */\n this.bytes = type === \"bytes\";\n\n /**\n * Resolved type if not a basic type.\n * @type {Type|Enum|null}\n */\n this.resolvedType = null;\n\n /**\n * Sister-field within the extended type if a declaring extension field.\n * @type {Field|null}\n */\n this.extensionField = null;\n\n /**\n * Sister-field within the declaring namespace if an extended field.\n * @type {Field|null}\n */\n this.declaringField = null;\n\n /**\n * Internally remembers whether this field is packed.\n * @type {boolean|null}\n * @private\n */\n this._packed = null;\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Determines whether this field is packed. Only relevant when repeated and working with proto2.\n * @name Field#packed\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"packed\", {\n get: function() {\n // defaults to packed=true if not explicity set to false\n if (this._packed === null)\n this._packed = this.getOption(\"packed\") !== false;\n return this._packed;\n }\n});\n\n/**\n * @override\n */\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (name === \"packed\") // clear cached before setting\n this._packed = null;\n return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\n};\n\n/**\n * Field descriptor.\n * @interface IField\n * @property {string} [rule=\"optional\"] Field rule\n * @property {string} type Field type\n * @property {number} id Field id\n * @property {Object.} [options] Field options\n */\n\n/**\n * Extension field descriptor.\n * @interface IExtensionField\n * @extends IField\n * @property {string} extend Extended type\n */\n\n/**\n * Converts this field to a field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IField} Field descriptor\n */\nField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"rule\" , this.rule !== \"optional\" && this.rule || undefined,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Resolves this field's type references.\n * @returns {Field} `this`\n * @throws {Error} If any reference cannot be resolved\n */\nField.prototype.resolve = function resolve() {\n\n if (this.resolved)\n return this;\n\n if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\n this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\n if (this.resolvedType instanceof Type)\n this.typeDefault = null;\n else // instanceof Enum\n this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\n } else if (this.options && this.options.proto3_optional) {\n // proto3 scalar value marked optional; should default to null\n this.typeDefault = null;\n }\n\n // use explicitly set default value if present\n if (this.options && this.options[\"default\"] != null) {\n this.typeDefault = this.options[\"default\"];\n if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\n this.typeDefault = this.resolvedType.values[this.typeDefault];\n }\n\n // remove unnecessary options\n if (this.options) {\n if (this.options.packed === true || this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\n delete this.options.packed;\n if (!Object.keys(this.options).length)\n this.options = undefined;\n }\n\n // convert to internal data type if necesssary\n if (this.long) {\n this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\n\n /* istanbul ignore else */\n if (Object.freeze)\n Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\n\n } else if (this.bytes && typeof this.typeDefault === \"string\") {\n var buf;\n if (util.base64.test(this.typeDefault))\n util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\n else\n util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\n this.typeDefault = buf;\n }\n\n // take special care of maps and repeated fields\n if (this.map)\n this.defaultValue = util.emptyObject;\n else if (this.repeated)\n this.defaultValue = util.emptyArray;\n else\n this.defaultValue = this.typeDefault;\n\n // ensure proper value on prototype\n if (this.parent instanceof Type)\n this.parent.ctor.prototype[this.name] = this.defaultValue;\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n\n/**\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\n * @typedef FieldDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} fieldName Field name\n * @returns {undefined}\n */\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @param {T} [defaultValue] Default value\n * @returns {FieldDecorator} Decorator function\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\n */\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\n\n // submessage: decorate the submessage and use its name as the type\n if (typeof fieldType === \"function\")\n fieldType = util.decorateType(fieldType).name;\n\n // enum reference: create a reflected copy of the enum and keep reuseing it\n else if (fieldType && typeof fieldType === \"object\")\n fieldType = util.decorateEnum(fieldType).name;\n\n return function fieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\n };\n};\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {Constructor|string} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @returns {FieldDecorator} Decorator function\n * @template T extends Message\n * @variation 2\n */\n// like Field.d but without a default value\n\n// Sets up cyclic dependencies (called in index-light)\nField._configure = function configure(Type_) {\n Type = Type_;\n};\n","\"use strict\";\nvar protobuf = module.exports = require(\"./index-minimal\");\n\nprotobuf.build = \"light\";\n\n/**\n * A node-style callback as used by {@link load} and {@link Root#load}.\n * @typedef LoadCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Root} [root] Root, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n */\nfunction load(filename, root, callback) {\n if (typeof root === \"function\") {\n callback = root;\n root = new protobuf.Root();\n } else if (!root)\n root = new protobuf.Root();\n return root.load(filename, callback);\n}\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Promise} Promise\n * @see {@link Root#load}\n * @variation 3\n */\n// function load(filename:string, [root:Root]):Promise\n\nprotobuf.load = load;\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n * @see {@link Root#loadSync}\n */\nfunction loadSync(filename, root) {\n if (!root)\n root = new protobuf.Root();\n return root.loadSync(filename);\n}\n\nprotobuf.loadSync = loadSync;\n\n// Serialization\nprotobuf.encoder = require(\"./encoder\");\nprotobuf.decoder = require(\"./decoder\");\nprotobuf.verifier = require(\"./verifier\");\nprotobuf.converter = require(\"./converter\");\n\n// Reflection\nprotobuf.ReflectionObject = require(\"./object\");\nprotobuf.Namespace = require(\"./namespace\");\nprotobuf.Root = require(\"./root\");\nprotobuf.Enum = require(\"./enum\");\nprotobuf.Type = require(\"./type\");\nprotobuf.Field = require(\"./field\");\nprotobuf.OneOf = require(\"./oneof\");\nprotobuf.MapField = require(\"./mapfield\");\nprotobuf.Service = require(\"./service\");\nprotobuf.Method = require(\"./method\");\n\n// Runtime\nprotobuf.Message = require(\"./message\");\nprotobuf.wrappers = require(\"./wrappers\");\n\n// Utility\nprotobuf.types = require(\"./types\");\nprotobuf.util = require(\"./util\");\n\n// Set up possibly cyclic reflection dependencies\nprotobuf.ReflectionObject._configure(protobuf.Root);\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum);\nprotobuf.Root._configure(protobuf.Type);\nprotobuf.Field._configure(protobuf.Type);\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","\"use strict\";\nvar protobuf = module.exports = require(\"./index-light\");\n\nprotobuf.build = \"full\";\n\n// Parser\nprotobuf.tokenize = require(\"./tokenize\");\nprotobuf.parse = require(\"./parse\");\nprotobuf.common = require(\"./common\");\n\n// Configure parser\nprotobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common);\n","\"use strict\";\nmodule.exports = MapField;\n\n// extends Field\nvar Field = require(\"./field\");\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\n\nvar types = require(\"./types\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new map field instance.\n * @classdesc Reflected map field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} keyType Key type\n * @param {string} type Value type\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction MapField(name, id, keyType, type, options, comment) {\n Field.call(this, name, id, type, undefined, undefined, options, comment);\n\n /* istanbul ignore if */\n if (!util.isString(keyType))\n throw TypeError(\"keyType must be a string\");\n\n /**\n * Key type.\n * @type {string}\n */\n this.keyType = keyType; // toJSON, marker\n\n /**\n * Resolved key type if not a basic type.\n * @type {ReflectionObject|null}\n */\n this.resolvedKeyType = null;\n\n // Overrides Field#map\n this.map = true;\n}\n\n/**\n * Map field descriptor.\n * @interface IMapField\n * @extends {IField}\n * @property {string} keyType Key type\n */\n\n/**\n * Extension map field descriptor.\n * @interface IExtensionMapField\n * @extends IMapField\n * @property {string} extend Extended type\n */\n\n/**\n * Constructs a map field from a map field descriptor.\n * @param {string} name Field name\n * @param {IMapField} json Map field descriptor\n * @returns {MapField} Created map field\n * @throws {TypeError} If arguments are invalid\n */\nMapField.fromJSON = function fromJSON(name, json) {\n return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\n};\n\n/**\n * Converts this map field to a map field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMapField} Map field descriptor\n */\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"keyType\" , this.keyType,\n \"type\" , this.type,\n \"id\" , this.id,\n \"extend\" , this.extend,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nMapField.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n\n // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\n if (types.mapKey[this.keyType] === undefined)\n throw Error(\"invalid key type: \" + this.keyType);\n\n return Field.prototype.resolve.call(this);\n};\n\n/**\n * Map field decorator (TypeScript).\n * @name MapField.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\n * @returns {FieldDecorator} Decorator function\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\n */\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\n\n // submessage value: decorate the submessage and use its name as the type\n if (typeof fieldValueType === \"function\")\n fieldValueType = util.decorateType(fieldValueType).name;\n\n // enum reference value: create a reflected copy of the enum and keep reuseing it\n else if (fieldValueType && typeof fieldValueType === \"object\")\n fieldValueType = util.decorateEnum(fieldValueType).name;\n\n return function mapFieldDecorator(prototype, fieldName) {\n util.decorateType(prototype.constructor)\n .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\n };\n};\n","\"use strict\";\nmodule.exports = Message;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new message instance.\n * @classdesc Abstract runtime message.\n * @constructor\n * @param {Properties} [properties] Properties to set\n * @template T extends object = object\n */\nfunction Message(properties) {\n // not used internally\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n this[keys[i]] = properties[keys[i]];\n}\n\n/**\n * Reference to the reflected type.\n * @name Message.$type\n * @type {Type}\n * @readonly\n */\n\n/**\n * Reference to the reflected type.\n * @name Message#$type\n * @type {Type}\n * @readonly\n */\n\n/*eslint-disable valid-jsdoc*/\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.} [properties] Properties to set\n * @returns {Message} Message instance\n * @template T extends Message\n * @this Constructor\n */\nMessage.create = function create(properties) {\n return this.$type.create(properties);\n};\n\n/**\n * Encodes a message of this type.\n * @param {T|Object.} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message\n * @this Constructor\n */\nMessage.encode = function encode(message, writer) {\n return this.$type.encode(message, writer);\n};\n\n/**\n * Encodes a message of this type preceeded by its length as a varint.\n * @param {T|Object.} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message\n * @this Constructor\n */\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\n return this.$type.encodeDelimited(message, writer);\n};\n\n/**\n * Decodes a message of this type.\n * @name Message.decode\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message\n * @this Constructor\n */\nMessage.decode = function decode(reader) {\n return this.$type.decode(reader);\n};\n\n/**\n * Decodes a message of this type preceeded by its length as a varint.\n * @name Message.decodeDelimited\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message\n * @this Constructor\n */\nMessage.decodeDelimited = function decodeDelimited(reader) {\n return this.$type.decodeDelimited(reader);\n};\n\n/**\n * Verifies a message of this type.\n * @name Message.verify\n * @function\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\nMessage.verify = function verify(message) {\n return this.$type.verify(message);\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.} object Plain object\n * @returns {T} Message instance\n * @template T extends Message\n * @this Constructor\n */\nMessage.fromObject = function fromObject(object) {\n return this.$type.fromObject(object);\n};\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {T} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n * @template T extends Message\n * @this Constructor\n */\nMessage.toObject = function toObject(message, options) {\n return this.$type.toObject(message, options);\n};\n\n/**\n * Converts this message to JSON.\n * @returns {Object.} JSON object\n */\nMessage.prototype.toJSON = function toJSON() {\n return this.$type.toObject(this, util.toJSONOptions);\n};\n\n/*eslint-enable valid-jsdoc*/","\"use strict\";\nmodule.exports = Method;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\n\nvar util = require(\"./util\");\n\n/**\n * Constructs a new service method instance.\n * @classdesc Reflected service method.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Method name\n * @param {string|undefined} type Method type, usually `\"rpc\"`\n * @param {string} requestType Request message type\n * @param {string} responseType Response message type\n * @param {boolean|Object.} [requestStream] Whether the request is streamed\n * @param {boolean|Object.} [responseStream] Whether the response is streamed\n * @param {Object.} [options] Declared options\n * @param {string} [comment] The comment for this method\n * @param {Object.} [parsedOptions] Declared options, properly parsed into an object\n */\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {\n\n /* istanbul ignore next */\n if (util.isObject(requestStream)) {\n options = requestStream;\n requestStream = responseStream = undefined;\n } else if (util.isObject(responseStream)) {\n options = responseStream;\n responseStream = undefined;\n }\n\n /* istanbul ignore if */\n if (!(type === undefined || util.isString(type)))\n throw TypeError(\"type must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(requestType))\n throw TypeError(\"requestType must be a string\");\n\n /* istanbul ignore if */\n if (!util.isString(responseType))\n throw TypeError(\"responseType must be a string\");\n\n ReflectionObject.call(this, name, options);\n\n /**\n * Method type.\n * @type {string}\n */\n this.type = type || \"rpc\"; // toJSON\n\n /**\n * Request type.\n * @type {string}\n */\n this.requestType = requestType; // toJSON, marker\n\n /**\n * Whether requests are streamed or not.\n * @type {boolean|undefined}\n */\n this.requestStream = requestStream ? true : undefined; // toJSON\n\n /**\n * Response type.\n * @type {string}\n */\n this.responseType = responseType; // toJSON\n\n /**\n * Whether responses are streamed or not.\n * @type {boolean|undefined}\n */\n this.responseStream = responseStream ? true : undefined; // toJSON\n\n /**\n * Resolved request type.\n * @type {Type|null}\n */\n this.resolvedRequestType = null;\n\n /**\n * Resolved response type.\n * @type {Type|null}\n */\n this.resolvedResponseType = null;\n\n /**\n * Comment for this method\n * @type {string|null}\n */\n this.comment = comment;\n\n /**\n * Options properly parsed into an object\n */\n this.parsedOptions = parsedOptions;\n}\n\n/**\n * Method descriptor.\n * @interface IMethod\n * @property {string} [type=\"rpc\"] Method type\n * @property {string} requestType Request type\n * @property {string} responseType Response type\n * @property {boolean} [requestStream=false] Whether requests are streamed\n * @property {boolean} [responseStream=false] Whether responses are streamed\n * @property {Object.} [options] Method options\n * @property {string} comment Method comments\n * @property {Object.} [parsedOptions] Method options properly parsed into an object\n */\n\n/**\n * Constructs a method from a method descriptor.\n * @param {string} name Method name\n * @param {IMethod} json Method descriptor\n * @returns {Method} Created method\n * @throws {TypeError} If arguments are invalid\n */\nMethod.fromJSON = function fromJSON(name, json) {\n return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);\n};\n\n/**\n * Converts this method to a method descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMethod} Method descriptor\n */\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"type\" , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\n \"requestType\" , this.requestType,\n \"requestStream\" , this.requestStream,\n \"responseType\" , this.responseType,\n \"responseStream\" , this.responseStream,\n \"options\" , this.options,\n \"comment\" , keepComments ? this.comment : undefined,\n \"parsedOptions\" , this.parsedOptions,\n ]);\n};\n\n/**\n * @override\n */\nMethod.prototype.resolve = function resolve() {\n\n /* istanbul ignore if */\n if (this.resolved)\n return this;\n\n this.resolvedRequestType = this.parent.lookupType(this.requestType);\n this.resolvedResponseType = this.parent.lookupType(this.responseType);\n\n return ReflectionObject.prototype.resolve.call(this);\n};\n","\"use strict\";\nmodule.exports = Namespace;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\"),\n OneOf = require(\"./oneof\");\n\nvar Type, // cyclic\n Service,\n Enum;\n\n/**\n * Constructs a new namespace instance.\n * @name Namespace\n * @classdesc Reflected namespace.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.} [options] Declared options\n */\n\n/**\n * Constructs a namespace from JSON.\n * @memberof Namespace\n * @function\n * @param {string} name Namespace name\n * @param {Object.} json JSON object\n * @returns {Namespace} Created namespace\n * @throws {TypeError} If arguments are invalid\n */\nNamespace.fromJSON = function fromJSON(name, json) {\n return new Namespace(name, json.options).addJSON(json.nested);\n};\n\n/**\n * Converts an array of reflection objects to JSON.\n * @memberof Namespace\n * @param {ReflectionObject[]} array Object array\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {Object.|undefined} JSON object or `undefined` when array is empty\n */\nfunction arrayToJSON(array, toJSONOptions) {\n if (!(array && array.length))\n return undefined;\n var obj = {};\n for (var i = 0; i < array.length; ++i)\n obj[array[i].name] = array[i].toJSON(toJSONOptions);\n return obj;\n}\n\nNamespace.arrayToJSON = arrayToJSON;\n\n/**\n * Tests if the specified id is reserved.\n * @param {Array.|undefined} reserved Array of reserved ranges and names\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedId = function isReservedId(reserved, id) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] > id)\n return true;\n return false;\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {Array.|undefined} reserved Array of reserved ranges and names\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedName = function isReservedName(reserved, name) {\n if (reserved)\n for (var i = 0; i < reserved.length; ++i)\n if (reserved[i] === name)\n return true;\n return false;\n};\n\n/**\n * Not an actual constructor. Use {@link Namespace} instead.\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports NamespaceBase\n * @extends ReflectionObject\n * @abstract\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.} [options] Declared options\n * @see {@link Namespace}\n */\nfunction Namespace(name, options) {\n ReflectionObject.call(this, name, options);\n\n /**\n * Nested objects by name.\n * @type {Object.|undefined}\n */\n this.nested = undefined; // toJSON\n\n /**\n * Cached nested objects as an array.\n * @type {ReflectionObject[]|null}\n * @private\n */\n this._nestedArray = null;\n}\n\nfunction clearCache(namespace) {\n namespace._nestedArray = null;\n return namespace;\n}\n\n/**\n * Nested objects of this namespace as an array for iteration.\n * @name NamespaceBase#nestedArray\n * @type {ReflectionObject[]}\n * @readonly\n */\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\n get: function() {\n return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\n }\n});\n\n/**\n * Namespace descriptor.\n * @interface INamespace\n * @property {Object.} [options] Namespace options\n * @property {Object.} [nested] Nested object descriptors\n */\n\n/**\n * Any extension field descriptor.\n * @typedef AnyExtensionField\n * @type {IExtensionField|IExtensionMapField}\n */\n\n/**\n * Any nested object descriptor.\n * @typedef AnyNestedObject\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf}\n */\n\n/**\n * Converts this namespace to a namespace descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {INamespace} Namespace descriptor\n */\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\n return util.toObject([\n \"options\" , this.options,\n \"nested\" , arrayToJSON(this.nestedArray, toJSONOptions)\n ]);\n};\n\n/**\n * Adds nested objects to this namespace from nested object descriptors.\n * @param {Object.} nestedJson Any nested object descriptors\n * @returns {Namespace} `this`\n */\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\n var ns = this;\n /* istanbul ignore else */\n if (nestedJson) {\n for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\n nested = nestedJson[names[i]];\n ns.add( // most to least likely\n ( nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : nested.id !== undefined\n ? Field.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n }\n return this;\n};\n\n/**\n * Gets the nested object of the specified name.\n * @param {string} name Nested object name\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\n */\nNamespace.prototype.get = function get(name) {\n return this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Gets the values of the nested {@link Enum|enum} of the specified name.\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\n * @param {string} name Nested enum name\n * @returns {Object.} Enum values\n * @throws {Error} If there is no such enum\n */\nNamespace.prototype.getEnum = function getEnum(name) {\n if (this.nested && this.nested[name] instanceof Enum)\n return this.nested[name].values;\n throw Error(\"no such enum: \" + name);\n};\n\n/**\n * Adds a nested object to this namespace.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name\n */\nNamespace.prototype.add = function add(object) {\n\n if (!(object instanceof Field && object.extend !== undefined || object instanceof Type || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace))\n throw TypeError(\"object must be a valid nested object\");\n\n if (!this.nested)\n this.nested = {};\n else {\n var prev = this.get(object.name);\n if (prev) {\n if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\n // replace plain namespace but keep existing nested elements and options\n var nested = prev.nestedArray;\n for (var i = 0; i < nested.length; ++i)\n object.add(nested[i]);\n this.remove(prev);\n if (!this.nested)\n this.nested = {};\n object.setOptions(prev.options, true);\n\n } else\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n }\n }\n this.nested[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n};\n\n/**\n * Removes a nested object from this namespace.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this namespace\n */\nNamespace.prototype.remove = function remove(object) {\n\n if (!(object instanceof ReflectionObject))\n throw TypeError(\"object must be a ReflectionObject\");\n if (object.parent !== this)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.nested[object.name];\n if (!Object.keys(this.nested).length)\n this.nested = undefined;\n\n object.onRemove(this);\n return clearCache(this);\n};\n\n/**\n * Defines additial namespaces within this one if not yet existing.\n * @param {string|string[]} path Path to create\n * @param {*} [json] Nested types to create from JSON\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\n */\nNamespace.prototype.define = function define(path, json) {\n\n if (util.isString(path))\n path = path.split(\".\");\n else if (!Array.isArray(path))\n throw TypeError(\"illegal path\");\n if (path && path.length && path[0] === \"\")\n throw Error(\"path must be relative\");\n\n var ptr = this;\n while (path.length > 0) {\n var part = path.shift();\n if (ptr.nested && ptr.nested[part]) {\n ptr = ptr.nested[part];\n if (!(ptr instanceof Namespace))\n throw Error(\"path conflicts with non-namespace objects\");\n } else\n ptr.add(ptr = new Namespace(part));\n }\n if (json)\n ptr.addJSON(json);\n return ptr;\n};\n\n/**\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\n * @returns {Namespace} `this`\n */\nNamespace.prototype.resolveAll = function resolveAll() {\n var nested = this.nestedArray, i = 0;\n while (i < nested.length)\n if (nested[i] instanceof Namespace)\n nested[i++].resolveAll();\n else\n nested[i++].resolve();\n return this.resolve();\n};\n\n/**\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\n * @param {string|string[]} path Path to look up\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n */\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\n\n /* istanbul ignore next */\n if (typeof filterTypes === \"boolean\") {\n parentAlreadyChecked = filterTypes;\n filterTypes = undefined;\n } else if (filterTypes && !Array.isArray(filterTypes))\n filterTypes = [ filterTypes ];\n\n if (util.isString(path) && path.length) {\n if (path === \".\")\n return this.root;\n path = path.split(\".\");\n } else if (!path.length)\n return this;\n\n // Start at root if path is absolute\n if (path[0] === \"\")\n return this.root.lookup(path.slice(1), filterTypes);\n\n // Test if the first part matches any nested object, and if so, traverse if path contains more\n var found = this.get(path[0]);\n if (found) {\n if (path.length === 1) {\n if (!filterTypes || filterTypes.indexOf(found.constructor) > -1)\n return found;\n } else if (found instanceof Namespace && (found = found.lookup(path.slice(1), filterTypes, true)))\n return found;\n\n // Otherwise try each nested namespace\n } else\n for (var i = 0; i < this.nestedArray.length; ++i)\n if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i].lookup(path, filterTypes, true)))\n return found;\n\n // If there hasn't been a match, try again at the parent\n if (this.parent === null || parentAlreadyChecked)\n return null;\n return this.parent.lookup(path, filterTypes);\n};\n\n/**\n * Looks up the reflection object at the specified path, relative to this namespace.\n * @name NamespaceBase#lookup\n * @function\n * @param {string|string[]} path Path to look up\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @variation 2\n */\n// lookup(path: string, [parentAlreadyChecked: boolean])\n\n/**\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type\n * @throws {Error} If `path` does not point to a type\n */\nNamespace.prototype.lookupType = function lookupType(path) {\n var found = this.lookup(path, [ Type ]);\n if (!found)\n throw Error(\"no such type: \" + path);\n return found;\n};\n\n/**\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Enum} Looked up enum\n * @throws {Error} If `path` does not point to an enum\n */\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\n var found = this.lookup(path, [ Enum ]);\n if (!found)\n throw Error(\"no such Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type or enum\n * @throws {Error} If `path` does not point to a type or enum\n */\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\n var found = this.lookup(path, [ Type, Enum ]);\n if (!found)\n throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\n return found;\n};\n\n/**\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Service} Looked up service\n * @throws {Error} If `path` does not point to a service\n */\nNamespace.prototype.lookupService = function lookupService(path) {\n var found = this.lookup(path, [ Service ]);\n if (!found)\n throw Error(\"no such Service '\" + path + \"' in \" + this);\n return found;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nNamespace._configure = function(Type_, Service_, Enum_) {\n Type = Type_;\n Service = Service_;\n Enum = Enum_;\n};\n","\"use strict\";\nmodule.exports = ReflectionObject;\n\nReflectionObject.className = \"ReflectionObject\";\n\nvar util = require(\"./util\");\n\nvar Root; // cyclic\n\n/**\n * Constructs a new reflection object instance.\n * @classdesc Base class of all reflection objects.\n * @constructor\n * @param {string} name Object name\n * @param {Object.} [options] Declared options\n * @abstract\n */\nfunction ReflectionObject(name, options) {\n\n if (!util.isString(name))\n throw TypeError(\"name must be a string\");\n\n if (options && !util.isObject(options))\n throw TypeError(\"options must be an object\");\n\n /**\n * Options.\n * @type {Object.|undefined}\n */\n this.options = options; // toJSON\n\n /**\n * Parsed Options.\n * @type {Array.>|undefined}\n */\n this.parsedOptions = null;\n\n /**\n * Unique name within its namespace.\n * @type {string}\n */\n this.name = name;\n\n /**\n * Parent namespace.\n * @type {Namespace|null}\n */\n this.parent = null;\n\n /**\n * Whether already resolved or not.\n * @type {boolean}\n */\n this.resolved = false;\n\n /**\n * Comment text, if any.\n * @type {string|null}\n */\n this.comment = null;\n\n /**\n * Defining file name.\n * @type {string|null}\n */\n this.filename = null;\n}\n\nObject.defineProperties(ReflectionObject.prototype, {\n\n /**\n * Reference to the root namespace.\n * @name ReflectionObject#root\n * @type {Root}\n * @readonly\n */\n root: {\n get: function() {\n var ptr = this;\n while (ptr.parent !== null)\n ptr = ptr.parent;\n return ptr;\n }\n },\n\n /**\n * Full name including leading dot.\n * @name ReflectionObject#fullName\n * @type {string}\n * @readonly\n */\n fullName: {\n get: function() {\n var path = [ this.name ],\n ptr = this.parent;\n while (ptr) {\n path.unshift(ptr.name);\n ptr = ptr.parent;\n }\n return path.join(\".\");\n }\n }\n});\n\n/**\n * Converts this reflection object to its descriptor representation.\n * @returns {Object.} Descriptor\n * @abstract\n */\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\n throw Error(); // not implemented, shouldn't happen\n};\n\n/**\n * Called when this object is added to a parent.\n * @param {ReflectionObject} parent Parent added to\n * @returns {undefined}\n */\nReflectionObject.prototype.onAdd = function onAdd(parent) {\n if (this.parent && this.parent !== parent)\n this.parent.remove(this);\n this.parent = parent;\n this.resolved = false;\n var root = parent.root;\n if (root instanceof Root)\n root._handleAdd(this);\n};\n\n/**\n * Called when this object is removed from a parent.\n * @param {ReflectionObject} parent Parent removed from\n * @returns {undefined}\n */\nReflectionObject.prototype.onRemove = function onRemove(parent) {\n var root = parent.root;\n if (root instanceof Root)\n root._handleRemove(this);\n this.parent = null;\n this.resolved = false;\n};\n\n/**\n * Resolves this objects type references.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.resolve = function resolve() {\n if (this.resolved)\n return this;\n if (this.root instanceof Root)\n this.resolved = true; // only if part of a root\n return this;\n};\n\n/**\n * Gets an option value.\n * @param {string} name Option name\n * @returns {*} Option value or `undefined` if not set\n */\nReflectionObject.prototype.getOption = function getOption(name) {\n if (this.options)\n return this.options[name];\n return undefined;\n};\n\n/**\n * Sets an option.\n * @param {string} name Option name\n * @param {*} value Option value\n * @param {boolean} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\n if (!ifNotSet || !this.options || this.options[name] === undefined)\n (this.options || (this.options = {}))[name] = value;\n return this;\n};\n\n/**\n * Sets a parsed option.\n * @param {string} name parsed Option name\n * @param {*} value Option value\n * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\\empty, will add a new option with that value\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) {\n if (!this.parsedOptions) {\n this.parsedOptions = [];\n }\n var parsedOptions = this.parsedOptions;\n if (propName) {\n // If setting a sub property of an option then try to merge it\n // with an existing option\n var opt = parsedOptions.find(function (opt) {\n return Object.prototype.hasOwnProperty.call(opt, name);\n });\n if (opt) {\n // If we found an existing option - just merge the property value\n var newValue = opt[name];\n util.setProperty(newValue, propName, value);\n } else {\n // otherwise, create a new option, set it's property and add it to the list\n opt = {};\n opt[name] = util.setProperty({}, propName, value);\n parsedOptions.push(opt);\n }\n } else {\n // Always create a new option when setting the value of the option itself\n var newOpt = {};\n newOpt[name] = value;\n parsedOptions.push(newOpt);\n }\n return this;\n};\n\n/**\n * Sets multiple options.\n * @param {Object.} options Options to set\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\n if (options)\n for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\n this.setOption(keys[i], options[keys[i]], ifNotSet);\n return this;\n};\n\n/**\n * Converts this instance to its string representation.\n * @returns {string} Class name[, space, full name]\n */\nReflectionObject.prototype.toString = function toString() {\n var className = this.constructor.className,\n fullName = this.fullName;\n if (fullName.length)\n return className + \" \" + fullName;\n return className;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nReflectionObject._configure = function(Root_) {\n Root = Root_;\n};\n","\"use strict\";\nmodule.exports = OneOf;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\n\nvar Field = require(\"./field\"),\n util = require(\"./util\");\n\n/**\n * Constructs a new oneof instance.\n * @classdesc Reflected oneof.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Oneof name\n * @param {string[]|Object.} [fieldNames] Field names\n * @param {Object.} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction OneOf(name, fieldNames, options, comment) {\n if (!Array.isArray(fieldNames)) {\n options = fieldNames;\n fieldNames = undefined;\n }\n ReflectionObject.call(this, name, options);\n\n /* istanbul ignore if */\n if (!(fieldNames === undefined || Array.isArray(fieldNames)))\n throw TypeError(\"fieldNames must be an Array\");\n\n /**\n * Field names that belong to this oneof.\n * @type {string[]}\n */\n this.oneof = fieldNames || []; // toJSON, marker\n\n /**\n * Fields that belong to this oneof as an array for iteration.\n * @type {Field[]}\n * @readonly\n */\n this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\n\n /**\n * Comment for this field.\n * @type {string|null}\n */\n this.comment = comment;\n}\n\n/**\n * Oneof descriptor.\n * @interface IOneOf\n * @property {Array.} oneof Oneof field names\n * @property {Object.} [options] Oneof options\n */\n\n/**\n * Constructs a oneof from a oneof descriptor.\n * @param {string} name Oneof name\n * @param {IOneOf} json Oneof descriptor\n * @returns {OneOf} Created oneof\n * @throws {TypeError} If arguments are invalid\n */\nOneOf.fromJSON = function fromJSON(name, json) {\n return new OneOf(name, json.oneof, json.options, json.comment);\n};\n\n/**\n * Converts this oneof to a oneof descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IOneOf} Oneof descriptor\n */\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , this.options,\n \"oneof\" , this.oneof,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Adds the fields of the specified oneof to the parent if not already done so.\n * @param {OneOf} oneof The oneof\n * @returns {undefined}\n * @inner\n * @ignore\n */\nfunction addFieldsToParent(oneof) {\n if (oneof.parent)\n for (var i = 0; i < oneof.fieldsArray.length; ++i)\n if (!oneof.fieldsArray[i].parent)\n oneof.parent.add(oneof.fieldsArray[i]);\n}\n\n/**\n * Adds a field to this oneof and removes it from its current parent, if any.\n * @param {Field} field Field to add\n * @returns {OneOf} `this`\n */\nOneOf.prototype.add = function add(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n if (field.parent && field.parent !== this.parent)\n field.parent.remove(field);\n this.oneof.push(field.name);\n this.fieldsArray.push(field);\n field.partOf = this; // field.parent remains null\n addFieldsToParent(this);\n return this;\n};\n\n/**\n * Removes a field from this oneof and puts it back to the oneof's parent.\n * @param {Field} field Field to remove\n * @returns {OneOf} `this`\n */\nOneOf.prototype.remove = function remove(field) {\n\n /* istanbul ignore if */\n if (!(field instanceof Field))\n throw TypeError(\"field must be a Field\");\n\n var index = this.fieldsArray.indexOf(field);\n\n /* istanbul ignore if */\n if (index < 0)\n throw Error(field + \" is not a member of \" + this);\n\n this.fieldsArray.splice(index, 1);\n index = this.oneof.indexOf(field.name);\n\n /* istanbul ignore else */\n if (index > -1) // theoretical\n this.oneof.splice(index, 1);\n\n field.partOf = null;\n return this;\n};\n\n/**\n * @override\n */\nOneOf.prototype.onAdd = function onAdd(parent) {\n ReflectionObject.prototype.onAdd.call(this, parent);\n var self = this;\n // Collect present fields\n for (var i = 0; i < this.oneof.length; ++i) {\n var field = parent.get(this.oneof[i]);\n if (field && !field.partOf) {\n field.partOf = self;\n self.fieldsArray.push(field);\n }\n }\n // Add not yet present fields\n addFieldsToParent(this);\n};\n\n/**\n * @override\n */\nOneOf.prototype.onRemove = function onRemove(parent) {\n for (var i = 0, field; i < this.fieldsArray.length; ++i)\n if ((field = this.fieldsArray[i]).parent)\n field.parent.remove(field);\n ReflectionObject.prototype.onRemove.call(this, parent);\n};\n\n/**\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\n * @typedef OneOfDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} oneofName OneOf name\n * @returns {undefined}\n */\n\n/**\n * OneOf decorator (TypeScript).\n * @function\n * @param {...string} fieldNames Field names\n * @returns {OneOfDecorator} Decorator function\n * @template T extends string\n */\nOneOf.d = function decorateOneOf() {\n var fieldNames = new Array(arguments.length),\n index = 0;\n while (index < arguments.length)\n fieldNames[index] = arguments[index++];\n return function oneOfDecorator(prototype, oneofName) {\n util.decorateType(prototype.constructor)\n .add(new OneOf(oneofName, fieldNames));\n Object.defineProperty(prototype, oneofName, {\n get: util.oneOfGetter(fieldNames),\n set: util.oneOfSetter(fieldNames)\n });\n };\n};\n","\"use strict\";\nmodule.exports = parse;\n\nparse.filename = null;\nparse.defaults = { keepCase: false };\n\nvar tokenize = require(\"./tokenize\"),\n Root = require(\"./root\"),\n Type = require(\"./type\"),\n Field = require(\"./field\"),\n MapField = require(\"./mapfield\"),\n OneOf = require(\"./oneof\"),\n Enum = require(\"./enum\"),\n Service = require(\"./service\"),\n Method = require(\"./method\"),\n types = require(\"./types\"),\n util = require(\"./util\");\n\nvar base10Re = /^[1-9][0-9]*$/,\n base10NegRe = /^-?[1-9][0-9]*$/,\n base16Re = /^0[x][0-9a-fA-F]+$/,\n base16NegRe = /^-?0[x][0-9a-fA-F]+$/,\n base8Re = /^0[0-7]+$/,\n base8NegRe = /^-?0[0-7]+$/,\n numberRe = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,\n nameRe = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\n typeRefRe = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\n fqTypeRefRe = /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/;\n\n/**\n * Result object returned from {@link parse}.\n * @interface IParserResult\n * @property {string|undefined} package Package name, if declared\n * @property {string[]|undefined} imports Imports, if any\n * @property {string[]|undefined} weakImports Weak imports, if any\n * @property {string|undefined} syntax Syntax, if specified (either `\"proto2\"` or `\"proto3\"`)\n * @property {Root} root Populated root instance\n */\n\n/**\n * Options modifying the behavior of {@link parse}.\n * @interface IParseOptions\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\n * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments.\n * @property {boolean} [preferTrailingComment=false] Use trailing comment when both leading comment and trailing comment exist.\n */\n\n/**\n * Options modifying the behavior of JSON serialization.\n * @interface IToJSONOptions\n * @property {boolean} [keepComments=false] Serializes comments.\n */\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @param {string} source Source contents\n * @param {Root} root Root to populate\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n */\nfunction parse(source, root, options) {\n /* eslint-disable callback-return */\n if (!(root instanceof Root)) {\n options = root;\n root = new Root();\n }\n if (!options)\n options = parse.defaults;\n\n var preferTrailingComment = options.preferTrailingComment || false;\n var tn = tokenize(source, options.alternateCommentMode || false),\n next = tn.next,\n push = tn.push,\n peek = tn.peek,\n skip = tn.skip,\n cmnt = tn.cmnt;\n\n var head = true,\n pkg,\n imports,\n weakImports,\n syntax,\n isProto3 = false;\n\n var ptr = root;\n\n var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase;\n\n /* istanbul ignore next */\n function illegal(token, name, insideTryCatch) {\n var filename = parse.filename;\n if (!insideTryCatch)\n parse.filename = null;\n return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (\" + (filename ? filename + \", \" : \"\") + \"line \" + tn.line + \")\");\n }\n\n function readString() {\n var values = [],\n token;\n do {\n /* istanbul ignore if */\n if ((token = next()) !== \"\\\"\" && token !== \"'\")\n throw illegal(token);\n\n values.push(next());\n skip(token);\n token = peek();\n } while (token === \"\\\"\" || token === \"'\");\n return values.join(\"\");\n }\n\n function readValue(acceptTypeRef) {\n var token = next();\n switch (token) {\n case \"'\":\n case \"\\\"\":\n push(token);\n return readString();\n case \"true\": case \"TRUE\":\n return true;\n case \"false\": case \"FALSE\":\n return false;\n }\n try {\n return parseNumber(token, /* insideTryCatch */ true);\n } catch (e) {\n\n /* istanbul ignore else */\n if (acceptTypeRef && typeRefRe.test(token))\n return token;\n\n /* istanbul ignore next */\n throw illegal(token, \"value\");\n }\n }\n\n function readRanges(target, acceptStrings) {\n var token, start;\n do {\n if (acceptStrings && ((token = peek()) === \"\\\"\" || token === \"'\"))\n target.push(readString());\n else\n target.push([ start = parseId(next()), skip(\"to\", true) ? parseId(next()) : start ]);\n } while (skip(\",\", true));\n skip(\";\");\n }\n\n function parseNumber(token, insideTryCatch) {\n var sign = 1;\n if (token.charAt(0) === \"-\") {\n sign = -1;\n token = token.substring(1);\n }\n switch (token) {\n case \"inf\": case \"INF\": case \"Inf\":\n return sign * Infinity;\n case \"nan\": case \"NAN\": case \"Nan\": case \"NaN\":\n return NaN;\n case \"0\":\n return 0;\n }\n if (base10Re.test(token))\n return sign * parseInt(token, 10);\n if (base16Re.test(token))\n return sign * parseInt(token, 16);\n if (base8Re.test(token))\n return sign * parseInt(token, 8);\n\n /* istanbul ignore else */\n if (numberRe.test(token))\n return sign * parseFloat(token);\n\n /* istanbul ignore next */\n throw illegal(token, \"number\", insideTryCatch);\n }\n\n function parseId(token, acceptNegative) {\n switch (token) {\n case \"max\": case \"MAX\": case \"Max\":\n return 536870911;\n case \"0\":\n return 0;\n }\n\n /* istanbul ignore if */\n if (!acceptNegative && token.charAt(0) === \"-\")\n throw illegal(token, \"id\");\n\n if (base10NegRe.test(token))\n return parseInt(token, 10);\n if (base16NegRe.test(token))\n return parseInt(token, 16);\n\n /* istanbul ignore else */\n if (base8NegRe.test(token))\n return parseInt(token, 8);\n\n /* istanbul ignore next */\n throw illegal(token, \"id\");\n }\n\n function parsePackage() {\n\n /* istanbul ignore if */\n if (pkg !== undefined)\n throw illegal(\"package\");\n\n pkg = next();\n\n /* istanbul ignore if */\n if (!typeRefRe.test(pkg))\n throw illegal(pkg, \"name\");\n\n ptr = ptr.define(pkg);\n skip(\";\");\n }\n\n function parseImport() {\n var token = peek();\n var whichImports;\n switch (token) {\n case \"weak\":\n whichImports = weakImports || (weakImports = []);\n next();\n break;\n case \"public\":\n next();\n // eslint-disable-next-line no-fallthrough\n default:\n whichImports = imports || (imports = []);\n break;\n }\n token = readString();\n skip(\";\");\n whichImports.push(token);\n }\n\n function parseSyntax() {\n skip(\"=\");\n syntax = readString();\n isProto3 = syntax === \"proto3\";\n\n /* istanbul ignore if */\n if (!isProto3 && syntax !== \"proto2\")\n throw illegal(syntax, \"syntax\");\n\n skip(\";\");\n }\n\n function parseCommon(parent, token) {\n switch (token) {\n\n case \"option\":\n parseOption(parent, token);\n skip(\";\");\n return true;\n\n case \"message\":\n parseType(parent, token);\n return true;\n\n case \"enum\":\n parseEnum(parent, token);\n return true;\n\n case \"service\":\n parseService(parent, token);\n return true;\n\n case \"extend\":\n parseExtension(parent, token);\n return true;\n }\n return false;\n }\n\n function ifBlock(obj, fnIf, fnElse) {\n var trailingLine = tn.line;\n if (obj) {\n if(typeof obj.comment !== \"string\") {\n obj.comment = cmnt(); // try block-type comment\n }\n obj.filename = parse.filename;\n }\n if (skip(\"{\", true)) {\n var token;\n while ((token = next()) !== \"}\")\n fnIf(token);\n skip(\";\", true);\n } else {\n if (fnElse)\n fnElse();\n skip(\";\");\n if (obj && (typeof obj.comment !== \"string\" || preferTrailingComment))\n obj.comment = cmnt(trailingLine) || obj.comment; // try line-type comment\n }\n }\n\n function parseType(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"type name\");\n\n var type = new Type(token);\n ifBlock(type, function parseType_block(token) {\n if (parseCommon(type, token))\n return;\n\n switch (token) {\n\n case \"map\":\n parseMapField(type, token);\n break;\n\n case \"required\":\n case \"repeated\":\n parseField(type, token);\n break;\n\n case \"optional\":\n /* istanbul ignore if */\n if (isProto3) {\n parseField(type, \"proto3_optional\");\n } else {\n parseField(type, \"optional\");\n }\n break;\n\n case \"oneof\":\n parseOneOf(type, token);\n break;\n\n case \"extensions\":\n readRanges(type.extensions || (type.extensions = []));\n break;\n\n case \"reserved\":\n readRanges(type.reserved || (type.reserved = []), true);\n break;\n\n default:\n /* istanbul ignore if */\n if (!isProto3 || !typeRefRe.test(token))\n throw illegal(token);\n\n push(token);\n parseField(type, \"optional\");\n break;\n }\n });\n parent.add(type);\n }\n\n function parseField(parent, rule, extend) {\n var type = next();\n if (type === \"group\") {\n parseGroup(parent, rule);\n return;\n }\n // Type names can consume multiple tokens, in multiple variants:\n // package.subpackage field tokens: \"package.subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // package . subpackage field tokens: \"package\" \".\" \"subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // package. subpackage field tokens: \"package.\" \"subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // package .subpackage field tokens: \"package\" \".subpackage\" [TYPE NAME ENDS HERE] \"field\"\n // Keep reading tokens until we get a type name with no period at the end,\n // and the next token does not start with a period.\n while (type.endsWith(\".\") || peek().startsWith(\".\")) {\n type += next();\n }\n\n /* istanbul ignore if */\n if (!typeRefRe.test(type))\n throw illegal(type, \"type\");\n\n var name = next();\n\n /* istanbul ignore if */\n if (!nameRe.test(name))\n throw illegal(name, \"name\");\n\n name = applyCase(name);\n skip(\"=\");\n\n var field = new Field(name, parseId(next()), type, rule, extend);\n ifBlock(field, function parseField_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(field, token);\n skip(\";\");\n } else\n throw illegal(token);\n\n }, function parseField_line() {\n parseInlineOptions(field);\n });\n\n if (rule === \"proto3_optional\") {\n // for proto3 optional fields, we create a single-member Oneof to mimic \"optional\" behavior\n var oneof = new OneOf(\"_\" + name);\n field.setOption(\"proto3_optional\", true);\n oneof.add(field);\n parent.add(oneof);\n } else {\n parent.add(field);\n }\n\n // JSON defaults to packed=true if not set so we have to set packed=false explicity when\n // parsing proto2 descriptors without the option, where applicable. This must be done for\n // all known packable types and anything that could be an enum (= is not a basic type).\n if (!isProto3 && field.repeated && (types.packed[type] !== undefined || types.basic[type] === undefined))\n field.setOption(\"packed\", false, /* ifNotSet */ true);\n }\n\n function parseGroup(parent, rule) {\n var name = next();\n\n /* istanbul ignore if */\n if (!nameRe.test(name))\n throw illegal(name, \"name\");\n\n var fieldName = util.lcFirst(name);\n if (name === fieldName)\n name = util.ucFirst(name);\n skip(\"=\");\n var id = parseId(next());\n var type = new Type(name);\n type.group = true;\n var field = new Field(fieldName, id, name, rule);\n field.filename = parse.filename;\n ifBlock(type, function parseGroup_block(token) {\n switch (token) {\n\n case \"option\":\n parseOption(type, token);\n skip(\";\");\n break;\n\n case \"required\":\n case \"repeated\":\n parseField(type, token);\n break;\n\n case \"optional\":\n /* istanbul ignore if */\n if (isProto3) {\n parseField(type, \"proto3_optional\");\n } else {\n parseField(type, \"optional\");\n }\n break;\n\n case \"message\":\n parseType(type, token);\n break;\n\n case \"enum\":\n parseEnum(type, token);\n break;\n\n /* istanbul ignore next */\n default:\n throw illegal(token); // there are no groups with proto3 semantics\n }\n });\n parent.add(type)\n .add(field);\n }\n\n function parseMapField(parent) {\n skip(\"<\");\n var keyType = next();\n\n /* istanbul ignore if */\n if (types.mapKey[keyType] === undefined)\n throw illegal(keyType, \"type\");\n\n skip(\",\");\n var valueType = next();\n\n /* istanbul ignore if */\n if (!typeRefRe.test(valueType))\n throw illegal(valueType, \"type\");\n\n skip(\">\");\n var name = next();\n\n /* istanbul ignore if */\n if (!nameRe.test(name))\n throw illegal(name, \"name\");\n\n skip(\"=\");\n var field = new MapField(applyCase(name), parseId(next()), keyType, valueType);\n ifBlock(field, function parseMapField_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(field, token);\n skip(\";\");\n } else\n throw illegal(token);\n\n }, function parseMapField_line() {\n parseInlineOptions(field);\n });\n parent.add(field);\n }\n\n function parseOneOf(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var oneof = new OneOf(applyCase(token));\n ifBlock(oneof, function parseOneOf_block(token) {\n if (token === \"option\") {\n parseOption(oneof, token);\n skip(\";\");\n } else {\n push(token);\n parseField(oneof, \"optional\");\n }\n });\n parent.add(oneof);\n }\n\n function parseEnum(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var enm = new Enum(token);\n ifBlock(enm, function parseEnum_block(token) {\n switch(token) {\n case \"option\":\n parseOption(enm, token);\n skip(\";\");\n break;\n\n case \"reserved\":\n readRanges(enm.reserved || (enm.reserved = []), true);\n break;\n\n default:\n parseEnumValue(enm, token);\n }\n });\n parent.add(enm);\n }\n\n function parseEnumValue(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token))\n throw illegal(token, \"name\");\n\n skip(\"=\");\n var value = parseId(next(), true),\n dummy = {\n options: undefined\n };\n dummy.setOption = function(name, value) {\n if (this.options === undefined)\n this.options = {};\n this.options[name] = value;\n };\n ifBlock(dummy, function parseEnumValue_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(dummy, token); // skip\n skip(\";\");\n } else\n throw illegal(token);\n\n }, function parseEnumValue_line() {\n parseInlineOptions(dummy); // skip\n });\n parent.add(token, value, dummy.comment, dummy.options);\n }\n\n function parseOption(parent, token) {\n var isCustom = skip(\"(\", true);\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var name = token;\n var option = name;\n var propName;\n\n if (isCustom) {\n skip(\")\");\n name = \"(\" + name + \")\";\n option = name;\n token = peek();\n if (fqTypeRefRe.test(token)) {\n propName = token.slice(1); //remove '.' before property name\n name += token;\n next();\n }\n }\n skip(\"=\");\n var optionValue = parseOptionValue(parent, name);\n setParsedOption(parent, option, optionValue, propName);\n }\n\n function parseOptionValue(parent, name) {\n // { a: \"foo\" b { c: \"bar\" } }\n if (skip(\"{\", true)) {\n var objectResult = {};\n\n while (!skip(\"}\", true)) {\n /* istanbul ignore if */\n if (!nameRe.test(token = next())) {\n throw illegal(token, \"name\");\n }\n if (token === null) {\n throw illegal(token, \"end of input\");\n }\n\n var value;\n var propName = token;\n\n skip(\":\", true);\n\n if (peek() === \"{\")\n value = parseOptionValue(parent, name + \".\" + token);\n else if (peek() === \"[\") {\n // option (my_option) = {\n // repeated_value: [ \"foo\", \"bar\" ]\n // };\n value = [];\n var lastValue;\n if (skip(\"[\", true)) {\n do {\n lastValue = readValue(true);\n value.push(lastValue);\n } while (skip(\",\", true));\n skip(\"]\");\n if (typeof lastValue !== \"undefined\") {\n setOption(parent, name + \".\" + token, lastValue);\n }\n }\n } else {\n value = readValue(true);\n setOption(parent, name + \".\" + token, value);\n }\n\n var prevValue = objectResult[propName];\n\n if (prevValue)\n value = [].concat(prevValue).concat(value);\n\n objectResult[propName] = value;\n\n // Semicolons and commas can be optional\n skip(\",\", true);\n skip(\";\", true);\n }\n\n return objectResult;\n }\n\n var simpleValue = readValue(true);\n setOption(parent, name, simpleValue);\n return simpleValue;\n // Does not enforce a delimiter to be universal\n }\n\n function setOption(parent, name, value) {\n if (parent.setOption)\n parent.setOption(name, value);\n }\n\n function setParsedOption(parent, name, value, propName) {\n if (parent.setParsedOption)\n parent.setParsedOption(name, value, propName);\n }\n\n function parseInlineOptions(parent) {\n if (skip(\"[\", true)) {\n do {\n parseOption(parent, \"option\");\n } while (skip(\",\", true));\n skip(\"]\");\n }\n return parent;\n }\n\n function parseService(parent, token) {\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"service name\");\n\n var service = new Service(token);\n ifBlock(service, function parseService_block(token) {\n if (parseCommon(service, token))\n return;\n\n /* istanbul ignore else */\n if (token === \"rpc\")\n parseMethod(service, token);\n else\n throw illegal(token);\n });\n parent.add(service);\n }\n\n function parseMethod(parent, token) {\n // Get the comment of the preceding line now (if one exists) in case the\n // method is defined across multiple lines.\n var commentText = cmnt();\n\n var type = token;\n\n /* istanbul ignore if */\n if (!nameRe.test(token = next()))\n throw illegal(token, \"name\");\n\n var name = token,\n requestType, requestStream,\n responseType, responseStream;\n\n skip(\"(\");\n if (skip(\"stream\", true))\n requestStream = true;\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token);\n\n requestType = token;\n skip(\")\"); skip(\"returns\"); skip(\"(\");\n if (skip(\"stream\", true))\n responseStream = true;\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token);\n\n responseType = token;\n skip(\")\");\n\n var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\n method.comment = commentText;\n ifBlock(method, function parseMethod_block(token) {\n\n /* istanbul ignore else */\n if (token === \"option\") {\n parseOption(method, token);\n skip(\";\");\n } else\n throw illegal(token);\n\n });\n parent.add(method);\n }\n\n function parseExtension(parent, token) {\n\n /* istanbul ignore if */\n if (!typeRefRe.test(token = next()))\n throw illegal(token, \"reference\");\n\n var reference = token;\n ifBlock(null, function parseExtension_block(token) {\n switch (token) {\n\n case \"required\":\n case \"repeated\":\n parseField(parent, token, reference);\n break;\n\n case \"optional\":\n /* istanbul ignore if */\n if (isProto3) {\n parseField(parent, \"proto3_optional\", reference);\n } else {\n parseField(parent, \"optional\", reference);\n }\n break;\n\n default:\n /* istanbul ignore if */\n if (!isProto3 || !typeRefRe.test(token))\n throw illegal(token);\n push(token);\n parseField(parent, \"optional\", reference);\n break;\n }\n });\n }\n\n var token;\n while ((token = next()) !== null) {\n switch (token) {\n\n case \"package\":\n\n /* istanbul ignore if */\n if (!head)\n throw illegal(token);\n\n parsePackage();\n break;\n\n case \"import\":\n\n /* istanbul ignore if */\n if (!head)\n throw illegal(token);\n\n parseImport();\n break;\n\n case \"syntax\":\n\n /* istanbul ignore if */\n if (!head)\n throw illegal(token);\n\n parseSyntax();\n break;\n\n case \"option\":\n\n parseOption(ptr, token);\n skip(\";\");\n break;\n\n default:\n\n /* istanbul ignore else */\n if (parseCommon(ptr, token)) {\n head = false;\n continue;\n }\n\n /* istanbul ignore next */\n throw illegal(token);\n }\n }\n\n parse.filename = null;\n return {\n \"package\" : pkg,\n \"imports\" : imports,\n weakImports : weakImports,\n syntax : syntax,\n root : root\n };\n}\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @name parse\n * @function\n * @param {string} source Source contents\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n * @variation 2\n */\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Root;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\n\nvar Field = require(\"./field\"),\n Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n util = require(\"./util\");\n\nvar Type, // cyclic\n parse, // might be excluded\n common; // \"\n\n/**\n * Constructs a new root namespace instance.\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\n * @extends NamespaceBase\n * @constructor\n * @param {Object.} [options] Top level options\n */\nfunction Root(options) {\n Namespace.call(this, \"\", options);\n\n /**\n * Deferred extension fields.\n * @type {Field[]}\n */\n this.deferred = [];\n\n /**\n * Resolved file names of loaded files.\n * @type {string[]}\n */\n this.files = [];\n}\n\n/**\n * Loads a namespace descriptor into a root namespace.\n * @param {INamespace} json Nameespace descriptor\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\n * @returns {Root} Root namespace\n */\nRoot.fromJSON = function fromJSON(json, root) {\n if (!root)\n root = new Root();\n if (json.options)\n root.setOptions(json.options);\n return root.addJSON(json.nested);\n};\n\n/**\n * Resolves the path of an imported file, relative to the importing origin.\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\n * @function\n * @param {string} origin The file name of the importing file\n * @param {string} target The file name being imported\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\n */\nRoot.prototype.resolvePath = util.path.resolve;\n\n/**\n * Fetch content from file path or url\n * This method exists so you can override it with your own logic.\n * @function\n * @param {string} path File path or url\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.fetch = util.fetch;\n\n// A symbol-like function to safely signal synchronous loading\n/* istanbul ignore next */\nfunction SYNC() {} // eslint-disable-line no-empty-function\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} options Parse options\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.load = function load(filename, options, callback) {\n if (typeof options === \"function\") {\n callback = options;\n options = undefined;\n }\n var self = this;\n if (!callback)\n return util.asPromise(load, self, filename, options);\n\n var sync = callback === SYNC; // undocumented\n\n // Finishes loading by calling the callback (exactly once)\n function finish(err, root) {\n /* istanbul ignore if */\n if (!callback)\n return;\n if (sync)\n throw err;\n var cb = callback;\n callback = null;\n cb(err, root);\n }\n\n // Bundled definition existence checking\n function getBundledFileName(filename) {\n var idx = filename.lastIndexOf(\"google/protobuf/\");\n if (idx > -1) {\n var altname = filename.substring(idx);\n if (altname in common) return altname;\n }\n return null;\n }\n\n // Processes a single file\n function process(filename, source) {\n try {\n if (util.isString(source) && source.charAt(0) === \"{\")\n source = JSON.parse(source);\n if (!util.isString(source))\n self.setOptions(source.options).addJSON(source.nested);\n else {\n parse.filename = filename;\n var parsed = parse(source, self, options),\n resolved,\n i = 0;\n if (parsed.imports)\n for (; i < parsed.imports.length; ++i)\n if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i]))\n fetch(resolved);\n if (parsed.weakImports)\n for (i = 0; i < parsed.weakImports.length; ++i)\n if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i]))\n fetch(resolved, true);\n }\n } catch (err) {\n finish(err);\n }\n if (!sync && !queued)\n finish(null, self); // only once anyway\n }\n\n // Fetches a single file\n function fetch(filename, weak) {\n filename = getBundledFileName(filename) || filename;\n\n // Skip if already loaded / attempted\n if (self.files.indexOf(filename) > -1)\n return;\n self.files.push(filename);\n\n // Shortcut bundled definitions\n if (filename in common) {\n if (sync)\n process(filename, common[filename]);\n else {\n ++queued;\n setTimeout(function() {\n --queued;\n process(filename, common[filename]);\n });\n }\n return;\n }\n\n // Otherwise fetch from disk or network\n if (sync) {\n var source;\n try {\n source = util.fs.readFileSync(filename).toString(\"utf8\");\n } catch (err) {\n if (!weak)\n finish(err);\n return;\n }\n process(filename, source);\n } else {\n ++queued;\n self.fetch(filename, function(err, source) {\n --queued;\n /* istanbul ignore if */\n if (!callback)\n return; // terminated meanwhile\n if (err) {\n /* istanbul ignore else */\n if (!weak)\n finish(err);\n else if (!queued) // can't be covered reliably\n finish(null, self);\n return;\n }\n process(filename, source);\n });\n }\n }\n var queued = 0;\n\n // Assembling the root namespace doesn't require working type\n // references anymore, so we can load everything in parallel\n if (util.isString(filename))\n filename = [ filename ];\n for (var i = 0, resolved; i < filename.length; ++i)\n if (resolved = self.resolvePath(\"\", filename[i]))\n fetch(resolved);\n\n if (sync)\n return self;\n if (!queued)\n finish(null, self);\n return undefined;\n};\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Promise} Promise\n * @variation 3\n */\n// function load(filename:string, [options:IParseOptions]):Promise\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\n * @function Root#loadSync\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n */\nRoot.prototype.loadSync = function loadSync(filename, options) {\n if (!util.isNode)\n throw Error(\"not supported\");\n return this.load(filename, options, SYNC);\n};\n\n/**\n * @override\n */\nRoot.prototype.resolveAll = function resolveAll() {\n if (this.deferred.length)\n throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\n return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\n }).join(\", \"));\n return Namespace.prototype.resolveAll.call(this);\n};\n\n// only uppercased (and thus conflict-free) children are exposed, see below\nvar exposeRe = /^[A-Z]/;\n\n/**\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\n * @param {Root} root Root instance\n * @param {Field} field Declaring extension field witin the declaring type\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\n * @inner\n * @ignore\n */\nfunction tryHandleExtension(root, field) {\n var extendedType = field.parent.lookup(field.extend);\n if (extendedType) {\n var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\n //do not allow to extend same field twice to prevent the error\n if (extendedType.get(sisterField.name)) {\n return true;\n }\n sisterField.declaringField = field;\n field.extensionField = sisterField;\n extendedType.add(sisterField);\n return true;\n }\n return false;\n}\n\n/**\n * Called when any object is added to this root or its sub-namespaces.\n * @param {ReflectionObject} object Object added\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleAdd = function _handleAdd(object) {\n if (object instanceof Field) {\n\n if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\n if (!tryHandleExtension(this, object))\n this.deferred.push(object);\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n object.parent[object.name] = object.values; // expose enum values as property of its parent\n\n } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\n\n if (object instanceof Type) // Try to handle any deferred extensions\n for (var i = 0; i < this.deferred.length;)\n if (tryHandleExtension(this, this.deferred[i]))\n this.deferred.splice(i, 1);\n else\n ++i;\n for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\n this._handleAdd(object._nestedArray[j]);\n if (exposeRe.test(object.name))\n object.parent[object.name] = object; // expose namespace as property of its parent\n }\n\n // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\n // properties of namespaces just like static code does. This allows using a .d.ts generated for\n // a static module with reflection-based solutions where the condition is met.\n};\n\n/**\n * Called when any object is removed from this root or its sub-namespaces.\n * @param {ReflectionObject} object Object removed\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleRemove = function _handleRemove(object) {\n if (object instanceof Field) {\n\n if (/* an extension field */ object.extend !== undefined) {\n if (/* already handled */ object.extensionField) { // remove its sister field\n object.extensionField.parent.remove(object.extensionField);\n object.extensionField = null;\n } else { // cancel the extension\n var index = this.deferred.indexOf(object);\n /* istanbul ignore else */\n if (index > -1)\n this.deferred.splice(index, 1);\n }\n }\n\n } else if (object instanceof Enum) {\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose enum values\n\n } else if (object instanceof Namespace) {\n\n for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\n this._handleRemove(object._nestedArray[i]);\n\n if (exposeRe.test(object.name))\n delete object.parent[object.name]; // unexpose namespaces\n\n }\n};\n\n// Sets up cyclic dependencies (called in index-light)\nRoot._configure = function(Type_, parse_, common_) {\n Type = Type_;\n parse = parse_;\n common = common_;\n};\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\nmodule.exports = Service;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\n\nvar Method = require(\"./method\"),\n util = require(\"./util\"),\n rpc = require(\"./rpc\");\n\n/**\n * Constructs a new service instance.\n * @classdesc Reflected service.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Service name\n * @param {Object.} [options] Service options\n * @throws {TypeError} If arguments are invalid\n */\nfunction Service(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Service methods.\n * @type {Object.}\n */\n this.methods = {}; // toJSON, marker\n\n /**\n * Cached methods as an array.\n * @type {Method[]|null}\n * @private\n */\n this._methodsArray = null;\n}\n\n/**\n * Service descriptor.\n * @interface IService\n * @extends INamespace\n * @property {Object.} methods Method descriptors\n */\n\n/**\n * Constructs a service from a service descriptor.\n * @param {string} name Service name\n * @param {IService} json Service descriptor\n * @returns {Service} Created service\n * @throws {TypeError} If arguments are invalid\n */\nService.fromJSON = function fromJSON(name, json) {\n var service = new Service(name, json.options);\n /* istanbul ignore else */\n if (json.methods)\n for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\n service.add(Method.fromJSON(names[i], json.methods[names[i]]));\n if (json.nested)\n service.addJSON(json.nested);\n service.comment = json.comment;\n return service;\n};\n\n/**\n * Converts this service to a service descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IService} Service descriptor\n */\nService.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * Methods of this service as an array for iteration.\n * @name Service#methodsArray\n * @type {Method[]}\n * @readonly\n */\nObject.defineProperty(Service.prototype, \"methodsArray\", {\n get: function() {\n return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\n }\n});\n\nfunction clearCache(service) {\n service._methodsArray = null;\n return service;\n}\n\n/**\n * @override\n */\nService.prototype.get = function get(name) {\n return this.methods[name]\n || Namespace.prototype.get.call(this, name);\n};\n\n/**\n * @override\n */\nService.prototype.resolveAll = function resolveAll() {\n var methods = this.methodsArray;\n for (var i = 0; i < methods.length; ++i)\n methods[i].resolve();\n return Namespace.prototype.resolve.call(this);\n};\n\n/**\n * @override\n */\nService.prototype.add = function add(object) {\n\n /* istanbul ignore if */\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Method) {\n this.methods[object.name] = object;\n object.parent = this;\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * @override\n */\nService.prototype.remove = function remove(object) {\n if (object instanceof Method) {\n\n /* istanbul ignore if */\n if (this.methods[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.methods[object.name];\n object.parent = null;\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Creates a runtime service using the specified rpc implementation.\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\n */\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\n for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\n var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\n rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\n m: method,\n q: method.resolvedRequestType.ctor,\n s: method.resolvedResponseType.ctor\n });\n }\n return rpcService;\n};\n","\"use strict\";\nmodule.exports = tokenize;\n\nvar delimRe = /[\\s{}=;:[\\],'\"()<>]/g,\n stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\n stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\n\nvar setCommentRe = /^ *[*/]+ */,\n setCommentAltRe = /^\\s*\\*?\\/*/,\n setCommentSplitRe = /\\n/g,\n whitespaceRe = /\\s/,\n unescapeRe = /\\\\(.?)/g;\n\nvar unescapeMap = {\n \"0\": \"\\0\",\n \"r\": \"\\r\",\n \"n\": \"\\n\",\n \"t\": \"\\t\"\n};\n\n/**\n * Unescapes a string.\n * @param {string} str String to unescape\n * @returns {string} Unescaped string\n * @property {Object.} map Special characters map\n * @memberof tokenize\n */\nfunction unescape(str) {\n return str.replace(unescapeRe, function($0, $1) {\n switch ($1) {\n case \"\\\\\":\n case \"\":\n return $1;\n default:\n return unescapeMap[$1] || \"\";\n }\n });\n}\n\ntokenize.unescape = unescape;\n\n/**\n * Gets the next token and advances.\n * @typedef TokenizerHandleNext\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Peeks for the next token.\n * @typedef TokenizerHandlePeek\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Pushes a token back to the stack.\n * @typedef TokenizerHandlePush\n * @type {function}\n * @param {string} token Token\n * @returns {undefined}\n */\n\n/**\n * Skips the next token.\n * @typedef TokenizerHandleSkip\n * @type {function}\n * @param {string} expected Expected token\n * @param {boolean} [optional=false] If optional\n * @returns {boolean} Whether the token matched\n * @throws {Error} If the token didn't match and is not optional\n */\n\n/**\n * Gets the comment on the previous line or, alternatively, the line comment on the specified line.\n * @typedef TokenizerHandleCmnt\n * @type {function}\n * @param {number} [line] Line number\n * @returns {string|null} Comment text or `null` if none\n */\n\n/**\n * Handle object returned from {@link tokenize}.\n * @interface ITokenizerHandle\n * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof)\n * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof)\n * @property {TokenizerHandlePush} push Pushes a token back to the stack\n * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\n * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any\n * @property {number} line Current line number\n */\n\n/**\n * Tokenizes the given .proto source and returns an object with useful utility functions.\n * @param {string} source Source contents\n * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode.\n * @returns {ITokenizerHandle} Tokenizer handle\n */\nfunction tokenize(source, alternateCommentMode) {\n /* eslint-disable callback-return */\n source = source.toString();\n\n var offset = 0,\n length = source.length,\n line = 1,\n lastCommentLine = 0,\n comments = {};\n\n var stack = [];\n\n var stringDelim = null;\n\n /* istanbul ignore next */\n /**\n * Creates an error for illegal syntax.\n * @param {string} subject Subject\n * @returns {Error} Error created\n * @inner\n */\n function illegal(subject) {\n return Error(\"illegal \" + subject + \" (line \" + line + \")\");\n }\n\n /**\n * Reads a string till its end.\n * @returns {string} String read\n * @inner\n */\n function readString() {\n var re = stringDelim === \"'\" ? stringSingleRe : stringDoubleRe;\n re.lastIndex = offset - 1;\n var match = re.exec(source);\n if (!match)\n throw illegal(\"string\");\n offset = re.lastIndex;\n push(stringDelim);\n stringDelim = null;\n return unescape(match[1]);\n }\n\n /**\n * Gets the character at `pos` within the source.\n * @param {number} pos Position\n * @returns {string} Character\n * @inner\n */\n function charAt(pos) {\n return source.charAt(pos);\n }\n\n /**\n * Sets the current comment text.\n * @param {number} start Start offset\n * @param {number} end End offset\n * @param {boolean} isLeading set if a leading comment\n * @returns {undefined}\n * @inner\n */\n function setComment(start, end, isLeading) {\n var comment = {\n type: source.charAt(start++),\n lineEmpty: false,\n leading: isLeading,\n };\n var lookback;\n if (alternateCommentMode) {\n lookback = 2; // alternate comment parsing: \"//\" or \"/*\"\n } else {\n lookback = 3; // \"///\" or \"/**\"\n }\n var commentOffset = start - lookback,\n c;\n do {\n if (--commentOffset < 0 ||\n (c = source.charAt(commentOffset)) === \"\\n\") {\n comment.lineEmpty = true;\n break;\n }\n } while (c === \" \" || c === \"\\t\");\n var lines = source\n .substring(start, end)\n .split(setCommentSplitRe);\n for (var i = 0; i < lines.length; ++i)\n lines[i] = lines[i]\n .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, \"\")\n .trim();\n comment.text = lines\n .join(\"\\n\")\n .trim();\n\n comments[line] = comment;\n lastCommentLine = line;\n }\n\n function isDoubleSlashCommentLine(startOffset) {\n var endOffset = findEndOfLine(startOffset);\n\n // see if remaining line matches comment pattern\n var lineText = source.substring(startOffset, endOffset);\n var isComment = /^\\s*\\/\\//.test(lineText);\n return isComment;\n }\n\n function findEndOfLine(cursor) {\n // find end of cursor's line\n var endOffset = cursor;\n while (endOffset < length && charAt(endOffset) !== \"\\n\") {\n endOffset++;\n }\n return endOffset;\n }\n\n /**\n * Obtains the next token.\n * @returns {string|null} Next token or `null` on eof\n * @inner\n */\n function next() {\n if (stack.length > 0)\n return stack.shift();\n if (stringDelim)\n return readString();\n var repeat,\n prev,\n curr,\n start,\n isDoc,\n isLeadingComment = offset === 0;\n do {\n if (offset === length)\n return null;\n repeat = false;\n while (whitespaceRe.test(curr = charAt(offset))) {\n if (curr === \"\\n\") {\n isLeadingComment = true;\n ++line;\n }\n if (++offset === length)\n return null;\n }\n\n if (charAt(offset) === \"/\") {\n if (++offset === length) {\n throw illegal(\"comment\");\n }\n if (charAt(offset) === \"/\") { // Line\n if (!alternateCommentMode) {\n // check for triple-slash comment\n isDoc = charAt(start = offset + 1) === \"/\";\n\n while (charAt(++offset) !== \"\\n\") {\n if (offset === length) {\n return null;\n }\n }\n ++offset;\n if (isDoc) {\n setComment(start, offset - 1, isLeadingComment);\n // Trailing comment cannot not be multi-line,\n // so leading comment state should be reset to handle potential next comments\n isLeadingComment = true;\n }\n ++line;\n repeat = true;\n } else {\n // check for double-slash comments, consolidating consecutive lines\n start = offset;\n isDoc = false;\n if (isDoubleSlashCommentLine(offset - 1)) {\n isDoc = true;\n do {\n offset = findEndOfLine(offset);\n if (offset === length) {\n break;\n }\n offset++;\n if (!isLeadingComment) {\n // Trailing comment cannot not be multi-line\n break;\n }\n } while (isDoubleSlashCommentLine(offset));\n } else {\n offset = Math.min(length, findEndOfLine(offset) + 1);\n }\n if (isDoc) {\n setComment(start, offset, isLeadingComment);\n isLeadingComment = true;\n }\n line++;\n repeat = true;\n }\n } else if ((curr = charAt(offset)) === \"*\") { /* Block */\n // check for /** (regular comment mode) or /* (alternate comment mode)\n start = offset + 1;\n isDoc = alternateCommentMode || charAt(start) === \"*\";\n do {\n if (curr === \"\\n\") {\n ++line;\n }\n if (++offset === length) {\n throw illegal(\"comment\");\n }\n prev = curr;\n curr = charAt(offset);\n } while (prev !== \"*\" || curr !== \"/\");\n ++offset;\n if (isDoc) {\n setComment(start, offset - 2, isLeadingComment);\n isLeadingComment = true;\n }\n repeat = true;\n } else {\n return \"/\";\n }\n }\n } while (repeat);\n\n // offset !== length if we got here\n\n var end = offset;\n delimRe.lastIndex = 0;\n var delim = delimRe.test(charAt(end++));\n if (!delim)\n while (end < length && !delimRe.test(charAt(end)))\n ++end;\n var token = source.substring(offset, offset = end);\n if (token === \"\\\"\" || token === \"'\")\n stringDelim = token;\n return token;\n }\n\n /**\n * Pushes a token back to the stack.\n * @param {string} token Token\n * @returns {undefined}\n * @inner\n */\n function push(token) {\n stack.push(token);\n }\n\n /**\n * Peeks for the next token.\n * @returns {string|null} Token or `null` on eof\n * @inner\n */\n function peek() {\n if (!stack.length) {\n var token = next();\n if (token === null)\n return null;\n push(token);\n }\n return stack[0];\n }\n\n /**\n * Skips a token.\n * @param {string} expected Expected token\n * @param {boolean} [optional=false] Whether the token is optional\n * @returns {boolean} `true` when skipped, `false` if not\n * @throws {Error} When a required token is not present\n * @inner\n */\n function skip(expected, optional) {\n var actual = peek(),\n equals = actual === expected;\n if (equals) {\n next();\n return true;\n }\n if (!optional)\n throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\n return false;\n }\n\n /**\n * Gets a comment.\n * @param {number} [trailingLine] Line number if looking for a trailing comment\n * @returns {string|null} Comment text\n * @inner\n */\n function cmnt(trailingLine) {\n var ret = null;\n var comment;\n if (trailingLine === undefined) {\n comment = comments[line - 1];\n delete comments[line - 1];\n if (comment && (alternateCommentMode || comment.type === \"*\" || comment.lineEmpty)) {\n ret = comment.leading ? comment.text : null;\n }\n } else {\n /* istanbul ignore else */\n if (lastCommentLine < trailingLine) {\n peek();\n }\n comment = comments[trailingLine];\n delete comments[trailingLine];\n if (comment && !comment.lineEmpty && (alternateCommentMode || comment.type === \"/\")) {\n ret = comment.leading ? null : comment.text;\n }\n }\n return ret;\n }\n\n return Object.defineProperty({\n next: next,\n peek: peek,\n push: push,\n skip: skip,\n cmnt: cmnt\n }, \"line\", {\n get: function() { return line; }\n });\n /* eslint-enable callback-return */\n}\n","\"use strict\";\nmodule.exports = Type;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\n\nvar Enum = require(\"./enum\"),\n OneOf = require(\"./oneof\"),\n Field = require(\"./field\"),\n MapField = require(\"./mapfield\"),\n Service = require(\"./service\"),\n Message = require(\"./message\"),\n Reader = require(\"./reader\"),\n Writer = require(\"./writer\"),\n util = require(\"./util\"),\n encoder = require(\"./encoder\"),\n decoder = require(\"./decoder\"),\n verifier = require(\"./verifier\"),\n converter = require(\"./converter\"),\n wrappers = require(\"./wrappers\");\n\n/**\n * Constructs a new reflected message type instance.\n * @classdesc Reflected message type.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Message name\n * @param {Object.} [options] Declared options\n */\nfunction Type(name, options) {\n Namespace.call(this, name, options);\n\n /**\n * Message fields.\n * @type {Object.}\n */\n this.fields = {}; // toJSON, marker\n\n /**\n * Oneofs declared within this namespace, if any.\n * @type {Object.}\n */\n this.oneofs = undefined; // toJSON\n\n /**\n * Extension ranges, if any.\n * @type {number[][]}\n */\n this.extensions = undefined; // toJSON\n\n /**\n * Reserved ranges, if any.\n * @type {Array.}\n */\n this.reserved = undefined; // toJSON\n\n /*?\n * Whether this type is a legacy group.\n * @type {boolean|undefined}\n */\n this.group = undefined; // toJSON\n\n /**\n * Cached fields by id.\n * @type {Object.|null}\n * @private\n */\n this._fieldsById = null;\n\n /**\n * Cached fields as an array.\n * @type {Field[]|null}\n * @private\n */\n this._fieldsArray = null;\n\n /**\n * Cached oneofs as an array.\n * @type {OneOf[]|null}\n * @private\n */\n this._oneofsArray = null;\n\n /**\n * Cached constructor.\n * @type {Constructor<{}>}\n * @private\n */\n this._ctor = null;\n}\n\nObject.defineProperties(Type.prototype, {\n\n /**\n * Message fields by id.\n * @name Type#fieldsById\n * @type {Object.}\n * @readonly\n */\n fieldsById: {\n get: function() {\n\n /* istanbul ignore if */\n if (this._fieldsById)\n return this._fieldsById;\n\n this._fieldsById = {};\n for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\n var field = this.fields[names[i]],\n id = field.id;\n\n /* istanbul ignore if */\n if (this._fieldsById[id])\n throw Error(\"duplicate id \" + id + \" in \" + this);\n\n this._fieldsById[id] = field;\n }\n return this._fieldsById;\n }\n },\n\n /**\n * Fields of this message as an array for iteration.\n * @name Type#fieldsArray\n * @type {Field[]}\n * @readonly\n */\n fieldsArray: {\n get: function() {\n return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\n }\n },\n\n /**\n * Oneofs of this message as an array for iteration.\n * @name Type#oneofsArray\n * @type {OneOf[]}\n * @readonly\n */\n oneofsArray: {\n get: function() {\n return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\n }\n },\n\n /**\n * The registered constructor, if any registered, otherwise a generic constructor.\n * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\n * @name Type#ctor\n * @type {Constructor<{}>}\n */\n ctor: {\n get: function() {\n return this._ctor || (this.ctor = Type.generateConstructor(this)());\n },\n set: function(ctor) {\n\n // Ensure proper prototype\n var prototype = ctor.prototype;\n if (!(prototype instanceof Message)) {\n (ctor.prototype = new Message()).constructor = ctor;\n util.merge(ctor.prototype, prototype);\n }\n\n // Classes and messages reference their reflected type\n ctor.$type = ctor.prototype.$type = this;\n\n // Mix in static methods\n util.merge(ctor, Message, true);\n\n this._ctor = ctor;\n\n // Messages have non-enumerable default values on their prototype\n var i = 0;\n for (; i < /* initializes */ this.fieldsArray.length; ++i)\n this._fieldsArray[i].resolve(); // ensures a proper value\n\n // Messages have non-enumerable getters and setters for each virtual oneof field\n var ctorProperties = {};\n for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\n ctorProperties[this._oneofsArray[i].resolve().name] = {\n get: util.oneOfGetter(this._oneofsArray[i].oneof),\n set: util.oneOfSetter(this._oneofsArray[i].oneof)\n };\n if (i)\n Object.defineProperties(ctor.prototype, ctorProperties);\n }\n }\n});\n\n/**\n * Generates a constructor function for the specified type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nType.generateConstructor = function generateConstructor(mtype) {\n /* eslint-disable no-unexpected-multiline */\n var gen = util.codegen([\"p\"], mtype.name);\n // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\n for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\n if ((field = mtype._fieldsArray[i]).map) gen\n (\"this%s={}\", util.safeProp(field.name));\n else if (field.repeated) gen\n (\"this%s=[]\", util.safeProp(field.name));\n return gen\n (\"if(p)for(var ks=Object.keys(p),i=0;i} [oneofs] Oneof descriptors\n * @property {Object.} fields Field descriptors\n * @property {number[][]} [extensions] Extension ranges\n * @property {number[][]} [reserved] Reserved ranges\n * @property {boolean} [group=false] Whether a legacy group or not\n */\n\n/**\n * Creates a message type from a message type descriptor.\n * @param {string} name Message name\n * @param {IType} json Message type descriptor\n * @returns {Type} Created message type\n */\nType.fromJSON = function fromJSON(name, json) {\n var type = new Type(name, json.options);\n type.extensions = json.extensions;\n type.reserved = json.reserved;\n var names = Object.keys(json.fields),\n i = 0;\n for (; i < names.length; ++i)\n type.add(\n ( typeof json.fields[names[i]].keyType !== \"undefined\"\n ? MapField.fromJSON\n : Field.fromJSON )(names[i], json.fields[names[i]])\n );\n if (json.oneofs)\n for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\n type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\n if (json.nested)\n for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\n var nested = json.nested[names[i]];\n type.add( // most to least likely\n ( nested.id !== undefined\n ? Field.fromJSON\n : nested.fields !== undefined\n ? Type.fromJSON\n : nested.values !== undefined\n ? Enum.fromJSON\n : nested.methods !== undefined\n ? Service.fromJSON\n : Namespace.fromJSON )(names[i], nested)\n );\n }\n if (json.extensions && json.extensions.length)\n type.extensions = json.extensions;\n if (json.reserved && json.reserved.length)\n type.reserved = json.reserved;\n if (json.group)\n type.group = true;\n if (json.comment)\n type.comment = json.comment;\n return type;\n};\n\n/**\n * Converts this message type to a message type descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IType} Message type descriptor\n */\nType.prototype.toJSON = function toJSON(toJSONOptions) {\n var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n return util.toObject([\n \"options\" , inherited && inherited.options || undefined,\n \"oneofs\" , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\n \"fields\" , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\n \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\n \"reserved\" , this.reserved && this.reserved.length ? this.reserved : undefined,\n \"group\" , this.group || undefined,\n \"nested\" , inherited && inherited.nested || undefined,\n \"comment\" , keepComments ? this.comment : undefined\n ]);\n};\n\n/**\n * @override\n */\nType.prototype.resolveAll = function resolveAll() {\n var fields = this.fieldsArray, i = 0;\n while (i < fields.length)\n fields[i++].resolve();\n var oneofs = this.oneofsArray; i = 0;\n while (i < oneofs.length)\n oneofs[i++].resolve();\n return Namespace.prototype.resolveAll.call(this);\n};\n\n/**\n * @override\n */\nType.prototype.get = function get(name) {\n return this.fields[name]\n || this.oneofs && this.oneofs[name]\n || this.nested && this.nested[name]\n || null;\n};\n\n/**\n * Adds a nested object to this type.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\n */\nType.prototype.add = function add(object) {\n\n if (this.get(object.name))\n throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n if (object instanceof Field && object.extend === undefined) {\n // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\n // The root object takes care of adding distinct sister-fields to the respective extended\n // type instead.\n\n // avoids calling the getter if not absolutely necessary because it's called quite frequently\n if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\n throw Error(\"duplicate id \" + object.id + \" in \" + this);\n if (this.isReservedId(object.id))\n throw Error(\"id \" + object.id + \" is reserved in \" + this);\n if (this.isReservedName(object.name))\n throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\n\n if (object.parent)\n object.parent.remove(object);\n this.fields[object.name] = object;\n object.message = this;\n object.onAdd(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n if (!this.oneofs)\n this.oneofs = {};\n this.oneofs[object.name] = object;\n object.onAdd(this);\n return clearCache(this);\n }\n return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * Removes a nested object from this type.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this type\n */\nType.prototype.remove = function remove(object) {\n if (object instanceof Field && object.extend === undefined) {\n // See Type#add for the reason why extension fields are excluded here.\n\n /* istanbul ignore if */\n if (!this.fields || this.fields[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.fields[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n if (object instanceof OneOf) {\n\n /* istanbul ignore if */\n if (!this.oneofs || this.oneofs[object.name] !== object)\n throw Error(object + \" is not a member of \" + this);\n\n delete this.oneofs[object.name];\n object.parent = null;\n object.onRemove(this);\n return clearCache(this);\n }\n return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedId = function isReservedId(id) {\n return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedName = function isReservedName(name) {\n return Namespace.isReservedName(this.reserved, name);\n};\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.} [properties] Properties to set\n * @returns {Message<{}>} Message instance\n */\nType.prototype.create = function create(properties) {\n return new this.ctor(properties);\n};\n\n/**\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\n * @returns {Type} `this`\n */\nType.prototype.setup = function setup() {\n // Sets up everything at once so that the prototype chain does not have to be re-evaluated\n // multiple times (V8, soft-deopt prototype-check).\n\n var fullName = this.fullName,\n types = [];\n for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\n types.push(this._fieldsArray[i].resolve().resolvedType);\n\n // Replace setup methods with type-specific generated functions\n this.encode = encoder(this)({\n Writer : Writer,\n types : types,\n util : util\n });\n this.decode = decoder(this)({\n Reader : Reader,\n types : types,\n util : util\n });\n this.verify = verifier(this)({\n types : types,\n util : util\n });\n this.fromObject = converter.fromObject(this)({\n types : types,\n util : util\n });\n this.toObject = converter.toObject(this)({\n types : types,\n util : util\n });\n\n // Inject custom wrappers for common types\n var wrapper = wrappers[fullName];\n if (wrapper) {\n var originalThis = Object.create(this);\n // if (wrapper.fromObject) {\n originalThis.fromObject = this.fromObject;\n this.fromObject = wrapper.fromObject.bind(originalThis);\n // }\n // if (wrapper.toObject) {\n originalThis.toObject = this.toObject;\n this.toObject = wrapper.toObject.bind(originalThis);\n // }\n }\n\n return this;\n};\n\n/**\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encode = function encode_setup(message, writer) {\n return this.setup().encode(message, writer); // overrides this method\n};\n\n/**\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\n};\n\n/**\n * Decodes a message of this type.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Length of the message, if known beforehand\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError<{}>} If required fields are missing\n */\nType.prototype.decode = function decode_setup(reader, length) {\n return this.setup().decode(reader, length); // overrides this method\n};\n\n/**\n * Decodes a message of this type preceeded by its byte length as a varint.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError} If required fields are missing\n */\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof Reader))\n reader = Reader.create(reader);\n return this.decode(reader, reader.uint32());\n};\n\n/**\n * Verifies that field values are valid and that required fields are present.\n * @param {Object.} message Plain object to verify\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\n */\nType.prototype.verify = function verify_setup(message) {\n return this.setup().verify(message); // overrides this method\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.} object Plain object to convert\n * @returns {Message<{}>} Message instance\n */\nType.prototype.fromObject = function fromObject(object) {\n return this.setup().fromObject(object);\n};\n\n/**\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\n * @interface IConversionOptions\n * @property {Function} [longs] Long conversion type.\n * Valid values are `String` and `Number` (the global types).\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\n * @property {Function} [enums] Enum value conversion type.\n * Only valid value is `String` (the global type).\n * Defaults to copy the present value, which is the numeric id.\n * @property {Function} [bytes] Bytes value conversion type.\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\n */\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\nType.prototype.toObject = function toObject(message, options) {\n return this.setup().toObject(message, options);\n};\n\n/**\n * Decorator function as returned by {@link Type.d} (TypeScript).\n * @typedef TypeDecorator\n * @type {function}\n * @param {Constructor} target Target constructor\n * @returns {undefined}\n * @template T extends Message\n */\n\n/**\n * Type decorator (TypeScript).\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {TypeDecorator} Decorator function\n * @template T extends Message\n */\nType.d = function decorateType(typeName) {\n return function typeDecorator(target) {\n util.decorateType(target, typeName);\n };\n};\n","\"use strict\";\n\n/**\n * Common type constants.\n * @namespace\n */\nvar types = exports;\n\nvar util = require(\"./util\");\n\nvar s = [\n \"double\", // 0\n \"float\", // 1\n \"int32\", // 2\n \"uint32\", // 3\n \"sint32\", // 4\n \"fixed32\", // 5\n \"sfixed32\", // 6\n \"int64\", // 7\n \"uint64\", // 8\n \"sint64\", // 9\n \"fixed64\", // 10\n \"sfixed64\", // 11\n \"bool\", // 12\n \"string\", // 13\n \"bytes\" // 14\n];\n\nfunction bake(values, offset) {\n var i = 0, o = {};\n offset |= 0;\n while (i < values.length) o[s[i + offset]] = values[i++];\n return o;\n}\n\n/**\n * Basic type wire types.\n * @type {Object.}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n * @property {number} bytes=2 Ldelim wire type\n */\ntypes.basic = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2,\n /* bytes */ 2\n]);\n\n/**\n * Basic type defaults.\n * @type {Object.}\n * @const\n * @property {number} double=0 Double default\n * @property {number} float=0 Float default\n * @property {number} int32=0 Int32 default\n * @property {number} uint32=0 Uint32 default\n * @property {number} sint32=0 Sint32 default\n * @property {number} fixed32=0 Fixed32 default\n * @property {number} sfixed32=0 Sfixed32 default\n * @property {number} int64=0 Int64 default\n * @property {number} uint64=0 Uint64 default\n * @property {number} sint64=0 Sint32 default\n * @property {number} fixed64=0 Fixed64 default\n * @property {number} sfixed64=0 Sfixed64 default\n * @property {boolean} bool=false Bool default\n * @property {string} string=\"\" String default\n * @property {Array.} bytes=Array(0) Bytes default\n * @property {null} message=null Message default\n */\ntypes.defaults = bake([\n /* double */ 0,\n /* float */ 0,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 0,\n /* sfixed32 */ 0,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 0,\n /* sfixed64 */ 0,\n /* bool */ false,\n /* string */ \"\",\n /* bytes */ util.emptyArray,\n /* message */ null\n]);\n\n/**\n * Basic long type wire types.\n * @type {Object.}\n * @const\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n */\ntypes.long = bake([\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1\n], 7);\n\n/**\n * Allowed types for map keys with their associated wire type.\n * @type {Object.}\n * @const\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n */\ntypes.mapKey = bake([\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0,\n /* string */ 2\n], 2);\n\n/**\n * Allowed types for packed repeated fields with their associated wire type.\n * @type {Object.}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n */\ntypes.packed = bake([\n /* double */ 1,\n /* float */ 5,\n /* int32 */ 0,\n /* uint32 */ 0,\n /* sint32 */ 0,\n /* fixed32 */ 5,\n /* sfixed32 */ 5,\n /* int64 */ 0,\n /* uint64 */ 0,\n /* sint64 */ 0,\n /* fixed64 */ 1,\n /* sfixed64 */ 1,\n /* bool */ 0\n]);\n","\"use strict\";\n\n/**\n * Various utility functions.\n * @namespace\n */\nvar util = module.exports = require(\"./util/minimal\");\n\nvar roots = require(\"./roots\");\n\nvar Type, // cyclic\n Enum;\n\nutil.codegen = require(\"@protobufjs/codegen\");\nutil.fetch = require(\"@protobufjs/fetch\");\nutil.path = require(\"@protobufjs/path\");\n\n/**\n * Node's fs module if available.\n * @type {Object.}\n */\nutil.fs = util.inquire(\"fs\");\n\n/**\n * Converts an object's values to an array.\n * @param {Object.} object Object to convert\n * @returns {Array.<*>} Converted array\n */\nutil.toArray = function toArray(object) {\n if (object) {\n var keys = Object.keys(object),\n array = new Array(keys.length),\n index = 0;\n while (index < keys.length)\n array[index] = object[keys[index++]];\n return array;\n }\n return [];\n};\n\n/**\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\n * @param {Array.<*>} array Array to convert\n * @returns {Object.} Converted object\n */\nutil.toObject = function toObject(array) {\n var object = {},\n index = 0;\n while (index < array.length) {\n var key = array[index++],\n val = array[index++];\n if (val !== undefined)\n object[key] = val;\n }\n return object;\n};\n\nvar safePropBackslashRe = /\\\\/g,\n safePropQuoteRe = /\"/g;\n\n/**\n * Tests whether the specified name is a reserved word in JS.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nutil.isReserved = function isReserved(name) {\n return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\n};\n\n/**\n * Returns a safe property accessor for the specified property name.\n * @param {string} prop Property name\n * @returns {string} Safe accessor\n */\nutil.safeProp = function safeProp(prop) {\n if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\n return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\n return \".\" + prop;\n};\n\n/**\n * Converts the first character of a string to upper case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.ucFirst = function ucFirst(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar camelCaseRe = /_([a-z])/g;\n\n/**\n * Converts a string to camel case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.camelCase = function camelCase(str) {\n return str.substring(0, 1)\n + str.substring(1)\n .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\n};\n\n/**\n * Compares reflected fields by id.\n * @param {Field} a First field\n * @param {Field} b Second field\n * @returns {number} Comparison value\n */\nutil.compareFieldsById = function compareFieldsById(a, b) {\n return a.id - b.id;\n};\n\n/**\n * Decorator helper for types (TypeScript).\n * @param {Constructor} ctor Constructor function\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {Type} Reflected type\n * @template T extends Message\n * @property {Root} root Decorators root\n */\nutil.decorateType = function decorateType(ctor, typeName) {\n\n /* istanbul ignore if */\n if (ctor.$type) {\n if (typeName && ctor.$type.name !== typeName) {\n util.decorateRoot.remove(ctor.$type);\n ctor.$type.name = typeName;\n util.decorateRoot.add(ctor.$type);\n }\n return ctor.$type;\n }\n\n /* istanbul ignore next */\n if (!Type)\n Type = require(\"./type\");\n\n var type = new Type(typeName || ctor.name);\n util.decorateRoot.add(type);\n type.ctor = ctor; // sets up .encode, .decode etc.\n Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\n Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\n return type;\n};\n\nvar decorateEnumIndex = 0;\n\n/**\n * Decorator helper for enums (TypeScript).\n * @param {Object} object Enum object\n * @returns {Enum} Reflected enum\n */\nutil.decorateEnum = function decorateEnum(object) {\n\n /* istanbul ignore if */\n if (object.$type)\n return object.$type;\n\n /* istanbul ignore next */\n if (!Enum)\n Enum = require(\"./enum\");\n\n var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\n util.decorateRoot.add(enm);\n Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\n return enm;\n};\n\n\n/**\n * Sets the value of a property by property path. If a value already exists, it is turned to an array\n * @param {Object.} dst Destination object\n * @param {string} path dot '.' delimited path of the property to set\n * @param {Object} value the value to set\n * @returns {Object.} Destination object\n */\nutil.setProperty = function setProperty(dst, path, value) {\n function setProp(dst, path, value) {\n var part = path.shift();\n if (part === \"__proto__\" || part === \"prototype\") {\n return dst;\n }\n if (path.length > 0) {\n dst[part] = setProp(dst[part] || {}, path, value);\n } else {\n var prevValue = dst[part];\n if (prevValue)\n value = [].concat(prevValue).concat(value);\n dst[part] = value;\n }\n return dst;\n }\n\n if (typeof dst !== \"object\")\n throw TypeError(\"dst must be an object\");\n if (!path)\n throw TypeError(\"path must be specified\");\n\n path = path.split(\".\");\n return setProp(dst, path, value);\n};\n\n/**\n * Decorator root (TypeScript).\n * @name util.decorateRoot\n * @type {Root}\n * @readonly\n */\nObject.defineProperty(util, \"decorateRoot\", {\n get: function() {\n return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\n }\n});\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = verifier;\n\nvar Enum = require(\"./enum\"),\n util = require(\"./util\");\n\nfunction invalid(field, expected) {\n return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\n}\n\n/**\n * Generates a partial value verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\n /* eslint-disable no-unexpected-multiline */\n if (field.resolvedType) {\n if (field.resolvedType instanceof Enum) { gen\n (\"switch(%s){\", ref)\n (\"default:\")\n (\"return%j\", invalid(field, \"enum value\"));\n for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\n (\"case %i:\", field.resolvedType.values[keys[j]]);\n gen\n (\"break\")\n (\"}\");\n } else {\n gen\n (\"{\")\n (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\n (\"if(e)\")\n (\"return%j+e\", field.name + \".\")\n (\"}\");\n }\n } else {\n switch (field.type) {\n case \"int32\":\n case \"uint32\":\n case \"sint32\":\n case \"fixed32\":\n case \"sfixed32\": gen\n (\"if(!util.isInteger(%s))\", ref)\n (\"return%j\", invalid(field, \"integer\"));\n break;\n case \"int64\":\n case \"uint64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\n (\"return%j\", invalid(field, \"integer|Long\"));\n break;\n case \"float\":\n case \"double\": gen\n (\"if(typeof %s!==\\\"number\\\")\", ref)\n (\"return%j\", invalid(field, \"number\"));\n break;\n case \"bool\": gen\n (\"if(typeof %s!==\\\"boolean\\\")\", ref)\n (\"return%j\", invalid(field, \"boolean\"));\n break;\n case \"string\": gen\n (\"if(!util.isString(%s))\", ref)\n (\"return%j\", invalid(field, \"string\"));\n break;\n case \"bytes\": gen\n (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\n (\"return%j\", invalid(field, \"buffer\"));\n break;\n }\n }\n return gen;\n /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a partial key verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyKey(gen, field, ref) {\n /* eslint-disable no-unexpected-multiline */\n switch (field.keyType) {\n case \"int32\":\n case \"uint32\":\n case \"sint32\":\n case \"fixed32\":\n case \"sfixed32\": gen\n (\"if(!util.key32Re.test(%s))\", ref)\n (\"return%j\", invalid(field, \"integer key\"));\n break;\n case \"int64\":\n case \"uint64\":\n case \"sint64\":\n case \"fixed64\":\n case \"sfixed64\": gen\n (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\n (\"return%j\", invalid(field, \"integer|Long key\"));\n break;\n case \"bool\": gen\n (\"if(!util.key2Re.test(%s))\", ref)\n (\"return%j\", invalid(field, \"boolean key\"));\n break;\n }\n return gen;\n /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a verifier specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction verifier(mtype) {\n /* eslint-disable no-unexpected-multiline */\n\n var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\n (\"if(typeof m!==\\\"object\\\"||m===null)\")\n (\"return%j\", \"object expected\");\n var oneofs = mtype.oneofsArray,\n seenFirstField = {};\n if (oneofs.length) gen\n (\"var p={}\");\n\n for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n var field = mtype._fieldsArray[i].resolve(),\n ref = \"m\" + util.safeProp(field.name);\n\n if (field.optional) gen\n (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\n\n // map fields\n if (field.map) { gen\n (\"if(!util.isObject(%s))\", ref)\n (\"return%j\", invalid(field, \"object\"))\n (\"var k=Object.keys(%s)\", ref)\n (\"for(var i=0;i}\n * @const\n */\nvar wrappers = exports;\n\nvar Message = require(\"./message\");\n\n/**\n * From object converter part of an {@link IWrapper}.\n * @typedef WrapperFromObjectConverter\n * @type {function}\n * @param {Object.} object Plain object\n * @returns {Message<{}>} Message instance\n * @this Type\n */\n\n/**\n * To object converter part of an {@link IWrapper}.\n * @typedef WrapperToObjectConverter\n * @type {function}\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n * @this Type\n */\n\n/**\n * Common type wrapper part of {@link wrappers}.\n * @interface IWrapper\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\n * @property {WrapperToObjectConverter} [toObject] To object converter\n */\n\n// Custom wrapper for Any\nwrappers[\".google.protobuf.Any\"] = {\n\n fromObject: function(object) {\n\n // unwrap value type if mapped\n if (object && object[\"@type\"]) {\n // Only use fully qualified type name after the last '/'\n var name = object[\"@type\"].substring(object[\"@type\"].lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type) {\n // type_url does not accept leading \".\"\n var type_url = object[\"@type\"].charAt(0) === \".\" ?\n object[\"@type\"].slice(1) : object[\"@type\"];\n // type_url prefix is optional, but path seperator is required\n if (type_url.indexOf(\"/\") === -1) {\n type_url = \"/\" + type_url;\n }\n return this.create({\n type_url: type_url,\n value: type.encode(type.fromObject(object)).finish()\n });\n }\n }\n\n return this.fromObject(object);\n },\n\n toObject: function(message, options) {\n\n // Default prefix\n var googleApi = \"type.googleapis.com/\";\n var prefix = \"\";\n var name = \"\";\n\n // decode value if requested and unmapped\n if (options && options.json && message.type_url && message.value) {\n // Only use fully qualified type name after the last '/'\n name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\n // Separate the prefix used\n prefix = message.type_url.substring(0, message.type_url.lastIndexOf(\"/\") + 1);\n var type = this.lookup(name);\n /* istanbul ignore else */\n if (type)\n message = type.decode(message.value);\n }\n\n // wrap value if unmapped\n if (!(message instanceof this.ctor) && message instanceof Message) {\n var object = message.$type.toObject(message, options);\n var messageName = message.$type.fullName[0] === \".\" ?\n message.$type.fullName.slice(1) : message.$type.fullName;\n // Default to type.googleapis.com prefix if no prefix is used\n if (prefix === \"\") {\n prefix = googleApi;\n }\n name = prefix + messageName;\n object[\"@type\"] = name;\n return object;\n }\n\n return this.toObject(message, options);\n }\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]|[\\ud800-\\udbff](?![\\udc00-\\udfff])|(?:[^\\ud800-\\udbff]|^)[\\udc00-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction insertSort (array) {\n // Insertion sort is very efficient for small input sizes but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2) {\n return array.sort()\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getBooleanOption(options, 'deterministic')\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = insertSort(keys)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","exports.get = function(belowFn) {\n var oldLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = Infinity;\n\n var dummyObject = {};\n\n var v8Handler = Error.prepareStackTrace;\n Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\n return v8StackTrace;\n };\n Error.captureStackTrace(dummyObject, belowFn || exports.get);\n\n var v8StackTrace = dummyObject.stack;\n Error.prepareStackTrace = v8Handler;\n Error.stackTraceLimit = oldLimit;\n\n return v8StackTrace;\n};\n\nexports.parse = function(err) {\n if (!err.stack) {\n return [];\n }\n\n var self = this;\n var lines = err.stack.split('\\n').slice(1);\n\n return lines\n .map(function(line) {\n if (line.match(/^\\s*[-]{4,}$/)) {\n return self._createParsedCallSite({\n fileName: line,\n lineNumber: null,\n functionName: null,\n typeName: null,\n methodName: null,\n columnNumber: null,\n 'native': null,\n });\n }\n\n var lineMatch = line.match(/at (?:(.+)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\n if (!lineMatch) {\n return;\n }\n\n var object = null;\n var method = null;\n var functionName = null;\n var typeName = null;\n var methodName = null;\n var isNative = (lineMatch[5] === 'native');\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n var methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart-1] == '.')\n methodStart--;\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n var objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = null;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = null;\n functionName = null;\n }\n\n var properties = {\n fileName: lineMatch[2] || null,\n lineNumber: parseInt(lineMatch[3], 10) || null,\n functionName: functionName,\n typeName: typeName,\n methodName: methodName,\n columnNumber: parseInt(lineMatch[4], 10) || null,\n 'native': isNative,\n };\n\n return self._createParsedCallSite(properties);\n })\n .filter(function(callSite) {\n return !!callSite;\n });\n};\n\nfunction CallSite(properties) {\n for (var property in properties) {\n this[property] = properties[property];\n }\n}\n\nvar strProperties = [\n 'this',\n 'typeName',\n 'functionName',\n 'methodName',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'function',\n 'evalOrigin'\n];\nvar boolProperties = [\n 'topLevel',\n 'eval',\n 'native',\n 'constructor'\n];\nstrProperties.forEach(function (property) {\n CallSite.prototype[property] = null;\n CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\n return this[property];\n }\n});\nboolProperties.forEach(function (property) {\n CallSite.prototype[property] = false;\n CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\n return this[property];\n }\n});\n\nexports._createParsedCallSite = function(properties) {\n return new CallSite(properties);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n 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':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","'use strict';\n\n/***\n * Convert string to hex color.\n *\n * @param {String} str Text to hash and convert to hex.\n * @returns {String}\n * @api public\n */\nmodule.exports = function hex(str) {\n for (\n var i = 0, hash = 0;\n i < str.length;\n hash = str.charCodeAt(i++) + ((hash << 5) - hash)\n );\n\n var color = Math.floor(\n Math.abs(\n (Math.sin(hash) * 10000) % 1 * 16777216\n )\n ).toString(16);\n\n return '#' + Array(6 - color.length + 1).join('0') + color;\n};\n","/**\n * cli.js: Config that conform to commonly used CLI logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the CLI configuration.\n * @type {Object}\n */\nexports.levels = {\n error: 0,\n warn: 1,\n help: 2,\n data: 3,\n info: 4,\n debug: 5,\n prompt: 6,\n verbose: 7,\n input: 8,\n silly: 9\n};\n\n/**\n * Default colors for the CLI configuration.\n * @type {Object}\n */\nexports.colors = {\n error: 'red',\n warn: 'yellow',\n help: 'cyan',\n data: 'grey',\n info: 'green',\n debug: 'blue',\n prompt: 'grey',\n verbose: 'cyan',\n input: 'grey',\n silly: 'magenta'\n};\n","/**\n * index.js: Default settings for all levels that winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Export config set for the CLI.\n * @type {Object}\n */\nObject.defineProperty(exports, 'cli', {\n value: require('./cli')\n});\n\n/**\n * Export config set for npm.\n * @type {Object}\n */\nObject.defineProperty(exports, 'npm', {\n value: require('./npm')\n});\n\n/**\n * Export config set for the syslog.\n * @type {Object}\n */\nObject.defineProperty(exports, 'syslog', {\n value: require('./syslog')\n});\n","/**\n * npm.js: Config that conform to npm logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the npm configuration.\n * @type {Object}\n */\nexports.levels = {\n error: 0,\n warn: 1,\n info: 2,\n http: 3,\n verbose: 4,\n debug: 5,\n silly: 6\n};\n\n/**\n * Default levels for the npm configuration.\n * @type {Object}\n */\nexports.colors = {\n error: 'red',\n warn: 'yellow',\n info: 'green',\n http: 'green',\n verbose: 'cyan',\n debug: 'blue',\n silly: 'magenta'\n};\n","/**\n * syslog.js: Config that conform to syslog logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.levels = {\n emerg: 0,\n alert: 1,\n crit: 2,\n error: 3,\n warning: 4,\n notice: 5,\n info: 6,\n debug: 7\n};\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.colors = {\n emerg: 'red',\n alert: 'yellow',\n crit: 'red',\n error: 'red',\n warning: 'red',\n notice: 'yellow',\n info: 'green',\n debug: 'blue'\n};\n","'use strict';\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden level identifier\n * to allow the readable level property to be mutable for\n * operations like colorization\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'LEVEL', {\n value: Symbol.for('level')\n});\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden message identifier\n * to allow the final message property to not have\n * side effects on another.\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'MESSAGE', {\n value: Symbol.for('message')\n});\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden message identifier\n * to allow the extracted splat property be hidden\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'SPLAT', {\n value: Symbol.for('splat')\n});\n\n/**\n * A shareable object constant that can be used\n * as a standard configuration for winston@3.\n *\n * @type {Object}\n */\nObject.defineProperty(exports, 'configs', {\n value: require('./config')\n});\n","\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n","'use strict';\n\n// Expose modern transport directly as the export\nmodule.exports = require('./modern');\n\n// Expose legacy stream\nmodule.exports.LegacyTransportStream = require('./legacy');\n","'use strict';\n\nconst util = require('util');\nconst { LEVEL } = require('triple-beam');\nconst TransportStream = require('./modern');\n\n/**\n * Constructor function for the LegacyTransportStream. This is an internal\n * wrapper `winston >= 3` uses to wrap older transports implementing\n * log(level, message, meta).\n * @param {Object} options - Options for this TransportStream instance.\n * @param {Transpot} options.transport - winston@2 or older Transport to wrap.\n */\n\nconst LegacyTransportStream = module.exports = function LegacyTransportStream(options = {}) {\n TransportStream.call(this, options);\n if (!options.transport || typeof options.transport.log !== 'function') {\n throw new Error('Invalid transport, must be an object with a log method.');\n }\n\n this.transport = options.transport;\n this.level = this.level || options.transport.level;\n this.handleExceptions = this.handleExceptions || options.transport.handleExceptions;\n\n // Display our deprecation notice.\n this._deprecated();\n\n // Properly bubble up errors from the transport to the\n // LegacyTransportStream instance, but only once no matter how many times\n // this transport is shared.\n function transportError(err) {\n this.emit('error', err, this.transport);\n }\n\n if (!this.transport.__winstonError) {\n this.transport.__winstonError = transportError.bind(this);\n this.transport.on('error', this.transport.__winstonError);\n }\n};\n\n/*\n * Inherit from TransportStream using Node.js built-ins\n */\nutil.inherits(LegacyTransportStream, TransportStream);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nLegacyTransportStream.prototype._write = function _write(info, enc, callback) {\n if (this.silent || (info.exception === true && !this.handleExceptions)) {\n return callback(null);\n }\n\n // Remark: This has to be handled in the base transport now because we\n // cannot conditionally write to our pipe targets as stream.\n if (!this.level || this.levels[this.level] >= this.levels[info[LEVEL]]) {\n this.transport.log(info[LEVEL], info.message, info, this._nop);\n }\n\n callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nLegacyTransportStream.prototype._writev = function _writev(chunks, callback) {\n for (let i = 0; i < chunks.length; i++) {\n if (this._accept(chunks[i])) {\n this.transport.log(\n chunks[i].chunk[LEVEL],\n chunks[i].chunk.message,\n chunks[i].chunk,\n this._nop\n );\n chunks[i].callback();\n }\n }\n\n return callback(null);\n};\n\n/**\n * Displays a deprecation notice. Defined as a function so it can be\n * overriden in tests.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype._deprecated = function _deprecated() {\n // eslint-disable-next-line no-console\n console.error([\n `${this.transport.name} is a legacy winston transport. Consider upgrading: `,\n '- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md'\n ].join('\\n'));\n};\n\n/**\n * Clean up error handling state on the legacy transport associated\n * with this instance.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype.close = function close() {\n if (this.transport.close) {\n this.transport.close();\n }\n\n if (this.transport.__winstonError) {\n this.transport.removeListener('error', this.transport.__winstonError);\n this.transport.__winstonError = null;\n }\n};\n","'use strict';\n\nconst util = require('util');\nconst Writable = require('readable-stream/lib/_stream_writable.js');\nconst { LEVEL } = require('triple-beam');\n\n/**\n * Constructor function for the TransportStream. This is the base prototype\n * that all `winston >= 3` transports should inherit from.\n * @param {Object} options - Options for this TransportStream instance\n * @param {String} options.level - Highest level according to RFC5424.\n * @param {Boolean} options.handleExceptions - If true, info with\n * { exception: true } will be written.\n * @param {Function} options.log - Custom log function for simple Transport\n * creation\n * @param {Function} options.close - Called on \"unpipe\" from parent.\n */\nconst TransportStream = module.exports = function TransportStream(options = {}) {\n Writable.call(this, { objectMode: true, highWaterMark: options.highWaterMark });\n\n this.format = options.format;\n this.level = options.level;\n this.handleExceptions = options.handleExceptions;\n this.handleRejections = options.handleRejections;\n this.silent = options.silent;\n\n if (options.log) this.log = options.log;\n if (options.logv) this.logv = options.logv;\n if (options.close) this.close = options.close;\n\n // Get the levels from the source we are piped from.\n this.once('pipe', logger => {\n // Remark (indexzero): this bookkeeping can only support multiple\n // Logger parents with the same `levels`. This comes into play in\n // the `winston.Container` code in which `container.add` takes\n // a fully realized set of options with pre-constructed TransportStreams.\n this.levels = logger.levels;\n this.parent = logger;\n });\n\n // If and/or when the transport is removed from this instance\n this.once('unpipe', src => {\n // Remark (indexzero): this bookkeeping can only support multiple\n // Logger parents with the same `levels`. This comes into play in\n // the `winston.Container` code in which `container.add` takes\n // a fully realized set of options with pre-constructed TransportStreams.\n if (src === this.parent) {\n this.parent = null;\n if (this.close) {\n this.close();\n }\n }\n });\n};\n\n/*\n * Inherit from Writeable using Node.js built-ins\n */\nutil.inherits(TransportStream, Writable);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nTransportStream.prototype._write = function _write(info, enc, callback) {\n if (this.silent || (info.exception === true && !this.handleExceptions)) {\n return callback(null);\n }\n\n // Remark: This has to be handled in the base transport now because we\n // cannot conditionally write to our pipe targets as stream. We always\n // prefer any explicit level set on the Transport itself falling back to\n // any level set on the parent.\n const level = this.level || (this.parent && this.parent.level);\n\n if (!level || this.levels[level] >= this.levels[info[LEVEL]]) {\n if (info && !this.format) {\n return this.log(info, callback);\n }\n\n let errState;\n let transformed;\n\n // We trap(and re-throw) any errors generated by the user-provided format, but also\n // guarantee that the streams callback is invoked so that we can continue flowing.\n try {\n transformed = this.format.transform(Object.assign({}, info), this.format.options);\n } catch (err) {\n errState = err;\n }\n\n if (errState || !transformed) {\n // eslint-disable-next-line callback-return\n callback();\n if (errState) throw errState;\n return;\n }\n\n return this.log(transformed, callback);\n }\n this._writableState.sync = false;\n return callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nTransportStream.prototype._writev = function _writev(chunks, callback) {\n if (this.logv) {\n const infos = chunks.filter(this._accept, this);\n if (!infos.length) {\n return callback(null);\n }\n\n // Remark (indexzero): from a performance perspective if Transport\n // implementers do choose to implement logv should we make it their\n // responsibility to invoke their format?\n return this.logv(infos, callback);\n }\n\n for (let i = 0; i < chunks.length; i++) {\n if (!this._accept(chunks[i])) continue;\n\n if (chunks[i].chunk && !this.format) {\n this.log(chunks[i].chunk, chunks[i].callback);\n continue;\n }\n\n let errState;\n let transformed;\n\n // We trap(and re-throw) any errors generated by the user-provided format, but also\n // guarantee that the streams callback is invoked so that we can continue flowing.\n try {\n transformed = this.format.transform(\n Object.assign({}, chunks[i].chunk),\n this.format.options\n );\n } catch (err) {\n errState = err;\n }\n\n if (errState || !transformed) {\n // eslint-disable-next-line callback-return\n chunks[i].callback();\n if (errState) {\n // eslint-disable-next-line callback-return\n callback(null);\n throw errState;\n }\n } else {\n this.log(transformed, chunks[i].callback);\n }\n }\n\n return callback(null);\n};\n\n/**\n * Predicate function that returns true if the specfied `info` on the\n * WriteReq, `write`, should be passed down into the derived\n * TransportStream's I/O via `.log(info, callback)`.\n * @param {WriteReq} write - winston@3 Node.js WriteReq for the `info` object\n * representing the log message.\n * @returns {Boolean} - Value indicating if the `write` should be accepted &\n * logged.\n */\nTransportStream.prototype._accept = function _accept(write) {\n const info = write.chunk;\n if (this.silent) {\n return false;\n }\n\n // We always prefer any explicit level set on the Transport itself\n // falling back to any level set on the parent.\n const level = this.level || (this.parent && this.parent.level);\n\n // Immediately check the average case: log level filtering.\n if (\n info.exception === true ||\n !level ||\n this.levels[level] >= this.levels[info[LEVEL]]\n ) {\n // Ensure the info object is valid based on `{ exception }`:\n // 1. { handleExceptions: true }: all `info` objects are valid\n // 2. { exception: false }: accepted by all transports.\n if (this.handleExceptions || info.exception !== true) {\n return true;\n }\n }\n\n return false;\n};\n\n/**\n * _nop is short for \"No operation\"\n * @returns {Boolean} Intentionally false.\n */\nTransportStream.prototype._nop = function _nop() {\n // eslint-disable-next-line no-undefined\n return void undefined;\n};\n","'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n var iterator;\n if (iterable && typeof iterable.next === 'function') {\n iterator = iterable;\n } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n var readable = new Readable(_objectSpread({\n objectMode: true\n }, opts));\n // Reading boolean to protect against _read\n // being called before last iteration completion.\n var reading = false;\n readable._read = function () {\n if (!reading) {\n reading = true;\n next();\n }\n };\n function next() {\n return _next2.apply(this, arguments);\n }\n function _next2() {\n _next2 = _asyncToGenerator(function* () {\n try {\n var _yield$iterator$next = yield iterator.next(),\n value = _yield$iterator$next.value,\n done = _yield$iterator$next.done;\n if (done) {\n readable.push(null);\n } else if (readable.push(yield value)) {\n next();\n } else {\n reading = false;\n }\n } catch (err) {\n readable.destroy(err);\n }\n });\n return _next2.apply(this, arguments);\n }\n return readable;\n}\nmodule.exports = from;\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('stream');\n","/**\n * winston.js: Top-level include defining Winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { warn } = require('./winston/common');\n\n/**\n * Expose version. Use `require` method for `webpack` support.\n * @type {string}\n */\nexports.version = require('../package.json').version;\n/**\n * Include transports defined by default by winston\n * @type {Array}\n */\nexports.transports = require('./winston/transports');\n/**\n * Expose utility methods\n * @type {Object}\n */\nexports.config = require('./winston/config');\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.format = logform.format;\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.createLogger = require('./winston/create-logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.Logger = require('./winston/logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.ExceptionHandler = require('./winston/exception-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.RejectionHandler = require('./winston/rejection-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Container}\n */\nexports.Container = require('./winston/container');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.Transport = require('winston-transport');\n/**\n * We create and expose a default `Container` to `winston.loggers` so that the\n * programmer may manage multiple `winston.Logger` instances without any\n * additional overhead.\n * @example\n * // some-file1.js\n * const logger = require('winston').loggers.get('something');\n *\n * // some-file2.js\n * const logger = require('winston').loggers.get('something');\n */\nexports.loggers = new exports.Container();\n\n/**\n * We create and expose a 'defaultLogger' so that the programmer may do the\n * following without the need to create an instance of winston.Logger directly:\n * @example\n * const winston = require('winston');\n * winston.log('info', 'some message');\n * winston.error('some error');\n */\nconst defaultLogger = exports.createLogger();\n\n// Pass through the target methods onto `winston.\nObject.keys(exports.config.npm.levels)\n .concat([\n 'log',\n 'query',\n 'stream',\n 'add',\n 'remove',\n 'clear',\n 'profile',\n 'startTimer',\n 'handleExceptions',\n 'unhandleExceptions',\n 'handleRejections',\n 'unhandleRejections',\n 'configure',\n 'child'\n ])\n .forEach(\n method => (exports[method] = (...args) => defaultLogger[method](...args))\n );\n\n/**\n * Define getter / setter for the default logger level which need to be exposed\n * by winston.\n * @type {string}\n */\nObject.defineProperty(exports, 'level', {\n get() {\n return defaultLogger.level;\n },\n set(val) {\n defaultLogger.level = val;\n }\n});\n\n/**\n * Define getter for `exceptions` which replaces `handleExceptions` and\n * `unhandleExceptions`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'exceptions', {\n get() {\n return defaultLogger.exceptions;\n }\n});\n\n/**\n * Define getter for `rejections` which replaces `handleRejections` and\n * `unhandleRejections`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'rejections', {\n get() {\n return defaultLogger.rejections;\n }\n});\n\n/**\n * Define getters / setters for appropriate properties of the default logger\n * which need to be exposed by winston.\n * @type {Logger}\n */\n['exitOnError'].forEach(prop => {\n Object.defineProperty(exports, prop, {\n get() {\n return defaultLogger[prop];\n },\n set(val) {\n defaultLogger[prop] = val;\n }\n });\n});\n\n/**\n * The default transports and exceptionHandlers for the default winston logger.\n * @type {Object}\n */\nObject.defineProperty(exports, 'default', {\n get() {\n return {\n exceptionHandlers: defaultLogger.exceptionHandlers,\n rejectionHandlers: defaultLogger.rejectionHandlers,\n transports: defaultLogger.transports\n };\n }\n});\n\n// Have friendlier breakage notices for properties that were exposed by default\n// on winston < 3.0.\nwarn.deprecated(exports, 'setLevels');\nwarn.forFunctions(exports, 'useFormat', ['cli']);\nwarn.forProperties(exports, 'useFormat', ['padLevels', 'stripColors']);\nwarn.forFunctions(exports, 'deprecated', [\n 'addRewriter',\n 'addFilter',\n 'clone',\n 'extend'\n]);\nwarn.forProperties(exports, 'deprecated', ['emitErrs', 'levelLength']);\n\n","/**\n * common.js: Internal helper and utility functions for winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { format } = require('util');\n\n/**\n * Set of simple deprecation notices and a way to expose them for a set of\n * properties.\n * @type {Object}\n * @private\n */\nexports.warn = {\n deprecated(prop) {\n return () => {\n throw new Error(format('{ %s } was removed in winston@3.0.0.', prop));\n };\n },\n useFormat(prop) {\n return () => {\n throw new Error([\n format('{ %s } was removed in winston@3.0.0.', prop),\n 'Use a custom winston.format = winston.format(function) instead.'\n ].join('\\n'));\n };\n },\n forFunctions(obj, type, props) {\n props.forEach(prop => {\n obj[prop] = exports.warn[type](prop);\n });\n },\n forProperties(obj, type, props) {\n props.forEach(prop => {\n const notice = exports.warn[type](prop);\n Object.defineProperty(obj, prop, {\n get: notice,\n set: notice\n });\n });\n }\n};\n","/**\n * index.js: Default settings for all levels that winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { configs } = require('triple-beam');\n\n/**\n * Export config set for the CLI.\n * @type {Object}\n */\nexports.cli = logform.levels(configs.cli);\n\n/**\n * Export config set for npm.\n * @type {Object}\n */\nexports.npm = logform.levels(configs.npm);\n\n/**\n * Export config set for the syslog.\n * @type {Object}\n */\nexports.syslog = logform.levels(configs.syslog);\n\n/**\n * Hoist addColors from logform where it was refactored into in winston@3.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n","/**\n * container.js: Inversion of control container for winston logger instances.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst createLogger = require('./create-logger');\n\n/**\n * Inversion of control container for winston logger instances.\n * @type {Container}\n */\nmodule.exports = class Container {\n /**\n * Constructor function for the Container object responsible for managing a\n * set of `winston.Logger` instances based on string ids.\n * @param {!Object} [options={}] - Default pass-thru options for Loggers.\n */\n constructor(options = {}) {\n this.loggers = new Map();\n this.options = options;\n }\n\n /**\n * Retrieves a `winston.Logger` instance for the specified `id`. If an\n * instance does not exist, one is created.\n * @param {!string} id - The id of the Logger to get.\n * @param {?Object} [options] - Options for the Logger instance.\n * @returns {Logger} - A configured Logger instance with a specified id.\n */\n add(id, options) {\n if (!this.loggers.has(id)) {\n // Remark: Simple shallow clone for configuration options in case we pass\n // in instantiated protoypal objects\n options = Object.assign({}, options || this.options);\n const existing = options.transports || this.options.transports;\n\n // Remark: Make sure if we have an array of transports we slice it to\n // make copies of those references.\n if (existing) {\n options.transports = Array.isArray(existing) ? existing.slice() : [existing];\n } else {\n options.transports = [];\n }\n\n const logger = createLogger(options);\n logger.on('close', () => this._delete(id));\n this.loggers.set(id, logger);\n }\n\n return this.loggers.get(id);\n }\n\n /**\n * Retreives a `winston.Logger` instance for the specified `id`. If\n * an instance does not exist, one is created.\n * @param {!string} id - The id of the Logger to get.\n * @param {?Object} [options] - Options for the Logger instance.\n * @returns {Logger} - A configured Logger instance with a specified id.\n */\n get(id, options) {\n return this.add(id, options);\n }\n\n /**\n * Check if the container has a logger with the id.\n * @param {?string} id - The id of the Logger instance to find.\n * @returns {boolean} - Boolean value indicating if this instance has a\n * logger with the specified `id`.\n */\n has(id) {\n return !!this.loggers.has(id);\n }\n\n /**\n * Closes a `Logger` instance with the specified `id` if it exists.\n * If no `id` is supplied then all Loggers are closed.\n * @param {?string} id - The id of the Logger instance to close.\n * @returns {undefined}\n */\n close(id) {\n if (id) {\n return this._removeLogger(id);\n }\n\n this.loggers.forEach((val, key) => this._removeLogger(key));\n }\n\n /**\n * Remove a logger based on the id.\n * @param {!string} id - The id of the logger to remove.\n * @returns {undefined}\n * @private\n */\n _removeLogger(id) {\n if (!this.loggers.has(id)) {\n return;\n }\n\n const logger = this.loggers.get(id);\n logger.close();\n this._delete(id);\n }\n\n /**\n * Deletes a `Logger` instance with the specified `id`.\n * @param {!string} id - The id of the Logger instance to delete from\n * container.\n * @returns {undefined}\n * @private\n */\n _delete(id) {\n this.loggers.delete(id);\n }\n};\n","/**\n * create-logger.js: Logger factory for winston logger instances.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { LEVEL } = require('triple-beam');\nconst config = require('./config');\nconst Logger = require('./logger');\nconst debug = require('@dabh/diagnostics')('winston:create-logger');\n\nfunction isLevelEnabledFunctionName(level) {\n return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';\n}\n\n/**\n * Create a new instance of a winston Logger. Creates a new\n * prototype for each instance.\n * @param {!Object} opts - Options for the created logger.\n * @returns {Logger} - A newly created logger instance.\n */\nmodule.exports = function (opts = {}) {\n //\n // Default levels: npm\n //\n opts.levels = opts.levels || config.npm.levels;\n\n /**\n * DerivedLogger to attach the logs level methods.\n * @type {DerivedLogger}\n * @extends {Logger}\n */\n class DerivedLogger extends Logger {\n /**\n * Create a new class derived logger for which the levels can be attached to\n * the prototype of. This is a V8 optimization that is well know to increase\n * performance of prototype functions.\n * @param {!Object} options - Options for the created logger.\n */\n constructor(options) {\n super(options);\n }\n }\n\n const logger = new DerivedLogger(opts);\n\n //\n // Create the log level methods for the derived logger.\n //\n Object.keys(opts.levels).forEach(function (level) {\n debug('Define prototype method for \"%s\"', level);\n if (level === 'log') {\n // eslint-disable-next-line no-console\n console.warn('Level \"log\" not defined: conflicts with the method \"log\". Use a different level name.');\n return;\n }\n\n //\n // Define prototype methods for each log level e.g.:\n // logger.log('info', msg) implies these methods are defined:\n // - logger.info(msg)\n // - logger.isInfoEnabled()\n //\n // Remark: to support logger.child this **MUST** be a function\n // so it'll always be called on the instance instead of a fixed\n // place in the prototype chain.\n //\n DerivedLogger.prototype[level] = function (...args) {\n // Prefer any instance scope, but default to \"root\" logger\n const self = this || logger;\n\n // Optimize the hot-path which is the single object.\n if (args.length === 1) {\n const [msg] = args;\n const info = msg && msg.message && msg || { message: msg };\n info.level = info[LEVEL] = level;\n self._addDefaultMeta(info);\n self.write(info);\n return (this || logger);\n }\n\n // When provided nothing assume the empty string\n if (args.length === 0) {\n self.log(level, '');\n return self;\n }\n\n // Otherwise build argument list which could potentially conform to\n // either:\n // . v3 API: log(obj)\n // 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])\n return self.log(level, ...args);\n };\n\n DerivedLogger.prototype[isLevelEnabledFunctionName(level)] = function () {\n return (this || logger).isLevelEnabled(level);\n };\n });\n\n return logger;\n};\n","/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:exception');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst ExceptionStream = require('./exception-stream');\n\n/**\n * Object for handling uncaughtException events.\n * @type {ExceptionHandler}\n */\nmodule.exports = class ExceptionHandler {\n /**\n * TODO: add contructor description\n * @param {!Logger} logger - TODO: add param description\n */\n constructor(logger) {\n if (!logger) {\n throw new Error('Logger is required to handle exceptions');\n }\n\n this.logger = logger;\n this.handlers = new Map();\n }\n\n /**\n * Handles `uncaughtException` events for the current process by adding any\n * handlers passed in.\n * @returns {undefined}\n */\n handle(...args) {\n args.forEach(arg => {\n if (Array.isArray(arg)) {\n return arg.forEach(handler => this._addHandler(handler));\n }\n\n this._addHandler(arg);\n });\n\n if (!this.catcher) {\n this.catcher = this._uncaughtException.bind(this);\n process.on('uncaughtException', this.catcher);\n }\n }\n\n /**\n * Removes any handlers to `uncaughtException` events for the current\n * process. This does not modify the state of the `this.handlers` set.\n * @returns {undefined}\n */\n unhandle() {\n if (this.catcher) {\n process.removeListener('uncaughtException', this.catcher);\n this.catcher = false;\n\n Array.from(this.handlers.values())\n .forEach(wrapper => this.logger.unpipe(wrapper));\n }\n }\n\n /**\n * TODO: add method description\n * @param {Error} err - Error to get information about.\n * @returns {mixed} - TODO: add return description.\n */\n getAllInfo(err) {\n let message = null;\n if (err) {\n message = typeof err === 'string' ? err : err.message;\n }\n\n return {\n error: err,\n // TODO (indexzero): how do we configure this?\n level: 'error',\n message: [\n `uncaughtException: ${(message || '(no error message)')}`,\n err && err.stack || ' No stack trace'\n ].join('\\n'),\n stack: err && err.stack,\n exception: true,\n date: new Date().toString(),\n process: this.getProcessInfo(),\n os: this.getOsInfo(),\n trace: this.getTrace(err)\n };\n }\n\n /**\n * Gets all relevant process information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getProcessInfo() {\n return {\n pid: process.pid,\n uid: process.getuid ? process.getuid() : null,\n gid: process.getgid ? process.getgid() : null,\n cwd: process.cwd(),\n execPath: process.execPath,\n version: process.version,\n argv: process.argv,\n memoryUsage: process.memoryUsage()\n };\n }\n\n /**\n * Gets all relevant OS information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getOsInfo() {\n return {\n loadavg: os.loadavg(),\n uptime: os.uptime()\n };\n }\n\n /**\n * Gets a stack trace for the specified error.\n * @param {mixed} err - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n */\n getTrace(err) {\n const trace = err ? stackTrace.parse(err) : stackTrace.get();\n return trace.map(site => {\n return {\n column: site.getColumnNumber(),\n file: site.getFileName(),\n function: site.getFunctionName(),\n line: site.getLineNumber(),\n method: site.getMethodName(),\n native: site.isNative()\n };\n });\n }\n\n /**\n * Helper method to add a transport as an exception handler.\n * @param {Transport} handler - The transport to add as an exception handler.\n * @returns {void}\n */\n _addHandler(handler) {\n if (!this.handlers.has(handler)) {\n handler.handleExceptions = true;\n const wrapper = new ExceptionStream(handler);\n this.handlers.set(handler, wrapper);\n this.logger.pipe(wrapper);\n }\n }\n\n /**\n * Logs all relevant information around the `err` and exits the current\n * process.\n * @param {Error} err - Error to handle\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n _uncaughtException(err) {\n const info = this.getAllInfo(err);\n const handlers = this._getExceptionHandlers();\n // Calculate if we should exit on this error\n let doExit = typeof this.logger.exitOnError === 'function'\n ? this.logger.exitOnError(err)\n : this.logger.exitOnError;\n let timeout;\n\n if (!handlers.length && doExit) {\n // eslint-disable-next-line no-console\n console.warn('winston: exitOnError cannot be true with no exception handlers.');\n // eslint-disable-next-line no-console\n console.warn('winston: not exiting process.');\n doExit = false;\n }\n\n function gracefulExit() {\n debug('doExit', doExit);\n debug('process._exiting', process._exiting);\n\n if (doExit && !process._exiting) {\n // Remark: Currently ignoring any exceptions from transports when\n // catching uncaught exceptions.\n if (timeout) {\n clearTimeout(timeout);\n }\n // eslint-disable-next-line no-process-exit\n process.exit(1);\n }\n }\n\n if (!handlers || handlers.length === 0) {\n return process.nextTick(gracefulExit);\n }\n\n // Log to all transports attempting to listen for when they are completed.\n asyncForEach(handlers, (handler, next) => {\n const done = once(next);\n const transport = handler.transport || handler;\n\n // Debug wrapping so that we can inspect what's going on under the covers.\n function onDone(event) {\n return () => {\n debug(event);\n done();\n };\n }\n\n transport._ending = true;\n transport.once('finish', onDone('finished'));\n transport.once('error', onDone('error'));\n }, () => doExit && gracefulExit());\n\n this.logger.log(info);\n\n // If exitOnError is true, then only allow the logging of exceptions to\n // take up to `3000ms`.\n if (doExit) {\n timeout = setTimeout(gracefulExit, 3000);\n }\n }\n\n /**\n * Returns the list of transports and exceptionHandlers for this instance.\n * @returns {Array} - List of transports and exceptionHandlers for this\n * instance.\n * @private\n */\n _getExceptionHandlers() {\n // Remark (indexzero): since `logger.transports` returns all of the pipes\n // from the _readableState of the stream we actually get the join of the\n // explicit handlers and the implicit transports with\n // `handleExceptions: true`\n return this.logger.transports.filter(wrap => {\n const transport = wrap.transport || wrap;\n return transport.handleExceptions;\n });\n }\n};\n","/**\n * exception-stream.js: TODO: add file header handler.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Writable } = require('readable-stream');\n\n/**\n * TODO: add class description.\n * @type {ExceptionStream}\n * @extends {Writable}\n */\nmodule.exports = class ExceptionStream extends Writable {\n /**\n * Constructor function for the ExceptionStream responsible for wrapping a\n * TransportStream; only allowing writes of `info` objects with\n * `info.exception` set to true.\n * @param {!TransportStream} transport - Stream to filter to exceptions\n */\n constructor(transport) {\n super({ objectMode: true });\n\n if (!transport) {\n throw new Error('ExceptionStream requires a TransportStream instance.');\n }\n\n // Remark (indexzero): we set `handleExceptions` here because it's the\n // predicate checked in ExceptionHandler.prototype.__getExceptionHandlers\n this.handleExceptions = true;\n this.transport = transport;\n }\n\n /**\n * Writes the info object to our transport instance if (and only if) the\n * `exception` property is set on the info.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {mixed} callback - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n _write(info, enc, callback) {\n if (info.exception) {\n return this.transport.log(info, callback);\n }\n\n callback();\n return true;\n }\n};\n","/**\n * logger.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Stream, Transform } = require('readable-stream');\nconst asyncForEach = require('async/forEach');\nconst { LEVEL, SPLAT } = require('triple-beam');\nconst isStream = require('is-stream');\nconst ExceptionHandler = require('./exception-handler');\nconst RejectionHandler = require('./rejection-handler');\nconst LegacyTransportStream = require('winston-transport/legacy');\nconst Profiler = require('./profiler');\nconst { warn } = require('./common');\nconst config = require('./config');\n\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\nconst formatRegExp = /%[scdjifoO%]/g;\n\n/**\n * TODO: add class description.\n * @type {Logger}\n * @extends {Transform}\n */\nclass Logger extends Transform {\n /**\n * Constructor function for the Logger object responsible for persisting log\n * messages and metadata to one or more transports.\n * @param {!Object} options - foo\n */\n constructor(options) {\n super({ objectMode: true });\n this.configure(options);\n }\n\n child(defaultRequestMetadata) {\n const logger = this;\n return Object.create(logger, {\n write: {\n value: function (info) {\n const infoClone = Object.assign(\n {},\n defaultRequestMetadata,\n info\n );\n\n // Object.assign doesn't copy inherited Error\n // properties so we have to do that explicitly\n //\n // Remark (indexzero): we should remove this\n // since the errors format will handle this case.\n //\n if (info instanceof Error) {\n infoClone.stack = info.stack;\n infoClone.message = info.message;\n }\n\n logger.write(infoClone);\n }\n }\n });\n }\n\n /**\n * This will wholesale reconfigure this instance by:\n * 1. Resetting all transports. Older transports will be removed implicitly.\n * 2. Set all other options including levels, colors, rewriters, filters,\n * exceptionHandlers, etc.\n * @param {!Object} options - TODO: add param description.\n * @returns {undefined}\n */\n configure({\n silent,\n format,\n defaultMeta,\n levels,\n level = 'info',\n exitOnError = true,\n transports,\n colors,\n emitErrs,\n formatters,\n padLevels,\n rewriters,\n stripColors,\n exceptionHandlers,\n rejectionHandlers\n } = {}) {\n // Reset transports if we already have them\n if (this.transports.length) {\n this.clear();\n }\n\n this.silent = silent;\n this.format = format || this.format || require('logform/json')();\n\n this.defaultMeta = defaultMeta || null;\n // Hoist other options onto this instance.\n this.levels = levels || this.levels || config.npm.levels;\n this.level = level;\n if (this.exceptions) {\n this.exceptions.unhandle();\n }\n if (this.rejections) {\n this.rejections.unhandle();\n }\n this.exceptions = new ExceptionHandler(this);\n this.rejections = new RejectionHandler(this);\n this.profilers = {};\n this.exitOnError = exitOnError;\n\n // Add all transports we have been provided.\n if (transports) {\n transports = Array.isArray(transports) ? transports : [transports];\n transports.forEach(transport => this.add(transport));\n }\n\n if (\n colors ||\n emitErrs ||\n formatters ||\n padLevels ||\n rewriters ||\n stripColors\n ) {\n throw new Error(\n [\n '{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.',\n 'Use a custom winston.format(function) instead.',\n 'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'\n ].join('\\n')\n );\n }\n\n if (exceptionHandlers) {\n this.exceptions.handle(exceptionHandlers);\n }\n if (rejectionHandlers) {\n this.rejections.handle(rejectionHandlers);\n }\n }\n\n isLevelEnabled(level) {\n const givenLevelValue = getLevelValue(this.levels, level);\n if (givenLevelValue === null) {\n return false;\n }\n\n const configuredLevelValue = getLevelValue(this.levels, this.level);\n if (configuredLevelValue === null) {\n return false;\n }\n\n if (!this.transports || this.transports.length === 0) {\n return configuredLevelValue >= givenLevelValue;\n }\n\n const index = this.transports.findIndex(transport => {\n let transportLevelValue = getLevelValue(this.levels, transport.level);\n if (transportLevelValue === null) {\n transportLevelValue = configuredLevelValue;\n }\n return transportLevelValue >= givenLevelValue;\n });\n return index !== -1;\n }\n\n /* eslint-disable valid-jsdoc */\n /**\n * Ensure backwards compatibility with a `log` method\n * @param {mixed} level - Level the log message is written at.\n * @param {mixed} msg - TODO: add param description.\n * @param {mixed} meta - TODO: add param description.\n * @returns {Logger} - TODO: add return description.\n *\n * @example\n * // Supports the existing API:\n * logger.log('info', 'Hello world', { custom: true });\n * logger.log('info', new Error('Yo, it\\'s on fire'));\n *\n * // Requires winston.format.splat()\n * logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true });\n *\n * // And the new API with a single JSON literal:\n * logger.log({ level: 'info', message: 'Hello world', custom: true });\n * logger.log({ level: 'info', message: new Error('Yo, it\\'s on fire') });\n *\n * // Also requires winston.format.splat()\n * logger.log({\n * level: 'info',\n * message: '%s %d%%',\n * [SPLAT]: ['A string', 50],\n * meta: { thisIsMeta: true }\n * });\n *\n */\n /* eslint-enable valid-jsdoc */\n log(level, msg, ...splat) {\n // eslint-disable-line max-params\n // Optimize for the hotpath of logging JSON literals\n if (arguments.length === 1) {\n // Yo dawg, I heard you like levels ... seriously ...\n // In this context the LHS `level` here is actually the `info` so read\n // this as: info[LEVEL] = info.level;\n level[LEVEL] = level.level;\n this._addDefaultMeta(level);\n this.write(level);\n return this;\n }\n\n // Slightly less hotpath, but worth optimizing for.\n if (arguments.length === 2) {\n if (msg && typeof msg === 'object') {\n msg[LEVEL] = msg.level = level;\n this._addDefaultMeta(msg);\n this.write(msg);\n return this;\n }\n\n msg = { [LEVEL]: level, level, message: msg };\n this._addDefaultMeta(msg);\n this.write(msg);\n return this;\n }\n\n const [meta] = splat;\n if (typeof meta === 'object' && meta !== null) {\n // Extract tokens, if none available default to empty array to\n // ensure consistancy in expected results\n const tokens = msg && msg.match && msg.match(formatRegExp);\n\n if (!tokens) {\n const info = Object.assign({}, this.defaultMeta, meta, {\n [LEVEL]: level,\n [SPLAT]: splat,\n level,\n message: msg\n });\n\n if (meta.message) info.message = `${info.message} ${meta.message}`;\n if (meta.stack) info.stack = meta.stack;\n\n this.write(info);\n return this;\n }\n }\n\n this.write(Object.assign({}, this.defaultMeta, {\n [LEVEL]: level,\n [SPLAT]: splat,\n level,\n message: msg\n }));\n\n return this;\n }\n\n /**\n * Pushes data so that it can be picked up by all of our pipe targets.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {mixed} callback - Continues stream processing.\n * @returns {undefined}\n * @private\n */\n _transform(info, enc, callback) {\n if (this.silent) {\n return callback();\n }\n\n // [LEVEL] is only soft guaranteed to be set here since we are a proper\n // stream. It is likely that `info` came in through `.log(info)` or\n // `.info(info)`. If it is not defined, however, define it.\n // This LEVEL symbol is provided by `triple-beam` and also used in:\n // - logform\n // - winston-transport\n // - abstract-winston-transport\n if (!info[LEVEL]) {\n info[LEVEL] = info.level;\n }\n\n // Remark: really not sure what to do here, but this has been reported as\n // very confusing by pre winston@2.0.0 users as quite confusing when using\n // custom levels.\n if (!this.levels[info[LEVEL]] && this.levels[info[LEVEL]] !== 0) {\n // eslint-disable-next-line no-console\n console.error('[winston] Unknown logger level: %s', info[LEVEL]);\n }\n\n // Remark: not sure if we should simply error here.\n if (!this._readableState.pipes) {\n // eslint-disable-next-line no-console\n console.error(\n '[winston] Attempt to write logs with no transports, which can increase memory usage: %j',\n info\n );\n }\n\n // Here we write to the `format` pipe-chain, which on `readable` above will\n // push the formatted `info` Object onto the buffer for this instance. We trap\n // (and re-throw) any errors generated by the user-provided format, but also\n // guarantee that the streams callback is invoked so that we can continue flowing.\n try {\n this.push(this.format.transform(info, this.format.options));\n } finally {\n this._writableState.sync = false;\n // eslint-disable-next-line callback-return\n callback();\n }\n }\n\n /**\n * Delays the 'finish' event until all transport pipe targets have\n * also emitted 'finish' or are already finished.\n * @param {mixed} callback - Continues stream processing.\n */\n _final(callback) {\n const transports = this.transports.slice();\n asyncForEach(\n transports,\n (transport, next) => {\n if (!transport || transport.finished) return setImmediate(next);\n transport.once('finish', next);\n transport.end();\n },\n callback\n );\n }\n\n /**\n * Adds the transport to this logger instance by piping to it.\n * @param {mixed} transport - TODO: add param description.\n * @returns {Logger} - TODO: add return description.\n */\n add(transport) {\n // Support backwards compatibility with all existing `winston < 3.x.x`\n // transports which meet one of two criteria:\n // 1. They inherit from winston.Transport in < 3.x.x which is NOT a stream.\n // 2. They expose a log method which has a length greater than 2 (i.e. more then\n // just `log(info, callback)`.\n const target =\n !isStream(transport) || transport.log.length > 2\n ? new LegacyTransportStream({ transport })\n : transport;\n\n if (!target._writableState || !target._writableState.objectMode) {\n throw new Error(\n 'Transports must WritableStreams in objectMode. Set { objectMode: true }.'\n );\n }\n\n // Listen for the `error` event and the `warn` event on the new Transport.\n this._onEvent('error', target);\n this._onEvent('warn', target);\n this.pipe(target);\n\n if (transport.handleExceptions) {\n this.exceptions.handle();\n }\n\n if (transport.handleRejections) {\n this.rejections.handle();\n }\n\n return this;\n }\n\n /**\n * Removes the transport from this logger instance by unpiping from it.\n * @param {mixed} transport - TODO: add param description.\n * @returns {Logger} - TODO: add return description.\n */\n remove(transport) {\n if (!transport) return this;\n let target = transport;\n if (!isStream(transport) || transport.log.length > 2) {\n target = this.transports.filter(\n match => match.transport === transport\n )[0];\n }\n\n if (target) {\n this.unpipe(target);\n }\n return this;\n }\n\n /**\n * Removes all transports from this logger instance.\n * @returns {Logger} - TODO: add return description.\n */\n clear() {\n this.unpipe();\n return this;\n }\n\n /**\n * Cleans up resources (streams, event listeners) for all transports\n * associated with this instance (if necessary).\n * @returns {Logger} - TODO: add return description.\n */\n close() {\n this.exceptions.unhandle();\n this.rejections.unhandle();\n this.clear();\n this.emit('close');\n return this;\n }\n\n /**\n * Sets the `target` levels specified on this instance.\n * @param {Object} Target levels to use on this instance.\n */\n setLevels() {\n warn.deprecated('setLevels');\n }\n\n /**\n * Queries the all transports for this instance with the specified `options`.\n * This will aggregate each transport's results into one object containing\n * a property per transport.\n * @param {Object} options - Query options for this instance.\n * @param {function} callback - Continuation to respond to when complete.\n */\n query(options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n options = options || {};\n const results = {};\n const queryObject = Object.assign({}, options.query || {});\n\n // Helper function to query a single transport\n function queryTransport(transport, next) {\n if (options.query && typeof transport.formatQuery === 'function') {\n options.query = transport.formatQuery(queryObject);\n }\n\n transport.query(options, (err, res) => {\n if (err) {\n return next(err);\n }\n\n if (typeof transport.formatResults === 'function') {\n res = transport.formatResults(res, options.format);\n }\n\n next(null, res);\n });\n }\n\n // Helper function to accumulate the results from `queryTransport` into\n // the `results`.\n function addResults(transport, next) {\n queryTransport(transport, (err, result) => {\n // queryTransport could potentially invoke the callback multiple times\n // since Transport code can be unpredictable.\n if (next) {\n result = err || result;\n if (result) {\n results[transport.name] = result;\n }\n\n // eslint-disable-next-line callback-return\n next();\n }\n\n next = null;\n });\n }\n\n // Iterate over the transports in parallel setting the appropriate key in\n // the `results`.\n asyncForEach(\n this.transports.filter(transport => !!transport.query),\n addResults,\n () => callback(null, results)\n );\n }\n\n /**\n * Returns a log stream for all transports. Options object is optional.\n * @param{Object} options={} - Stream options for this instance.\n * @returns {Stream} - TODO: add return description.\n */\n stream(options = {}) {\n const out = new Stream();\n const streams = [];\n\n out._streams = streams;\n out.destroy = () => {\n let i = streams.length;\n while (i--) {\n streams[i].destroy();\n }\n };\n\n // Create a list of all transports for this instance.\n this.transports\n .filter(transport => !!transport.stream)\n .forEach(transport => {\n const str = transport.stream(options);\n if (!str) {\n return;\n }\n\n streams.push(str);\n\n str.on('log', log => {\n log.transport = log.transport || [];\n log.transport.push(transport.name);\n out.emit('log', log);\n });\n\n str.on('error', err => {\n err.transport = err.transport || [];\n err.transport.push(transport.name);\n out.emit('error', err);\n });\n });\n\n return out;\n }\n\n /**\n * Returns an object corresponding to a specific timing. When done is called\n * the timer will finish and log the duration. e.g.:\n * @returns {Profile} - TODO: add return description.\n * @example\n * const timer = winston.startTimer()\n * setTimeout(() => {\n * timer.done({\n * message: 'Logging message'\n * });\n * }, 1000);\n */\n startTimer() {\n return new Profiler(this);\n }\n\n /**\n * Tracks the time inbetween subsequent calls to this method with the same\n * `id` parameter. The second call to this method will log the difference in\n * milliseconds along with the message.\n * @param {string} id Unique id of the profiler\n * @returns {Logger} - TODO: add return description.\n */\n profile(id, ...args) {\n const time = Date.now();\n if (this.profilers[id]) {\n const timeEnd = this.profilers[id];\n delete this.profilers[id];\n\n // Attempt to be kind to users if they are still using older APIs.\n if (typeof args[args.length - 2] === 'function') {\n // eslint-disable-next-line no-console\n console.warn(\n 'Callback function no longer supported as of winston@3.0.0'\n );\n args.pop();\n }\n\n // Set the duration property of the metadata\n const info = typeof args[args.length - 1] === 'object' ? args.pop() : {};\n info.level = info.level || 'info';\n info.durationMs = time - timeEnd;\n info.message = info.message || id;\n return this.write(info);\n }\n\n this.profilers[id] = time;\n return this;\n }\n\n /**\n * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n * @returns {undefined}\n * @deprecated\n */\n handleExceptions(...args) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()'\n );\n this.exceptions.handle(...args);\n }\n\n /**\n * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n * @returns {undefined}\n * @deprecated\n */\n unhandleExceptions(...args) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()'\n );\n this.exceptions.unhandle(...args);\n }\n\n /**\n * Throw a more meaningful deprecation notice\n * @throws {Error} - TODO: add throws description.\n */\n cli() {\n throw new Error(\n [\n 'Logger.cli() was removed in winston@3.0.0',\n 'Use a custom winston.formats.cli() instead.',\n 'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'\n ].join('\\n')\n );\n }\n\n /**\n * Bubbles the `event` that occured on the specified `transport` up\n * from this instance.\n * @param {string} event - The event that occured\n * @param {Object} transport - Transport on which the event occured\n * @private\n */\n _onEvent(event, transport) {\n function transportEvent(err) {\n // https://github.com/winstonjs/winston/issues/1364\n if (event === 'error' && !this.transports.includes(transport)) {\n this.add(transport);\n }\n this.emit(event, err, transport);\n }\n\n if (!transport['__winston' + event]) {\n transport['__winston' + event] = transportEvent.bind(this);\n transport.on(event, transport['__winston' + event]);\n }\n }\n\n _addDefaultMeta(msg) {\n if (this.defaultMeta) {\n Object.assign(msg, this.defaultMeta);\n }\n }\n}\n\nfunction getLevelValue(levels, level) {\n const value = levels[level];\n if (!value && value !== 0) {\n return null;\n }\n return value;\n}\n\n/**\n * Represents the current readableState pipe targets for this Logger instance.\n * @type {Array|Object}\n */\nObject.defineProperty(Logger.prototype, 'transports', {\n configurable: false,\n enumerable: true,\n get() {\n const { pipes } = this._readableState;\n return !Array.isArray(pipes) ? [pipes].filter(Boolean) : pipes;\n }\n});\n\nmodule.exports = Logger;\n","/**\n * profiler.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n/**\n * TODO: add class description.\n * @type {Profiler}\n * @private\n */\nclass Profiler {\n /**\n * Constructor function for the Profiler instance used by\n * `Logger.prototype.startTimer`. When done is called the timer will finish\n * and log the duration.\n * @param {!Logger} logger - TODO: add param description.\n * @private\n */\n constructor(logger) {\n const Logger = require('./logger');\n if (typeof logger !== 'object' || Array.isArray(logger) || !(logger instanceof Logger)) {\n throw new Error('Logger is required for profiling');\n } else {\n this.logger = logger;\n this.start = Date.now();\n }\n }\n\n /**\n * Ends the current timer (i.e. Profiler) instance and logs the `msg` along\n * with the duration since creation.\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n done(...args) {\n if (typeof args[args.length - 1] === 'function') {\n // eslint-disable-next-line no-console\n console.warn('Callback function no longer supported as of winston@3.0.0');\n args.pop();\n }\n\n const info = typeof args[args.length - 1] === 'object' ? args.pop() : {};\n info.level = info.level || 'info';\n info.durationMs = (Date.now()) - this.start;\n\n return this.logger.write(info);\n }\n};\n\nmodule.exports = Profiler;\n","/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:rejection');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst RejectionStream = require('./rejection-stream');\n\n/**\n * Object for handling unhandledRejection events.\n * @type {RejectionHandler}\n */\nmodule.exports = class RejectionHandler {\n /**\n * TODO: add contructor description\n * @param {!Logger} logger - TODO: add param description\n */\n constructor(logger) {\n if (!logger) {\n throw new Error('Logger is required to handle rejections');\n }\n\n this.logger = logger;\n this.handlers = new Map();\n }\n\n /**\n * Handles `unhandledRejection` events for the current process by adding any\n * handlers passed in.\n * @returns {undefined}\n */\n handle(...args) {\n args.forEach(arg => {\n if (Array.isArray(arg)) {\n return arg.forEach(handler => this._addHandler(handler));\n }\n\n this._addHandler(arg);\n });\n\n if (!this.catcher) {\n this.catcher = this._unhandledRejection.bind(this);\n process.on('unhandledRejection', this.catcher);\n }\n }\n\n /**\n * Removes any handlers to `unhandledRejection` events for the current\n * process. This does not modify the state of the `this.handlers` set.\n * @returns {undefined}\n */\n unhandle() {\n if (this.catcher) {\n process.removeListener('unhandledRejection', this.catcher);\n this.catcher = false;\n\n Array.from(this.handlers.values()).forEach(wrapper =>\n this.logger.unpipe(wrapper)\n );\n }\n }\n\n /**\n * TODO: add method description\n * @param {Error} err - Error to get information about.\n * @returns {mixed} - TODO: add return description.\n */\n getAllInfo(err) {\n let message = null;\n if (err) {\n message = typeof err === 'string' ? err : err.message;\n }\n\n return {\n error: err,\n // TODO (indexzero): how do we configure this?\n level: 'error',\n message: [\n `unhandledRejection: ${message || '(no error message)'}`,\n err && err.stack || ' No stack trace'\n ].join('\\n'),\n stack: err && err.stack,\n rejection: true,\n date: new Date().toString(),\n process: this.getProcessInfo(),\n os: this.getOsInfo(),\n trace: this.getTrace(err)\n };\n }\n\n /**\n * Gets all relevant process information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getProcessInfo() {\n return {\n pid: process.pid,\n uid: process.getuid ? process.getuid() : null,\n gid: process.getgid ? process.getgid() : null,\n cwd: process.cwd(),\n execPath: process.execPath,\n version: process.version,\n argv: process.argv,\n memoryUsage: process.memoryUsage()\n };\n }\n\n /**\n * Gets all relevant OS information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getOsInfo() {\n return {\n loadavg: os.loadavg(),\n uptime: os.uptime()\n };\n }\n\n /**\n * Gets a stack trace for the specified error.\n * @param {mixed} err - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n */\n getTrace(err) {\n const trace = err ? stackTrace.parse(err) : stackTrace.get();\n return trace.map(site => {\n return {\n column: site.getColumnNumber(),\n file: site.getFileName(),\n function: site.getFunctionName(),\n line: site.getLineNumber(),\n method: site.getMethodName(),\n native: site.isNative()\n };\n });\n }\n\n /**\n * Helper method to add a transport as an exception handler.\n * @param {Transport} handler - The transport to add as an exception handler.\n * @returns {void}\n */\n _addHandler(handler) {\n if (!this.handlers.has(handler)) {\n handler.handleRejections = true;\n const wrapper = new RejectionStream(handler);\n this.handlers.set(handler, wrapper);\n this.logger.pipe(wrapper);\n }\n }\n\n /**\n * Logs all relevant information around the `err` and exits the current\n * process.\n * @param {Error} err - Error to handle\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n _unhandledRejection(err) {\n const info = this.getAllInfo(err);\n const handlers = this._getRejectionHandlers();\n // Calculate if we should exit on this error\n let doExit =\n typeof this.logger.exitOnError === 'function'\n ? this.logger.exitOnError(err)\n : this.logger.exitOnError;\n let timeout;\n\n if (!handlers.length && doExit) {\n // eslint-disable-next-line no-console\n console.warn('winston: exitOnError cannot be true with no rejection handlers.');\n // eslint-disable-next-line no-console\n console.warn('winston: not exiting process.');\n doExit = false;\n }\n\n function gracefulExit() {\n debug('doExit', doExit);\n debug('process._exiting', process._exiting);\n\n if (doExit && !process._exiting) {\n // Remark: Currently ignoring any rejections from transports when\n // catching unhandled rejections.\n if (timeout) {\n clearTimeout(timeout);\n }\n // eslint-disable-next-line no-process-exit\n process.exit(1);\n }\n }\n\n if (!handlers || handlers.length === 0) {\n return process.nextTick(gracefulExit);\n }\n\n // Log to all transports attempting to listen for when they are completed.\n asyncForEach(\n handlers,\n (handler, next) => {\n const done = once(next);\n const transport = handler.transport || handler;\n\n // Debug wrapping so that we can inspect what's going on under the covers.\n function onDone(event) {\n return () => {\n debug(event);\n done();\n };\n }\n\n transport._ending = true;\n transport.once('finish', onDone('finished'));\n transport.once('error', onDone('error'));\n },\n () => doExit && gracefulExit()\n );\n\n this.logger.log(info);\n\n // If exitOnError is true, then only allow the logging of exceptions to\n // take up to `3000ms`.\n if (doExit) {\n timeout = setTimeout(gracefulExit, 3000);\n }\n }\n\n /**\n * Returns the list of transports and exceptionHandlers for this instance.\n * @returns {Array} - List of transports and exceptionHandlers for this\n * instance.\n * @private\n */\n _getRejectionHandlers() {\n // Remark (indexzero): since `logger.transports` returns all of the pipes\n // from the _readableState of the stream we actually get the join of the\n // explicit handlers and the implicit transports with\n // `handleRejections: true`\n return this.logger.transports.filter(wrap => {\n const transport = wrap.transport || wrap;\n return transport.handleRejections;\n });\n }\n};\n","/**\n * rejection-stream.js: TODO: add file header handler.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Writable } = require('readable-stream');\n\n/**\n * TODO: add class description.\n * @type {RejectionStream}\n * @extends {Writable}\n */\nmodule.exports = class RejectionStream extends Writable {\n /**\n * Constructor function for the RejectionStream responsible for wrapping a\n * TransportStream; only allowing writes of `info` objects with\n * `info.rejection` set to true.\n * @param {!TransportStream} transport - Stream to filter to rejections\n */\n constructor(transport) {\n super({ objectMode: true });\n\n if (!transport) {\n throw new Error('RejectionStream requires a TransportStream instance.');\n }\n\n this.handleRejections = true;\n this.transport = transport;\n }\n\n /**\n * Writes the info object to our transport instance if (and only if) the\n * `rejection` property is set on the info.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {mixed} callback - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n _write(info, enc, callback) {\n if (info.rejection) {\n return this.transport.log(info, callback);\n }\n\n callback();\n return true;\n }\n};\n","/**\n * tail-file.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst fs = require('fs');\nconst { StringDecoder } = require('string_decoder');\nconst { Stream } = require('readable-stream');\n\n/**\n * Simple no-op function.\n * @returns {undefined}\n */\nfunction noop() {}\n\n/**\n * TODO: add function description.\n * @param {Object} options - Options for tail.\n * @param {function} iter - Iterator function to execute on every line.\n* `tail -f` a file. Options must include file.\n * @returns {mixed} - TODO: add return description.\n */\nmodule.exports = (options, iter) => {\n const buffer = Buffer.alloc(64 * 1024);\n const decode = new StringDecoder('utf8');\n const stream = new Stream();\n let buff = '';\n let pos = 0;\n let row = 0;\n\n if (options.start === -1) {\n delete options.start;\n }\n\n stream.readable = true;\n stream.destroy = () => {\n stream.destroyed = true;\n stream.emit('end');\n stream.emit('close');\n };\n\n fs.open(options.file, 'a+', '0644', (err, fd) => {\n if (err) {\n if (!iter) {\n stream.emit('error', err);\n } else {\n iter(err);\n }\n stream.destroy();\n return;\n }\n\n (function read() {\n if (stream.destroyed) {\n fs.close(fd, noop);\n return;\n }\n\n return fs.read(fd, buffer, 0, buffer.length, pos, (error, bytes) => {\n if (error) {\n if (!iter) {\n stream.emit('error', error);\n } else {\n iter(error);\n }\n stream.destroy();\n return;\n }\n\n if (!bytes) {\n if (buff) {\n // eslint-disable-next-line eqeqeq\n if (options.start == null || row > options.start) {\n if (!iter) {\n stream.emit('line', buff);\n } else {\n iter(null, buff);\n }\n }\n row++;\n buff = '';\n }\n return setTimeout(read, 1000);\n }\n\n let data = decode.write(buffer.slice(0, bytes));\n if (!iter) {\n stream.emit('data', data);\n }\n\n data = (buff + data).split(/\\n+/);\n\n const l = data.length - 1;\n let i = 0;\n\n for (; i < l; i++) {\n // eslint-disable-next-line eqeqeq\n if (options.start == null || row > options.start) {\n if (!iter) {\n stream.emit('line', data[i]);\n } else {\n iter(null, data[i]);\n }\n }\n row++;\n }\n\n buff = data[l];\n pos += bytes;\n return read();\n });\n }());\n });\n\n if (!iter) {\n return stream;\n }\n\n return stream.destroy;\n};\n","/* eslint-disable no-console */\n/*\n * console.js: Transport for outputting to the console.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst { LEVEL, MESSAGE } = require('triple-beam');\nconst TransportStream = require('winston-transport');\n\n/**\n * Transport for outputting to the console.\n * @type {Console}\n * @extends {TransportStream}\n */\nmodule.exports = class Console extends TransportStream {\n /**\n * Constructor function for the Console transport object responsible for\n * persisting log messages and metadata to a terminal or TTY.\n * @param {!Object} [options={}] - Options for this instance.\n */\n constructor(options = {}) {\n super(options);\n\n // Expose the name of this Transport on the prototype\n this.name = options.name || 'console';\n this.stderrLevels = this._stringArrayToSet(options.stderrLevels);\n this.consoleWarnLevels = this._stringArrayToSet(options.consoleWarnLevels);\n this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n\n this.setMaxListeners(30);\n }\n\n /**\n * Core logging method exposed to Winston.\n * @param {Object} info - TODO: add param description.\n * @param {Function} callback - TODO: add param description.\n * @returns {undefined}\n */\n log(info, callback) {\n setImmediate(() => this.emit('logged', info));\n\n // Remark: what if there is no raw...?\n if (this.stderrLevels[info[LEVEL]]) {\n if (console._stderr) {\n // Node.js maps `process.stderr` to `console._stderr`.\n console._stderr.write(`${info[MESSAGE]}${this.eol}`);\n } else {\n // console.error adds a newline\n console.error(info[MESSAGE]);\n }\n\n if (callback) {\n callback(); // eslint-disable-line callback-return\n }\n return;\n } else if (this.consoleWarnLevels[info[LEVEL]]) {\n if (console._stderr) {\n // Node.js maps `process.stderr` to `console._stderr`.\n // in Node.js console.warn is an alias for console.error\n console._stderr.write(`${info[MESSAGE]}${this.eol}`);\n } else {\n // console.warn adds a newline\n console.warn(info[MESSAGE]);\n }\n\n if (callback) {\n callback(); // eslint-disable-line callback-return\n }\n return;\n }\n\n if (console._stdout) {\n // Node.js maps `process.stdout` to `console._stdout`.\n console._stdout.write(`${info[MESSAGE]}${this.eol}`);\n } else {\n // console.log adds a newline.\n console.log(info[MESSAGE]);\n }\n\n if (callback) {\n callback(); // eslint-disable-line callback-return\n }\n }\n\n /**\n * Returns a Set-like object with strArray's elements as keys (each with the\n * value true).\n * @param {Array} strArray - Array of Set-elements as strings.\n * @param {?string} [errMsg] - Custom error message thrown on invalid input.\n * @returns {Object} - TODO: add return description.\n * @private\n */\n _stringArrayToSet(strArray, errMsg) {\n if (!strArray)\n return {};\n\n errMsg = errMsg || 'Cannot make set from type other than Array of string elements';\n\n if (!Array.isArray(strArray)) {\n throw new Error(errMsg);\n }\n\n return strArray.reduce((set, el) => {\n if (typeof el !== 'string') {\n throw new Error(errMsg);\n }\n set[el] = true;\n\n return set;\n }, {});\n }\n};\n","/* eslint-disable complexity,max-statements */\n/**\n * file.js: Transport for outputting to a local log file.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst asyncSeries = require('async/series');\nconst zlib = require('zlib');\nconst { MESSAGE } = require('triple-beam');\nconst { Stream, PassThrough } = require('readable-stream');\nconst TransportStream = require('winston-transport');\nconst debug = require('@dabh/diagnostics')('winston:file');\nconst os = require('os');\nconst tailFile = require('../tail-file');\n\n/**\n * Transport for outputting to a local log file.\n * @type {File}\n * @extends {TransportStream}\n */\nmodule.exports = class File extends TransportStream {\n /**\n * Constructor function for the File transport object responsible for\n * persisting log messages and metadata to one or more files.\n * @param {Object} options - Options for this instance.\n */\n constructor(options = {}) {\n super(options);\n\n // Expose the name of this Transport on the prototype.\n this.name = options.name || 'file';\n\n // Helper function which throws an `Error` in the event that any of the\n // rest of the arguments is present in `options`.\n function throwIf(target, ...args) {\n args.slice(1).forEach(name => {\n if (options[name]) {\n throw new Error(`Cannot set ${name} and ${target} together`);\n }\n });\n }\n\n // Setup the base stream that always gets piped to to handle buffering.\n this._stream = new PassThrough();\n this._stream.setMaxListeners(30);\n\n // Bind this context for listener methods.\n this._onError = this._onError.bind(this);\n\n if (options.filename || options.dirname) {\n throwIf('filename or dirname', 'stream');\n this._basename = this.filename = options.filename\n ? path.basename(options.filename)\n : 'winston.log';\n\n this.dirname = options.dirname || path.dirname(options.filename);\n this.options = options.options || { flags: 'a' };\n } else if (options.stream) {\n // eslint-disable-next-line no-console\n console.warn('options.stream will be removed in winston@4. Use winston.transports.Stream');\n throwIf('stream', 'filename', 'maxsize');\n this._dest = this._stream.pipe(this._setupStream(options.stream));\n this.dirname = path.dirname(this._dest.path);\n // We need to listen for drain events when write() returns false. This\n // can make node mad at times.\n } else {\n throw new Error('Cannot log to file without filename or stream.');\n }\n\n this.maxsize = options.maxsize || null;\n this.rotationFormat = options.rotationFormat || false;\n this.zippedArchive = options.zippedArchive || false;\n this.maxFiles = options.maxFiles || null;\n this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n this.tailable = options.tailable || false;\n this.lazy = options.lazy || false;\n\n // Internal state variables representing the number of files this instance\n // has created and the current size (in bytes) of the current logfile.\n this._size = 0;\n this._pendingSize = 0;\n this._created = 0;\n this._drain = false;\n this._opening = false;\n this._ending = false;\n this._fileExist = false;\n\n if (this.dirname) this._createLogDirIfNotExist(this.dirname);\n if (!this.lazy) this.open();\n }\n\n finishIfEnding() {\n if (this._ending) {\n if (this._opening) {\n this.once('open', () => {\n this._stream.once('finish', () => this.emit('finish'));\n setImmediate(() => this._stream.end());\n });\n } else {\n this._stream.once('finish', () => this.emit('finish'));\n setImmediate(() => this._stream.end());\n }\n }\n }\n\n /**\n * Core logging method exposed to Winston. Metadata is optional.\n * @param {Object} info - TODO: add param description.\n * @param {Function} callback - TODO: add param description.\n * @returns {undefined}\n */\n log(info, callback = () => { }) {\n // Remark: (jcrugzz) What is necessary about this callback(null, true) now\n // when thinking about 3.x? Should silent be handled in the base\n // TransportStream _write method?\n if (this.silent) {\n callback();\n return true;\n }\n\n\n // Output stream buffer is full and has asked us to wait for the drain event\n if (this._drain) {\n this._stream.once('drain', () => {\n this._drain = false;\n this.log(info, callback);\n });\n return;\n }\n if (this._rotate) {\n this._stream.once('rotate', () => {\n this._rotate = false;\n this.log(info, callback);\n });\n return;\n }\n if (this.lazy) {\n if (!this._fileExist) {\n if (!this._opening) {\n this.open();\n }\n this.once('open', () => {\n this._fileExist = true;\n this.log(info, callback);\n return;\n });\n return;\n }\n if (this._needsNewFile(this._pendingSize)) {\n this._dest.once('close', () => {\n if (!this._opening) {\n this.open();\n }\n this.once('open', () => {\n this.log(info, callback);\n return;\n });\n return;\n });\n return;\n }\n }\n\n // Grab the raw string and append the expected EOL.\n const output = `${info[MESSAGE]}${this.eol}`;\n const bytes = Buffer.byteLength(output);\n\n // After we have written to the PassThrough check to see if we need\n // to rotate to the next file.\n //\n // Remark: This gets called too early and does not depict when data\n // has been actually flushed to disk.\n function logged() {\n this._size += bytes;\n this._pendingSize -= bytes;\n\n debug('logged %s %s', this._size, output);\n this.emit('logged', info);\n\n // Do not attempt to rotate files while rotating\n if (this._rotate) {\n return;\n }\n\n // Do not attempt to rotate files while opening\n if (this._opening) {\n return;\n }\n\n // Check to see if we need to end the stream and create a new one.\n if (!this._needsNewFile()) {\n return;\n }\n if (this.lazy) {\n this._endStream(() => {this.emit('fileclosed');});\n return;\n }\n\n // End the current stream, ensure it flushes and create a new one.\n // This could potentially be optimized to not run a stat call but its\n // the safest way since we are supporting `maxFiles`.\n this._rotate = true;\n this._endStream(() => this._rotateFile());\n }\n\n // Keep track of the pending bytes being written while files are opening\n // in order to properly rotate the PassThrough this._stream when the file\n // eventually does open.\n this._pendingSize += bytes;\n if (this._opening\n && !this.rotatedWhileOpening\n && this._needsNewFile(this._size + this._pendingSize)) {\n this.rotatedWhileOpening = true;\n }\n\n const written = this._stream.write(output, logged.bind(this));\n if (!written) {\n this._drain = true;\n this._stream.once('drain', () => {\n this._drain = false;\n callback();\n });\n } else {\n callback(); // eslint-disable-line callback-return\n }\n\n debug('written', written, this._drain);\n\n this.finishIfEnding();\n\n return written;\n }\n\n /**\n * Query the transport. Options object is optional.\n * @param {Object} options - Loggly-like query options for this instance.\n * @param {function} callback - Continuation to respond to when complete.\n * TODO: Refactor me.\n */\n query(options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n options = normalizeQuery(options);\n const file = path.join(this.dirname, this.filename);\n let buff = '';\n let results = [];\n let row = 0;\n\n const stream = fs.createReadStream(file, {\n encoding: 'utf8'\n });\n\n stream.on('error', err => {\n if (stream.readable) {\n stream.destroy();\n }\n if (!callback) {\n return;\n }\n\n return err.code !== 'ENOENT' ? callback(err) : callback(null, results);\n });\n\n stream.on('data', data => {\n data = (buff + data).split(/\\n+/);\n const l = data.length - 1;\n let i = 0;\n\n for (; i < l; i++) {\n if (!options.start || row >= options.start) {\n add(data[i]);\n }\n row++;\n }\n\n buff = data[l];\n });\n\n stream.on('close', () => {\n if (buff) {\n add(buff, true);\n }\n if (options.order === 'desc') {\n results = results.reverse();\n }\n\n // eslint-disable-next-line callback-return\n if (callback) callback(null, results);\n });\n\n function add(buff, attempt) {\n try {\n const log = JSON.parse(buff);\n if (check(log)) {\n push(log);\n }\n } catch (e) {\n if (!attempt) {\n stream.emit('error', e);\n }\n }\n }\n\n function push(log) {\n if (\n options.rows &&\n results.length >= options.rows &&\n options.order !== 'desc'\n ) {\n if (stream.readable) {\n stream.destroy();\n }\n return;\n }\n\n if (options.fields) {\n log = options.fields.reduce((obj, key) => {\n obj[key] = log[key];\n return obj;\n }, {});\n }\n\n if (options.order === 'desc') {\n if (results.length >= options.rows) {\n results.shift();\n }\n }\n results.push(log);\n }\n\n function check(log) {\n if (!log) {\n return;\n }\n\n if (typeof log !== 'object') {\n return;\n }\n\n const time = new Date(log.timestamp);\n if (\n (options.from && time < options.from) ||\n (options.until && time > options.until) ||\n (options.level && options.level !== log.level)\n ) {\n return;\n }\n\n return true;\n }\n\n function normalizeQuery(options) {\n options = options || {};\n\n // limit\n options.rows = options.rows || options.limit || 10;\n\n // starting row offset\n options.start = options.start || 0;\n\n // now\n options.until = options.until || new Date();\n if (typeof options.until !== 'object') {\n options.until = new Date(options.until);\n }\n\n // now - 24\n options.from = options.from || (options.until - (24 * 60 * 60 * 1000));\n if (typeof options.from !== 'object') {\n options.from = new Date(options.from);\n }\n\n // 'asc' or 'desc'\n options.order = options.order || 'desc';\n\n return options;\n }\n }\n\n /**\n * Returns a log stream for this transport. Options object is optional.\n * @param {Object} options - Stream options for this instance.\n * @returns {Stream} - TODO: add return description.\n * TODO: Refactor me.\n */\n stream(options = {}) {\n const file = path.join(this.dirname, this.filename);\n const stream = new Stream();\n const tail = {\n file,\n start: options.start\n };\n\n stream.destroy = tailFile(tail, (err, line) => {\n if (err) {\n return stream.emit('error', err);\n }\n\n try {\n stream.emit('data', line);\n line = JSON.parse(line);\n stream.emit('log', line);\n } catch (e) {\n stream.emit('error', e);\n }\n });\n\n return stream;\n }\n\n /**\n * Checks to see the filesize of.\n * @returns {undefined}\n */\n open() {\n // If we do not have a filename then we were passed a stream and\n // don't need to keep track of size.\n if (!this.filename) return;\n if (this._opening) return;\n\n this._opening = true;\n\n // Stat the target file to get the size and create the stream.\n this.stat((err, size) => {\n if (err) {\n return this.emit('error', err);\n }\n debug('stat done: %s { size: %s }', this.filename, size);\n this._size = size;\n this._dest = this._createStream(this._stream);\n this._opening = false;\n this.once('open', () => {\n if (this._stream.eventNames().includes('rotate')) {\n this._stream.emit('rotate');\n } else {\n this._rotate = false;\n }\n });\n });\n }\n\n /**\n * Stat the file and assess information in order to create the proper stream.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n */\n stat(callback) {\n const target = this._getFile();\n const fullpath = path.join(this.dirname, target);\n\n fs.stat(fullpath, (err, stat) => {\n if (err && err.code === 'ENOENT') {\n debug('ENOENT ok', fullpath);\n // Update internally tracked filename with the new target name.\n this.filename = target;\n return callback(null, 0);\n }\n\n if (err) {\n debug(`err ${err.code} ${fullpath}`);\n return callback(err);\n }\n\n if (!stat || this._needsNewFile(stat.size)) {\n // If `stats.size` is greater than the `maxsize` for this\n // instance then try again.\n return this._incFile(() => this.stat(callback));\n }\n\n // Once we have figured out what the filename is, set it\n // and return the size.\n this.filename = target;\n callback(null, stat.size);\n });\n }\n\n /**\n * Closes the stream associated with this instance.\n * @param {function} cb - TODO: add param description.\n * @returns {undefined}\n */\n close(cb) {\n if (!this._stream) {\n return;\n }\n\n this._stream.end(() => {\n if (cb) {\n cb(); // eslint-disable-line callback-return\n }\n this.emit('flush');\n this.emit('closed');\n });\n }\n\n /**\n * TODO: add method description.\n * @param {number} size - TODO: add param description.\n * @returns {undefined}\n */\n _needsNewFile(size) {\n size = size || this._size;\n return this.maxsize && size >= this.maxsize;\n }\n\n /**\n * TODO: add method description.\n * @param {Error} err - TODO: add param description.\n * @returns {undefined}\n */\n _onError(err) {\n this.emit('error', err);\n }\n\n /**\n * TODO: add method description.\n * @param {Stream} stream - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n */\n _setupStream(stream) {\n stream.on('error', this._onError);\n\n return stream;\n }\n\n /**\n * TODO: add method description.\n * @param {Stream} stream - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n */\n _cleanupStream(stream) {\n stream.removeListener('error', this._onError);\n stream.destroy();\n return stream;\n }\n\n /**\n * TODO: add method description.\n */\n _rotateFile() {\n this._incFile(() => this.open());\n }\n\n /**\n * Unpipe from the stream that has been marked as full and end it so it\n * flushes to disk.\n *\n * @param {function} callback - Callback for when the current file has closed.\n * @private\n */\n _endStream(callback = () => { }) {\n if (this._dest) {\n this._stream.unpipe(this._dest);\n this._dest.end(() => {\n this._cleanupStream(this._dest);\n callback();\n });\n } else {\n callback(); // eslint-disable-line callback-return\n }\n }\n\n /**\n * Returns the WritableStream for the active file on this instance. If we\n * should gzip the file then a zlib stream is returned.\n *\n * @param {ReadableStream} source –PassThrough to pipe to the file when open.\n * @returns {WritableStream} Stream that writes to disk for the active file.\n */\n _createStream(source) {\n const fullpath = path.join(this.dirname, this.filename);\n\n debug('create stream start', fullpath, this.options);\n const dest = fs.createWriteStream(fullpath, this.options)\n // TODO: What should we do with errors here?\n .on('error', err => debug(err))\n .on('close', () => debug('close', dest.path, dest.bytesWritten))\n .on('open', () => {\n debug('file open ok', fullpath);\n this.emit('open', fullpath);\n source.pipe(dest);\n\n // If rotation occured during the open operation then we immediately\n // start writing to a new PassThrough, begin opening the next file\n // and cleanup the previous source and dest once the source has drained.\n if (this.rotatedWhileOpening) {\n this._stream = new PassThrough();\n this._stream.setMaxListeners(30);\n this._rotateFile();\n this.rotatedWhileOpening = false;\n this._cleanupStream(dest);\n source.end();\n }\n });\n\n debug('create stream ok', fullpath);\n return dest;\n }\n\n /**\n * TODO: add method description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n */\n _incFile(callback) {\n debug('_incFile', this.filename);\n const ext = path.extname(this._basename);\n const basename = path.basename(this._basename, ext);\n const tasks = [];\n\n if (this.zippedArchive) {\n tasks.push(\n function (cb) {\n const num = this._created > 0 && !this.tailable ? this._created : '';\n this._compressFile(\n path.join(this.dirname, `${basename}${num}${ext}`),\n path.join(this.dirname, `${basename}${num}${ext}.gz`),\n cb\n );\n }.bind(this)\n );\n }\n\n tasks.push(\n function (cb) {\n if (!this.tailable) {\n this._created += 1;\n this._checkMaxFilesIncrementing(ext, basename, cb);\n } else {\n this._checkMaxFilesTailable(ext, basename, cb);\n }\n }.bind(this)\n );\n\n asyncSeries(tasks, callback);\n }\n\n /**\n * Gets the next filename to use for this instance in the case that log\n * filesizes are being capped.\n * @returns {string} - TODO: add return description.\n * @private\n */\n _getFile() {\n const ext = path.extname(this._basename);\n const basename = path.basename(this._basename, ext);\n const isRotation = this.rotationFormat\n ? this.rotationFormat()\n : this._created;\n\n // Caveat emptor (indexzero): rotationFormat() was broken by design When\n // combined with max files because the set of files to unlink is never\n // stored.\n return !this.tailable && this._created\n ? `${basename}${isRotation}${ext}`\n : `${basename}${ext}`;\n }\n\n /**\n * Increment the number of files created or checked by this instance.\n * @param {mixed} ext - TODO: add param description.\n * @param {mixed} basename - TODO: add param description.\n * @param {mixed} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\n _checkMaxFilesIncrementing(ext, basename, callback) {\n // Check for maxFiles option and delete file.\n if (!this.maxFiles || this._created < this.maxFiles) {\n return setImmediate(callback);\n }\n\n const oldest = this._created - this.maxFiles;\n const isOldest = oldest !== 0 ? oldest : '';\n const isZipped = this.zippedArchive ? '.gz' : '';\n const filePath = `${basename}${isOldest}${ext}${isZipped}`;\n const target = path.join(this.dirname, filePath);\n\n fs.unlink(target, callback);\n }\n\n /**\n * Roll files forward based on integer, up to maxFiles. e.g. if base if\n * file.log and it becomes oversized, roll to file1.log, and allow file.log\n * to be re-used. If file is oversized again, roll file1.log to file2.log,\n * roll file.log to file1.log, and so on.\n * @param {mixed} ext - TODO: add param description.\n * @param {mixed} basename - TODO: add param description.\n * @param {mixed} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\n _checkMaxFilesTailable(ext, basename, callback) {\n const tasks = [];\n if (!this.maxFiles) {\n return;\n }\n\n // const isZipped = this.zippedArchive ? '.gz' : '';\n const isZipped = this.zippedArchive ? '.gz' : '';\n for (let x = this.maxFiles - 1; x > 1; x--) {\n tasks.push(function (i, cb) {\n let fileName = `${basename}${(i - 1)}${ext}${isZipped}`;\n const tmppath = path.join(this.dirname, fileName);\n\n fs.exists(tmppath, exists => {\n if (!exists) {\n return cb(null);\n }\n\n fileName = `${basename}${i}${ext}${isZipped}`;\n fs.rename(tmppath, path.join(this.dirname, fileName), cb);\n });\n }.bind(this, x));\n }\n\n asyncSeries(tasks, () => {\n fs.rename(\n path.join(this.dirname, `${basename}${ext}${isZipped}`),\n path.join(this.dirname, `${basename}1${ext}${isZipped}`),\n callback\n );\n });\n }\n\n /**\n * Compresses src to dest with gzip and unlinks src\n * @param {string} src - path to source file.\n * @param {string} dest - path to zipped destination file.\n * @param {Function} callback - callback called after file has been compressed.\n * @returns {undefined}\n * @private\n */\n _compressFile(src, dest, callback) {\n fs.access(src, fs.F_OK, (err) => {\n if (err) {\n return callback();\n }\n var gzip = zlib.createGzip();\n var inp = fs.createReadStream(src);\n var out = fs.createWriteStream(dest);\n out.on('finish', () => {\n fs.unlink(src, callback);\n });\n inp.pipe(gzip).pipe(out);\n });\n }\n\n _createLogDirIfNotExist(dirPath) {\n /* eslint-disable no-sync */\n if (!fs.existsSync(dirPath)) {\n fs.mkdirSync(dirPath, { recursive: true });\n }\n /* eslint-enable no-sync */\n }\n};\n","/**\n * http.js: Transport for outputting to a json-rpcserver.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst http = require('http');\nconst https = require('https');\nconst { Stream } = require('readable-stream');\nconst TransportStream = require('winston-transport');\nconst jsonStringify = require('safe-stable-stringify');\n\n/**\n * Transport for outputting to a json-rpc server.\n * @type {Stream}\n * @extends {TransportStream}\n */\nmodule.exports = class Http extends TransportStream {\n /**\n * Constructor function for the Http transport object responsible for\n * persisting log messages and metadata to a terminal or TTY.\n * @param {!Object} [options={}] - Options for this instance.\n */\n // eslint-disable-next-line max-statements\n constructor(options = {}) {\n super(options);\n\n this.options = options;\n this.name = options.name || 'http';\n this.ssl = !!options.ssl;\n this.host = options.host || 'localhost';\n this.port = options.port;\n this.auth = options.auth;\n this.path = options.path || '';\n this.agent = options.agent;\n this.headers = options.headers || {};\n this.headers['content-type'] = 'application/json';\n this.batch = options.batch || false;\n this.batchInterval = options.batchInterval || 5000;\n this.batchCount = options.batchCount || 10;\n this.batchOptions = [];\n this.batchTimeoutID = -1;\n this.batchCallback = {};\n\n if (!this.port) {\n this.port = this.ssl ? 443 : 80;\n }\n }\n\n /**\n * Core logging method exposed to Winston.\n * @param {Object} info - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n */\n log(info, callback) {\n this._request(info, null, null, (err, res) => {\n if (res && res.statusCode !== 200) {\n err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`);\n }\n\n if (err) {\n this.emit('warn', err);\n } else {\n this.emit('logged', info);\n }\n });\n\n // Remark: (jcrugzz) Fire and forget here so requests dont cause buffering\n // and block more requests from happening?\n if (callback) {\n setImmediate(callback);\n }\n }\n\n /**\n * Query the transport. Options object is optional.\n * @param {Object} options - Loggly-like query options for this instance.\n * @param {function} callback - Continuation to respond to when complete.\n * @returns {undefined}\n */\n query(options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n options = {\n method: 'query',\n params: this.normalizeQuery(options)\n };\n\n const auth = options.params.auth || null;\n delete options.params.auth;\n\n const path = options.params.path || null;\n delete options.params.path;\n\n this._request(options, auth, path, (err, res, body) => {\n if (res && res.statusCode !== 200) {\n err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`);\n }\n\n if (err) {\n return callback(err);\n }\n\n if (typeof body === 'string') {\n try {\n body = JSON.parse(body);\n } catch (e) {\n return callback(e);\n }\n }\n\n callback(null, body);\n });\n }\n\n /**\n * Returns a log stream for this transport. Options object is optional.\n * @param {Object} options - Stream options for this instance.\n * @returns {Stream} - TODO: add return description\n */\n stream(options = {}) {\n const stream = new Stream();\n options = {\n method: 'stream',\n params: options\n };\n\n const path = options.params.path || null;\n delete options.params.path;\n\n const auth = options.params.auth || null;\n delete options.params.auth;\n\n let buff = '';\n const req = this._request(options, auth, path);\n\n stream.destroy = () => req.destroy();\n req.on('data', data => {\n data = (buff + data).split(/\\n+/);\n const l = data.length - 1;\n\n let i = 0;\n for (; i < l; i++) {\n try {\n stream.emit('log', JSON.parse(data[i]));\n } catch (e) {\n stream.emit('error', e);\n }\n }\n\n buff = data[l];\n });\n req.on('error', err => stream.emit('error', err));\n\n return stream;\n }\n\n /**\n * Make a request to a winstond server or any http server which can\n * handle json-rpc.\n * @param {function} options - Options to sent the request.\n * @param {Object?} auth - authentication options\n * @param {string} path - request path\n * @param {function} callback - Continuation to respond to when complete.\n */\n _request(options, auth, path, callback) {\n options = options || {};\n\n auth = auth || this.auth;\n path = path || this.path || '';\n\n if (this.batch) {\n this._doBatch(options, callback, auth, path);\n } else {\n this._doRequest(options, callback, auth, path);\n }\n }\n\n /**\n * Send or memorize the options according to batch configuration\n * @param {function} options - Options to sent the request.\n * @param {function} callback - Continuation to respond to when complete.\n * @param {Object?} auth - authentication options\n * @param {string} path - request path\n */\n _doBatch(options, callback, auth, path) {\n this.batchOptions.push(options);\n if (this.batchOptions.length === 1) {\n // First message stored, it's time to start the timeout!\n const me = this;\n this.batchCallback = callback;\n this.batchTimeoutID = setTimeout(function () {\n // timeout is reached, send all messages to endpoint\n me.batchTimeoutID = -1;\n me._doBatchRequest(me.batchCallback, auth, path);\n }, this.batchInterval);\n }\n if (this.batchOptions.length === this.batchCount) {\n // max batch count is reached, send all messages to endpoint\n this._doBatchRequest(this.batchCallback, auth, path);\n }\n }\n\n /**\n * Initiate a request with the memorized batch options, stop the batch timeout\n * @param {function} callback - Continuation to respond to when complete.\n * @param {Object?} auth - authentication options\n * @param {string} path - request path\n */\n _doBatchRequest(callback, auth, path) {\n if (this.batchTimeoutID > 0) {\n clearTimeout(this.batchTimeoutID);\n this.batchTimeoutID = -1;\n }\n const batchOptionsCopy = this.batchOptions.slice();\n this.batchOptions = [];\n this._doRequest(batchOptionsCopy, callback, auth, path);\n }\n\n /**\n * Make a request to a winstond server or any http server which can\n * handle json-rpc.\n * @param {function} options - Options to sent the request.\n * @param {function} callback - Continuation to respond to when complete.\n * @param {Object?} auth - authentication options\n * @param {string} path - request path\n */\n _doRequest(options, callback, auth, path) {\n // Prepare options for outgoing HTTP request\n const headers = Object.assign({}, this.headers);\n if (auth && auth.bearer) {\n headers.Authorization = `Bearer ${auth.bearer}`;\n }\n const req = (this.ssl ? https : http).request({\n ...this.options,\n method: 'POST',\n host: this.host,\n port: this.port,\n path: `/${path.replace(/^\\//, '')}`,\n headers: headers,\n auth: (auth && auth.username && auth.password) ? (`${auth.username}:${auth.password}`) : '',\n agent: this.agent\n });\n\n req.on('error', callback);\n req.on('response', res => (\n res.on('end', () => callback(null, res)).resume()\n ));\n req.end(Buffer.from(jsonStringify(options, this.options.replacer), 'utf8'));\n }\n};\n","/**\n * transports.js: Set of all transports Winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * TODO: add property description.\n * @type {Console}\n */\nObject.defineProperty(exports, 'Console', {\n configurable: true,\n enumerable: true,\n get() {\n return require('./console');\n }\n});\n\n/**\n * TODO: add property description.\n * @type {File}\n */\nObject.defineProperty(exports, 'File', {\n configurable: true,\n enumerable: true,\n get() {\n return require('./file');\n }\n});\n\n/**\n * TODO: add property description.\n * @type {Http}\n */\nObject.defineProperty(exports, 'Http', {\n configurable: true,\n enumerable: true,\n get() {\n return require('./http');\n }\n});\n\n/**\n * TODO: add property description.\n * @type {Stream}\n */\nObject.defineProperty(exports, 'Stream', {\n configurable: true,\n enumerable: true,\n get() {\n return require('./stream');\n }\n});\n","/**\n * stream.js: Transport for outputting to any arbitrary stream.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst isStream = require('is-stream');\nconst { MESSAGE } = require('triple-beam');\nconst os = require('os');\nconst TransportStream = require('winston-transport');\n\n/**\n * Transport for outputting to any arbitrary stream.\n * @type {Stream}\n * @extends {TransportStream}\n */\nmodule.exports = class Stream extends TransportStream {\n /**\n * Constructor function for the Console transport object responsible for\n * persisting log messages and metadata to a terminal or TTY.\n * @param {!Object} [options={}] - Options for this instance.\n */\n constructor(options = {}) {\n super(options);\n\n if (!options.stream || !isStream(options.stream)) {\n throw new Error('options.stream is required.');\n }\n\n // We need to listen for drain events when write() returns false. This can\n // make node mad at times.\n this._stream = options.stream;\n this._stream.setMaxListeners(Infinity);\n this.isObjectMode = options.stream._writableState.objectMode;\n this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n }\n\n /**\n * Core logging method exposed to Winston.\n * @param {Object} info - TODO: add param description.\n * @param {Function} callback - TODO: add param description.\n * @returns {undefined}\n */\n log(info, callback) {\n setImmediate(() => this.emit('logged', info));\n if (this.isObjectMode) {\n this._stream.write(info);\n if (callback) {\n callback(); // eslint-disable-line callback-return\n }\n return;\n }\n\n this._stream.write(`${info[MESSAGE]}${this.eol}`);\n if (callback) {\n callback(); // eslint-disable-line callback-return\n }\n return;\n }\n};\n","'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n var iterator;\n if (iterable && typeof iterable.next === 'function') {\n iterator = iterable;\n } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n var readable = new Readable(_objectSpread({\n objectMode: true\n }, opts));\n // Reading boolean to protect against _read\n // being called before last iteration completion.\n var reading = false;\n readable._read = function () {\n if (!reading) {\n reading = true;\n next();\n }\n };\n function next() {\n return _next2.apply(this, arguments);\n }\n function _next2() {\n _next2 = _asyncToGenerator(function* () {\n try {\n var _yield$iterator$next = yield iterator.next(),\n value = _yield$iterator$next.value,\n done = _yield$iterator$next.done;\n if (done) {\n readable.push(null);\n } else if (readable.push(yield value)) {\n next();\n } else {\n reading = false;\n }\n } catch (err) {\n readable.destroy(err);\n }\n });\n return _next2.apply(this, arguments);\n }\n return readable;\n}\nmodule.exports = from;\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('stream');\n","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream.Readable;\n Object.assign(module.exports, Stream);\n module.exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n exports.finished = require('./lib/internal/streams/end-of-stream.js');\n exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"buffer\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"dns\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"events\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"fs\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"http\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"http2\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"https\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"net\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"os\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"path\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"process\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"stream\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"string_decoder\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"tls\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"tty\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"url\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"util\");","module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"zlib\");","// GENERATED FILE. DO NOT EDIT.\nvar Long = (function(exports) {\n \"use strict\";\n \n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.default = void 0;\n \n /**\n * @license\n * Copyright 2009 The Closure Library Authors\n * Copyright 2020 Daniel Wirtz / The long.js Authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n */\n // WebAssembly optimizations to do native i64 multiplication and divide\n var wasm = null;\n \n try {\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11])), {}).exports;\n } catch (e) {// no wasm support :(\n }\n /**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\n \n \n function Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n \n this.high = high | 0;\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n \n this.unsigned = !!unsigned;\n } // The internal representation of a long is the two given signed, 32-bit values.\n // We use 32-bit pieces because these are the size of integers on which\n // Javascript performs bit-operations. For operations like addition and\n // multiplication, we split each number into 16 bit pieces, which can easily be\n // multiplied within Javascript's floating-point representation without overflow\n // or change in sign.\n //\n // In the algorithms below, we frequently reduce the negative case to the\n // positive case by negating the input(s) and then post-processing the result.\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n // a positive number, it overflows back into a negative). Not handling this\n // case would often result in infinite recursion.\n //\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n // methods on which they depend.\n \n /**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\n \n \n Long.prototype.__isLong__;\n Object.defineProperty(Long.prototype, \"__isLong__\", {\n value: true\n });\n /**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\n \n function isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n }\n /**\n * @function\n * @param {*} value number\n * @returns {number}\n * @inner\n */\n \n \n function ctz32(value) {\n var c = Math.clz32(value & -value);\n return value ? 31 - c : c;\n }\n /**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\n \n \n Long.isLong = isLong;\n /**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\n \n var INT_CACHE = {};\n /**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\n \n var UINT_CACHE = {};\n /**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n \n if (unsigned) {\n value >>>= 0;\n \n if (cache = 0 <= value && value < 256) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n \n obj = fromBits(value, 0, true);\n if (cache) UINT_CACHE[value] = obj;\n return obj;\n } else {\n value |= 0;\n \n if (cache = -128 <= value && value < 128) {\n cachedObj = INT_CACHE[value];\n if (cachedObj) return cachedObj;\n }\n \n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache) INT_CACHE[value] = obj;\n return obj;\n }\n }\n /**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromInt = fromInt;\n /**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromNumber(value, unsigned) {\n if (isNaN(value)) return unsigned ? UZERO : ZERO;\n \n if (unsigned) {\n if (value < 0) return UZERO;\n if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n } else {\n if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;\n }\n \n if (value < 0) return fromNumber(-value, unsigned).neg();\n return fromBits(value % TWO_PWR_32_DBL | 0, value / TWO_PWR_32_DBL | 0, unsigned);\n }\n /**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromNumber = fromNumber;\n /**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n }\n /**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromBits = fromBits;\n /**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\n \n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n \n /**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\n \n function fromString(str, unsigned, radix) {\n if (str.length === 0) throw Error('empty string');\n \n if (typeof unsigned === 'number') {\n // For goog.math.long compatibility\n radix = unsigned;\n unsigned = false;\n } else {\n unsigned = !!unsigned;\n }\n \n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\") return unsigned ? UZERO : ZERO;\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError('radix');\n var p;\n if ((p = str.indexOf('-')) > 0) throw Error('interior hyphen');else if (p === 0) {\n return fromString(str.substring(1), unsigned, radix).neg();\n } // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n \n var radixToPower = fromNumber(pow_dbl(radix, 8));\n var result = ZERO;\n \n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i),\n value = parseInt(str.substring(i, i + size), radix);\n \n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = result.mul(power).add(fromNumber(value));\n } else {\n result = result.mul(radixToPower);\n result = result.add(fromNumber(value));\n }\n }\n \n result.unsigned = unsigned;\n return result;\n }\n /**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\n \n \n Long.fromString = fromString;\n /**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\n \n function fromValue(val, unsigned) {\n if (typeof val === 'number') return fromNumber(val, unsigned);\n if (typeof val === 'string') return fromString(val, unsigned); // Throws for non-objects, converts non-instanceof Long:\n \n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\n }\n /**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\n \n \n Long.fromValue = fromValue; // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n // no runtime penalty for these.\n \n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_16_DBL = 1 << 16;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_24_DBL = 1 << 24;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n /**\n * @type {number}\n * @const\n * @inner\n */\n \n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n /**\n * @type {!Long}\n * @const\n * @inner\n */\n \n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n /**\n * @type {!Long}\n * @inner\n */\n \n var ZERO = fromInt(0);\n /**\n * Signed zero.\n * @type {!Long}\n */\n \n Long.ZERO = ZERO;\n /**\n * @type {!Long}\n * @inner\n */\n \n var UZERO = fromInt(0, true);\n /**\n * Unsigned zero.\n * @type {!Long}\n */\n \n Long.UZERO = UZERO;\n /**\n * @type {!Long}\n * @inner\n */\n \n var ONE = fromInt(1);\n /**\n * Signed one.\n * @type {!Long}\n */\n \n Long.ONE = ONE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var UONE = fromInt(1, true);\n /**\n * Unsigned one.\n * @type {!Long}\n */\n \n Long.UONE = UONE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var NEG_ONE = fromInt(-1);\n /**\n * Signed negative one.\n * @type {!Long}\n */\n \n Long.NEG_ONE = NEG_ONE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false);\n /**\n * Maximum signed value.\n * @type {!Long}\n */\n \n Long.MAX_VALUE = MAX_VALUE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true);\n /**\n * Maximum unsigned value.\n * @type {!Long}\n */\n \n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n /**\n * @type {!Long}\n * @inner\n */\n \n var MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n /**\n * Minimum signed value.\n * @type {!Long}\n */\n \n Long.MIN_VALUE = MIN_VALUE;\n /**\n * @alias Long.prototype\n * @inner\n */\n \n var LongPrototype = Long.prototype;\n /**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\n \n LongPrototype.toInt = function toInt() {\n return this.unsigned ? this.low >>> 0 : this.low;\n };\n /**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\n \n \n LongPrototype.toNumber = function toNumber() {\n if (this.unsigned) return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n };\n /**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\n \n \n LongPrototype.toString = function toString(radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix) throw RangeError('radix');\n if (this.isZero()) return '0';\n \n if (this.isNegative()) {\n // Unsigned Longs are never negative\n if (this.eq(MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix),\n div = this.div(radixLong),\n rem1 = div.mul(radixLong).sub(this);\n return div.toString(radix) + rem1.toInt().toString(radix);\n } else return '-' + this.neg().toString(radix);\n } // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n \n \n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n rem = this;\n var result = '';\n \n while (true) {\n var remDiv = rem.div(radixToPower),\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n digits = intval.toString(radix);\n rem = remDiv;\n if (rem.isZero()) return digits + result;else {\n while (digits.length < 6) digits = '0' + digits;\n \n result = '' + digits + result;\n }\n }\n };\n /**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\n \n \n LongPrototype.getHighBits = function getHighBits() {\n return this.high;\n };\n /**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\n \n \n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n return this.high >>> 0;\n };\n /**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\n \n \n LongPrototype.getLowBits = function getLowBits() {\n return this.low;\n };\n /**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\n \n \n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n return this.low >>> 0;\n };\n /**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\n \n \n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n if (this.isNegative()) // Unsigned Longs are never negative\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n var val = this.high != 0 ? this.high : this.low;\n \n for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break;\n \n return this.high != 0 ? bit + 33 : bit + 1;\n };\n /**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isZero = function isZero() {\n return this.high === 0 && this.low === 0;\n };\n /**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\n \n \n LongPrototype.eqz = LongPrototype.isZero;\n /**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\n \n LongPrototype.isNegative = function isNegative() {\n return !this.unsigned && this.high < 0;\n };\n /**\n * Tests if this Long's value is positive or zero.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isPositive = function isPositive() {\n return this.unsigned || this.high >= 0;\n };\n /**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isOdd = function isOdd() {\n return (this.low & 1) === 1;\n };\n /**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\n \n \n LongPrototype.isEven = function isEven() {\n return (this.low & 1) === 0;\n };\n /**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.equals = function equals(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) return false;\n return this.high === other.high && this.low === other.low;\n };\n /**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.eq = LongPrototype.equals;\n /**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.notEquals = function notEquals(other) {\n return !this.eq(\n /* validates */\n other);\n };\n /**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.neq = LongPrototype.notEquals;\n /**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.ne = LongPrototype.notEquals;\n /**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.lessThan = function lessThan(other) {\n return this.comp(\n /* validates */\n other) < 0;\n };\n /**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.lt = LongPrototype.lessThan;\n /**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n return this.comp(\n /* validates */\n other) <= 0;\n };\n /**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.lte = LongPrototype.lessThanOrEqual;\n /**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.le = LongPrototype.lessThanOrEqual;\n /**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.greaterThan = function greaterThan(other) {\n return this.comp(\n /* validates */\n other) > 0;\n };\n /**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.gt = LongPrototype.greaterThan;\n /**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n return this.comp(\n /* validates */\n other) >= 0;\n };\n /**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n \n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\n /**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n \n LongPrototype.ge = LongPrototype.greaterThanOrEqual;\n /**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\n \n LongPrototype.compare = function compare(other) {\n if (!isLong(other)) other = fromValue(other);\n if (this.eq(other)) return 0;\n var thisNeg = this.isNegative(),\n otherNeg = other.isNegative();\n if (thisNeg && !otherNeg) return -1;\n if (!thisNeg && otherNeg) return 1; // At this point the sign bits are the same\n \n if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; // Both are positive if at least one is unsigned\n \n return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1;\n };\n /**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\n \n \n LongPrototype.comp = LongPrototype.compare;\n /**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\n \n LongPrototype.negate = function negate() {\n if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;\n return this.not().add(ONE);\n };\n /**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\n \n \n LongPrototype.neg = LongPrototype.negate;\n /**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} addend Addend\n * @returns {!Long} Sum\n */\n \n LongPrototype.add = function add(addend) {\n if (!isLong(addend)) addend = fromValue(addend); // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n \n var a48 = this.high >>> 16;\n var a32 = this.high & 0xFFFF;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xFFFF;\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xFFFF;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xFFFF;\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);\n };\n /**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\n \n \n LongPrototype.subtract = function subtract(subtrahend) {\n if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend);\n return this.add(subtrahend.neg());\n };\n /**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\n \n \n LongPrototype.sub = LongPrototype.subtract;\n /**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\n \n LongPrototype.multiply = function multiply(multiplier) {\n if (this.isZero()) return this;\n if (!isLong(multiplier)) multiplier = fromValue(multiplier); // use wasm support if present\n \n if (wasm) {\n var low = wasm[\"mul\"](this.low, this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n \n if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;\n if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;\n if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;\n \n if (this.isNegative()) {\n if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());else return this.neg().mul(multiplier).neg();\n } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); // If both longs are small, use float multiplication\n \n \n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n \n var a48 = this.high >>> 16;\n var a32 = this.high & 0xFFFF;\n var a16 = this.low >>> 16;\n var a00 = this.low & 0xFFFF;\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xFFFF;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xFFFF;\n var c48 = 0,\n c32 = 0,\n c16 = 0,\n c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned);\n };\n /**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\n \n \n LongPrototype.mul = LongPrototype.multiply;\n /**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\n \n LongPrototype.divide = function divide(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor);\n if (divisor.isZero()) throw Error('division by zero'); // use wasm support if present\n \n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (!this.unsigned && this.high === -0x80000000 && divisor.low === -1 && divisor.high === -1) {\n // be consistent with non-wasm code path\n return this;\n }\n \n var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(this.low, this.high, divisor.low, divisor.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n \n if (this.isZero()) return this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n \n if (!this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (this.eq(MIN_VALUE)) {\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (divisor.eq(MIN_VALUE)) return ONE;else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = this.shr(1);\n approx = halfThis.div(divisor).shl(1);\n \n if (approx.eq(ZERO)) {\n return divisor.isNegative() ? ONE : NEG_ONE;\n } else {\n rem = this.sub(divisor.mul(approx));\n res = approx.add(rem.div(divisor));\n return res;\n }\n }\n } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;\n \n if (this.isNegative()) {\n if (divisor.isNegative()) return this.neg().div(divisor.neg());\n return this.neg().div(divisor).neg();\n } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n \n res = ZERO;\n } else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned) divisor = divisor.toUnsigned();\n if (divisor.gt(this)) return UZERO;\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n } // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n \n \n rem = this;\n \n while (rem.gte(divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n \n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48),\n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx),\n approxRem = approxRes.mul(divisor);\n \n while (approxRem.isNegative() || approxRem.gt(rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, this.unsigned);\n approxRem = approxRes.mul(divisor);\n } // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n \n \n if (approxRes.isZero()) approxRes = ONE;\n res = res.add(approxRes);\n rem = rem.sub(approxRem);\n }\n \n return res;\n };\n /**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\n \n \n LongPrototype.div = LongPrototype.divide;\n /**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n \n LongPrototype.modulo = function modulo(divisor) {\n if (!isLong(divisor)) divisor = fromValue(divisor); // use wasm support if present\n \n if (wasm) {\n var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(this.low, this.high, divisor.low, divisor.high);\n return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n }\n \n return this.sub(this.div(divisor).mul(divisor));\n };\n /**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n \n \n LongPrototype.mod = LongPrototype.modulo;\n /**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n \n LongPrototype.rem = LongPrototype.modulo;\n /**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\n \n LongPrototype.not = function not() {\n return fromBits(~this.low, ~this.high, this.unsigned);\n };\n /**\n * Returns count leading zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\n \n \n LongPrototype.countLeadingZeros = function countLeadingZeros() {\n return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n };\n /**\n * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\n \n \n LongPrototype.clz = LongPrototype.countLeadingZeros;\n /**\n * Returns count trailing zeros of this Long.\n * @this {!Long}\n * @returns {!number}\n */\n \n LongPrototype.countTrailingZeros = function countTrailingZeros() {\n return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n };\n /**\n * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n * @function\n * @param {!Long}\n * @returns {!number}\n */\n \n \n LongPrototype.ctz = LongPrototype.countTrailingZeros;\n /**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\n \n LongPrototype.and = function and(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\n };\n /**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\n \n \n LongPrototype.or = function or(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\n };\n /**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\n \n \n LongPrototype.xor = function xor(other) {\n if (!isLong(other)) other = fromValue(other);\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\n };\n /**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shiftLeft = function shiftLeft(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;else if (numBits < 32) return fromBits(this.low << numBits, this.high << numBits | this.low >>> 32 - numBits, this.unsigned);else return fromBits(0, this.low << numBits - 32, this.unsigned);\n };\n /**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shl = LongPrototype.shiftLeft;\n /**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n LongPrototype.shiftRight = function shiftRight(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;else if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >> numBits, this.unsigned);else return fromBits(this.high >> numBits - 32, this.high >= 0 ? 0 : -1, this.unsigned);\n };\n /**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shr = LongPrototype.shiftRight;\n /**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits < 32) return fromBits(this.low >>> numBits | this.high << 32 - numBits, this.high >>> numBits, this.unsigned);\n if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n return fromBits(this.high >>> numBits - 32, 0, this.unsigned);\n };\n /**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n \n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\n /**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n \n LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n /**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n LongPrototype.rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n \n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(this.low << numBits | this.high >>> b, this.high << numBits | this.low >>> b, this.unsigned);\n }\n \n numBits -= 32;\n b = 32 - numBits;\n return fromBits(this.high << numBits | this.low >>> b, this.low << numBits | this.high >>> b, this.unsigned);\n };\n /**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n \n LongPrototype.rotl = LongPrototype.rotateLeft;\n /**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n LongPrototype.rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits)) numBits = numBits.toInt();\n if ((numBits &= 63) === 0) return this;\n if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n \n if (numBits < 32) {\n b = 32 - numBits;\n return fromBits(this.high << b | this.low >>> numBits, this.low << b | this.high >>> numBits, this.unsigned);\n }\n \n numBits -= 32;\n b = 32 - numBits;\n return fromBits(this.low << b | this.high >>> numBits, this.high << b | this.low >>> numBits, this.unsigned);\n };\n /**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n \n \n LongPrototype.rotr = LongPrototype.rotateRight;\n /**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\n \n LongPrototype.toSigned = function toSigned() {\n if (!this.unsigned) return this;\n return fromBits(this.low, this.high, false);\n };\n /**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\n \n \n LongPrototype.toUnsigned = function toUnsigned() {\n if (this.unsigned) return this;\n return fromBits(this.low, this.high, true);\n };\n /**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.} Byte representation\n */\n \n \n LongPrototype.toBytes = function toBytes(le) {\n return le ? this.toBytesLE() : this.toBytesBE();\n };\n /**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Little endian byte representation\n */\n \n \n LongPrototype.toBytesLE = function toBytesLE() {\n var hi = this.high,\n lo = this.low;\n return [lo & 0xff, lo >>> 8 & 0xff, lo >>> 16 & 0xff, lo >>> 24, hi & 0xff, hi >>> 8 & 0xff, hi >>> 16 & 0xff, hi >>> 24];\n };\n /**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Big endian byte representation\n */\n \n \n LongPrototype.toBytesBE = function toBytesBE() {\n var hi = this.high,\n lo = this.low;\n return [hi >>> 24, hi >>> 16 & 0xff, hi >>> 8 & 0xff, hi & 0xff, lo >>> 24, lo >>> 16 & 0xff, lo >>> 8 & 0xff, lo & 0xff];\n };\n /**\n * Creates a Long from its byte representation.\n * @param {!Array.} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\n \n \n Long.fromBytes = function fromBytes(bytes, unsigned, le) {\n return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned);\n };\n /**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\n \n \n Long.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n return new Long(bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24, bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24, unsigned);\n };\n /**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\n \n \n Long.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n return new Long(bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7], bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], unsigned);\n };\n \n var _default = Long;\n exports.default = _default;\n return \"default\" in exports ? exports.default : exports;\n})({});\nif (typeof define === 'function' && define.amd) define([], function() { return Long; });\nelse if (typeof module === 'object' && typeof exports === 'object') module.exports = Long;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = new URL('.', import.meta.url).pathname.slice(import.meta.url.match(/^file:\\/\\/\\/\\w:/) ? 1 : 0, -1) + \"/\";","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","const __WEBPACK_NAMESPACE_OBJECT__ = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"node:process\");","const __WEBPACK_NAMESPACE_OBJECT__ = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"node:os\");","const __WEBPACK_NAMESPACE_OBJECT__ = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"node:tty\");","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","import { createLogger, format, transports } from \"winston\";\nimport chalk from \"chalk\";\nconst customSimpleFormat = (colorizeText) => format.printf(({ level, label, timestamp, message }) => {\n const formattedLevel = formatLevel(level);\n return `${colorizeText(`[${label}]`, chalk.green)} ${timestamp} ${colorizeText(formattedLevel, getLevelColor(level))} ${message}`;\n});\n// Helper function to format log levels\nconst formatLevel = (level) => {\n switch (level) {\n case \"info\":\n return \"INF\";\n case \"warn\":\n return \"WRN\";\n case \"error\":\n return \"ERR\";\n case \"debug\":\n return \"DEBUG\";\n default:\n return level.toUpperCase();\n }\n};\n// Helper function to get color based on log level\nconst getLevelColor = (level) => {\n switch (level) {\n case \"info\":\n return chalk.green;\n case \"warn\":\n return chalk.yellow;\n case \"error\":\n return chalk.red;\n case \"debug\":\n return chalk.blue;\n default:\n return chalk.white;\n }\n};\n// Initialize logger function\nexport const initLogger = () => {\n const colorizeText = (text, color) => color(text); // Default color for level\n return createLogger({\n format: format.combine(\n // format.errors({ stack: true }),\n format.timestamp({ format: \"YYYY-MM-DD HH:mm:ss\" }), format.label({ label: \"ts-grpc-hmac\" }), customSimpleFormat(colorizeText)),\n transports: [new transports.Console()]\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = __WEBPACK_EXTERNAL_createRequire(import.meta.url)(\"crypto\");","import { status, StatusBuilder } from \"@grpc/grpc-js\";\nexport const ErrInvalidHmacKeyID = new StatusBuilder()\n .withCode(status.UNAUTHENTICATED)\n .withDetails(\"Invalid x-hmac-key-id\")\n .build();\nexport const ErrInvalidHmacSignature = new StatusBuilder()\n .withCode(status.UNAUTHENTICATED)\n .withDetails(\"Mismatched x-hmac-signature\")\n .build();\nexport const ErrMissingHmacSignature = new StatusBuilder()\n .withCode(status.UNAUTHENTICATED)\n .withDetails(\"Missing x-hmac-signature\")\n .build();\nexport const ErrMissingMetadata = new StatusBuilder()\n .withCode(status.UNAUTHENTICATED)\n .withDetails(\"Missing metadata\")\n .build();\nexport const ErrInternal = new StatusBuilder().withCode(status.INTERNAL).withDetails(\"Internal error\").build();\nexport const ErrInvalidMetadata = new StatusBuilder()\n .withCode(status.UNAUTHENTICATED)\n .withDetails(\"Invalid metadata\")\n .build();\nexport const ErrUnauthenticated = new StatusBuilder()\n .withCode(status.UNAUTHENTICATED)\n .withDetails(\"Unauthenticated\")\n .build();\n","// Check if object is empty\nexport const isEmptyObject = (obj) => {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n};\n","import { initLogger } from \"../logger\";\nimport { Buffer } from \"buffer\";\nimport { createHmac, timingSafeEqual } from \"crypto\";\nimport { ErrInternal, ErrInvalidHmacKeyID, ErrInvalidHmacSignature } from \"./status\";\nimport { isEmptyObject } from \"../util\";\nconst log = initLogger();\n/**\n * HMAC class for generating and verifying HMAC signatures.\n */\nexport class HMAC {\n constructor() { }\n /**\n * Builds a message string representation of the request and method.\n * @param req - The request object.\n * @param method - The method name.\n * @returns A tuple containing the message string from the request and method concatenation with semicolon and an optional error.\n */\n buildMessage = (req, method) => {\n const methodKey = \"method=\";\n const requestKey = \"request=\";\n // If no request is provided, use only the method name as the message\n if (!req) {\n console.warn(\"No request provided, using only method name as message\");\n return [methodKey + method, undefined];\n }\n let requestString;\n // Convert the request object to a string representation\n if (typeof req === \"string\") {\n requestString = req;\n }\n else if (typeof req === \"object\") {\n requestString = isEmptyObject(req) ? \"\" : JSON.stringify(req, null, 0);\n }\n else {\n return [\"\", new Error(\"Invalid request type\")];\n }\n // If the request string is empty, log a warning and use only the method name as the message\n if (requestString.length === 0) {\n console.warn(\"Empty request, using only method name as message\");\n return [methodKey + method, undefined];\n }\n // Construct the message string with the request and method\n const message = `${requestKey}${requestString};${methodKey}${method}`;\n return [message, undefined];\n };\n /**\n * Generates an HMAC signature for the given message and secret key.\n * @param secretKey - The secret key used for generating the HMAC.\n * @param message - The message to generate the signature for.\n * @returns A tuple containing the HMAC signature and an optional error.\n */ generateSignature = (secretKey, message) => {\n log.debug(`generating signature for message: ${message}`);\n const mac = createHmac(\"sha512-256\", secretKey);\n mac.update(message);\n const digest = mac.digest(\"base64\");\n log.debug(`signature generated: ${digest}`);\n return [digest, undefined];\n };\n /**\n * Verifies the HMAC signature against the provided message and key ID.\n * @param getSecret - A function to retrieve the secret key based on the key ID.\n * @returns A function that takes the message, key ID, and signature, and returns a Promise resolving to an error or undefined.\n */\n verifySignature = (getSecret) => (message, keyId, signature) => {\n try {\n log.debug(`verifying signature for message: ${message}`);\n const secret = getSecret(keyId);\n log.debug(\"secret: \", secret);\n if (secret === undefined) {\n log.error(\"error: invalid key id\");\n return new Error(`${ErrInvalidHmacKeyID.code}: ${ErrInvalidHmacKeyID.details}`);\n }\n const [expectedSignature, err] = this.generateSignature(secret, message);\n if (err) {\n log.error(`error: failed to generate signature: ${err}`);\n return new Error(`${ErrInternal.code}: ${err.message}`);\n }\n if (!timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature))) {\n log.error(\"error: signature verification failed\");\n return new Error(`${ErrInvalidHmacSignature.code}: ${ErrInvalidHmacSignature.details}`);\n }\n return undefined; // No error, signature verification successful\n }\n catch (error) {\n log.error(\"error: unexpected error occurred during signature verification: \", error);\n return new Error(`${ErrInternal.code} : ${error}`);\n }\n };\n}\n// Export status codes and details\nexport * from \"./status\";\n","import { InterceptingCall, Metadata, RequesterBuilder } from \"@grpc/grpc-js\";\nimport { HMAC } from \"../lib/hmac\";\nimport { initLogger } from \"../lib/logger\";\nconst log = initLogger();\nclass ClientInterceptorImpl {\n hmacKeyId;\n hmacSecret;\n hmac;\n /**\n * Create a new instance of the ClientInterceptor.\n * @param hmacKeyId - HMAC key ID.\n * @param hmacSecret - HMAC secret key.\n */\n constructor(hmacKeyId, hmacSecret) {\n this.hmacKeyId = hmacKeyId;\n this.hmacSecret = hmacSecret;\n this.hmac = new HMAC();\n }\n /**\n * Function that creates a unary client interceptor.\n * @param options - Interceptor options.\n * @param next - Next call in the interceptor chain.\n * @returns InterceptingCall\n */\n Interceptor(options, next) {\n let savedMetadata;\n let savedListener;\n let startNext;\n // Create a Requester using RequesterBuilder\n const requester = new RequesterBuilder()\n .withStart((metadata, listener, next) => {\n savedMetadata = metadata;\n savedListener = listener;\n startNext = next;\n })\n .withSendMessage((message, next) => {\n if (typeof message === \"string\") {\n log.info(`Sending message: ${message}`);\n }\n else if (message instanceof Buffer) {\n log.info(`Sending message: ${message.toString()}`);\n }\n else if (typeof message === \"object\") {\n log.info(`Sending message: ${JSON.stringify(message)}`);\n }\n else if (typeof message === \"number\") {\n log.info(`Sending message: ${message}`);\n }\n else if (typeof message === \"boolean\") {\n log.info(`Sending message: ${message}`);\n }\n else if (message === undefined) {\n log.info(`Sending message: undefined`);\n }\n // Encode the message and generate the signature\n const [msg, encodeErr] = this.hmac.buildMessage(message, options.method_definition.path);\n if (encodeErr) {\n log.error(`Failed to encode request: ${encodeErr}`);\n return;\n }\n const [signature, signErr] = this.hmac.generateSignature(this.hmacSecret, msg);\n if (signErr) {\n log.error(`Failed to generate signature: ${signErr}`);\n return;\n }\n // Set HMAC-related metadata\n savedMetadata = savedMetadata ?? new Metadata();\n savedMetadata.set(\"x-hmac-key-id\", this.hmacKeyId);\n savedMetadata.set(\"x-hmac-signature\", signature);\n // Call the next interceptor\n startNext(savedMetadata, savedListener);\n next(message);\n })\n .withHalfClose(next => {\n next();\n })\n .withCancel(message => {\n log.error(`Cancelled message: ${message}`);\n })\n .build();\n // Return the InterceptingCall with the next call and the requester\n return new InterceptingCall(next(options), requester);\n }\n /**\n * Function that returns a unary client interceptor.\n * @returns Function that creates a unary client interceptor.\n */\n WithInterceptor() {\n return (options, next) => {\n return this.Interceptor(options, next);\n };\n }\n}\n/**\n * Factory function to create a new client interceptor.\n * @param hmacKeyId - HMAC key ID.\n * @param hmacSecret - HMAC secret key.\n * @returns ClientInterceptor\n */\nexport const NewClientInterceptor = (hmacKeyId, hmacSecret) => {\n return new ClientInterceptorImpl(hmacKeyId, hmacSecret);\n};\n","import { ServerInterceptingCall, ServerListenerBuilder, status } from \"@grpc/grpc-js\";\nimport { HMAC } from \"../lib/hmac\"; // Check if the path is correct\nimport { initLogger } from \"../lib/logger\";\nconst log = initLogger();\n/**\n * Implementation of the ServerInterceptor interface.\n */\nexport class ServerInterceptorImpl {\n auth;\n hmac;\n constructor(getSecret) {\n this.hmac = new HMAC();\n this.auth = this.hmac.verifySignature(getSecret);\n }\n /**\n * Intercepts unary server calls.\n * @param methodDescriptor - The method descriptor of the unary server call.\n * @param call - The server intercepting call interface.\n * @returns The intercepted server call.\n */\n ServerInterceptor(methodDescriptor, call) {\n let savedMetadata;\n return new ServerInterceptingCall(call, {\n start: next => {\n const authListener = new ServerListenerBuilder()\n .withOnReceiveMetadata((metadata, mdNext) => {\n if (!metadata.get(\"x-hmac-key-id\")) {\n log.error(\"No HMAC key ID provided\");\n call.sendStatus({\n code: status.UNAUTHENTICATED,\n details: \"No HMAC key ID provided\"\n });\n }\n else if (!metadata.get(\"x-hmac-signature\")) {\n log.error(\"No HMAC signature provided\");\n call.sendStatus({\n code: status.UNAUTHENTICATED,\n details: \"No HMAC signature provided\"\n });\n }\n else {\n savedMetadata = metadata;\n mdNext(metadata);\n }\n })\n .withOnReceiveMessage((message, msgNext) => {\n typeof message === \"string\"\n ? log.debug(`Received message: ${message}`)\n : message instanceof Buffer\n ? log.debug(`Received message: ${message.toString()}`)\n : typeof message === \"object\"\n ? log.debug(`Received message: ${JSON.stringify(message)}`)\n : typeof message === \"number\"\n ? log.debug(`Received message: ${message}`)\n : null;\n const [msg, encodeErr] = this.hmac.buildMessage(message, methodDescriptor.path);\n if (encodeErr) {\n log.error(`Failed to encode request: ${encodeErr}`);\n call.sendStatus({\n code: status.UNAUTHENTICATED,\n details: encodeErr.message\n });\n }\n const err = this.auth(msg, savedMetadata.get(\"x-hmac-key-id\").toString(), savedMetadata.get(\"x-hmac-signature\").toString());\n if (err) {\n log.error(`Authentication failed on unary method: ${methodDescriptor.path} with error ${err.name}`);\n call.sendStatus({\n code: status.UNAUTHENTICATED,\n details: err.message\n });\n }\n msgNext(message);\n })\n .withOnReceiveHalfClose(halfClose => {\n halfClose();\n })\n .withOnCancel(() => { })\n .build();\n next(authListener);\n },\n sendMessage: (message, next) => {\n typeof message === \"string\"\n ? log.debug(`Server Sending message: ${message}`)\n : message instanceof Buffer\n ? log.debug(`Server Sending message: ${message.toString()}`)\n : typeof message === \"object\"\n ? log.debug(`Server Sending message: ${JSON.stringify(message)}`)\n : typeof message === \"number\"\n ? log.debug(`Server Sending message: ${message}`)\n : null;\n next(message);\n }\n });\n }\n /**\n * Adds a unary interceptor to a method.\n * @returns A function that can be used to wrap a unary grpc method with the interceptor.\n */\n WithInterceptor() {\n return (methodDescriptor, call) => {\n return this.ServerInterceptor(methodDescriptor, call);\n };\n }\n}\n/**\n * Creates a new server interceptor.\n * @param getSecret - The callback to get the secret.\n * @returns A promise resolving to the new server interceptor.\n */\nexport const NewServerInterceptor = (getSecret) => {\n return new ServerInterceptorImpl(getSecret);\n};\n"],"mappings":"8GAAA,IAAAA,EAAAC,EAAA,MASAC,EAAAC,QAAA,SAAAC,OAAAC,GACA,gBAAAC,QAAAC,GACA,IACA,OAAAP,EAAAO,EAAAF,IACA,OAAAG,GAAA,CAEA,YACA,CACA,C,iBCjBA,IAAAF,EAAAL,EAAA,MAQAC,EAAAC,QAAAG,GAAA,SAAAG,aACA,OAAAC,QAAAC,IAAAC,OAAAF,QAAAC,IAAAE,WACA,G,WCJA,IAAAC,EAAA,GAQA,IAAAC,EAAA,GAOA,IAAAC,EAAA,SAAAC,UAAA,EASA,SAAAC,IAAAZ,GACA,IAAAQ,EAAAK,QAAAb,GAAA,aAEAQ,EAAAM,KAAAd,GACA,WACA,CAQA,SAAAe,IAAAC,GACAN,EAAAM,CACA,CASA,SAAAtB,QAAAO,GACA,IAAAgB,EAAA,GAEA,QAAAC,EAAA,EAAAA,EAAAV,EAAAW,OAAAD,IAAA,CACA,GAAAV,EAAAU,GAAAD,MAAA,CACAA,EAAAH,KAAAN,EAAAU,IACA,QACA,CAEA,GAAAV,EAAAU,GAAAjB,GAAA,WACA,CAEA,IAAAgB,EAAAE,OAAA,aAQA,WAAAC,SAAA,SAAAC,MAAAC,GACAF,QAAAG,IACAN,EAAAO,KAAA,SAAAC,QAAA1B,GACA,OAAAA,EAAAE,EACA,KACAyB,MAAA,SAAAC,SAAAC,GACAN,EAAAM,EAAAC,KAAAC,SACA,GACA,GACA,CASA,SAAAC,OAAAhC,GACA,IAAAU,EAAAI,QAAAd,GAAA,aAEAU,EAAAK,KAAAf,GACA,WACA,CASA,SAAAiC,QACAtB,EAAAuB,MAAAvB,EAAAwB,UACA,CASA,SAAA9B,QAAA+B,GACA,QAAAjB,EAAA,EAAAA,EAAAT,EAAAU,OAAAD,IAAA,CACAiB,EAAA1B,EAAAS,GAAAe,MAAAxB,EAAAS,GAAAgB,UACA,CAEA,OAAAC,CACA,CAUA,SAAAC,UAAArC,EAAAsC,GACA,IAAAC,EAAAC,OAAAC,UAAAC,eAEA,QAAAC,KAAAL,EAAA,CACA,GAAAC,EAAAK,KAAAN,EAAAK,GAAA,CACA3C,EAAA2C,GAAAL,EAAAK,EACA,CACA,CAEA,OAAA3C,CACA,CAQA,SAAA6C,KAAAP,GACAA,EAAA3C,QAAA,MACA2C,EAAAN,cACAM,EAAAtB,QACAsB,EAAAzB,QAEA,OAAAwB,WAAA,SAAAS,YACA,YACA,GAAAR,EACA,CASA,SAAAS,IAAAT,GAOA,SAAAU,cACA,IAAAC,EAAAC,MAAAT,UAAAU,MAAAP,KAAAT,UAAA,GAEAF,MAAAW,KAAAX,MAAAK,EAAAjC,QAAA4C,EAAAX,IACA,WACA,CAEAA,EAAA3C,QAAA,KACA2C,EAAAN,cACAM,EAAAtB,QACAsB,EAAAzB,QAEA,OAAAwB,UAAAW,YAAAV,EACA,CAUAzC,EAAAC,QAAA,SAAAC,OAAAiD,GACAA,EAAAX,oBACAW,EAAArD,gBACAqD,EAAA3C,gBACA2C,EAAAhB,cACAgB,EAAAf,YACAe,EAAAH,UACAG,EAAAD,QACAC,EAAAhC,QACAgC,EAAAnC,QAEA,OAAAmC,CACA,C,WCxMAnD,EAAAC,QAAA,SAAAsD,EAAAC,GAKA,IAAAC,SAAAb,UAAAP,MAAAU,KAAAW,QAAAC,IAAAD,QAAAF,EAAA,CACA,MAAAlD,GAAA,CACA,C,iBClBA,IAAAsD,EAAA7D,EAAA,MACA,IAAA8D,EAAA9D,EAAA,MAUAC,EAAAC,QAAA,SAAA6D,aAAAV,EAAAX,GACA,IAAApC,EAAAoC,EAAApC,UACA,IAAA0D,EAAAtB,EAAAuB,SAAA,MACAH,EAAAxD,EAAA,IAAAuD,EAAAvD,IACAA,EAAA,IAEA+C,EAAA,GAAAW,EAAA,IAAAX,EAAA,GACA,OAAAA,CACA,C,gBCnBA,IAAAlD,EAAAH,EAAA,MACA,IAAAkE,EAAAlE,EAAA,gBAUA,IAAAoD,EAAAjD,GAAA,SAAAgE,IAAA7D,EAAAoC,GACAA,KAAA,GACAA,EAAAuB,OAAA,WAAAvB,IAAAuB,OAAAC,EACAxB,EAAApC,YACAoC,EAAA0B,KAAA,MACA1B,EAAAyB,IAAA,KAEA,IAAAA,IAAApE,QAAAO,MAAAoC,EAAA2B,OAAAF,IAAAE,OAAA,CACA,OAAAF,IAAAlB,KAAAP,EACA,CAEA,OAAAyB,IAAAhB,IAAAT,EACA,IAKAU,EAAAhB,OAAApC,EAAA,OACAoD,EAAAnC,IAAAjB,EAAA,OACAoD,EAAAhC,IAAApB,EAAA,OAKAC,EAAAC,QAAAkD,C,iBChCA,GAAA3C,QAAAC,IAAA4D,WAAA,cACArE,EAAAC,QAAAF,EAAA,KACA,MACAC,EAAAC,QAAAF,EAAA,IACA,C,iBCPA,IAAAG,EAAAH,EAAA,MAUA,IAAAoD,EAAAjD,GAAA,SAAAiE,KAAA9D,EAAAoC,GACAA,KAAA,GACAA,EAAApC,YACAoC,EAAA0B,KAAA,KACA1B,EAAAyB,IAAA,MAEA,KAAAzB,EAAA2B,OAAAD,KAAAC,OAAA,OAAAD,KAAAnB,KAAAP,GACA,OAAA0B,KAAAjB,IAAAT,EACA,IAKAzC,EAAAC,QAAAkD,C,eCNAR,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAuE,yBAAAvE,EAAAwE,0BAAA,EACA,MAAAC,EAAA,GACA,SAAAD,qBAAAE,EAAAC,GACAF,EAAAxD,KAAA,CAAAyD,uBAAAC,eACA,CACA3E,EAAAwE,0CACA,SAAAD,yBAAAK,GACA,UAAAF,uBAAAC,iBAAAF,EAAA,CACAG,EAAAC,WAAAH,IAAAC,IACA,CACA,CACA3E,EAAAuE,iD,eCZA7B,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA8E,oBAAA,EACA,MAAAC,EAAA,IACA,MAAAC,EAAA,IACA,MAAAC,EAAA,KACA,MAAAC,EAAA,GAMA,SAAAC,cAAAC,EAAAC,GACA,OAAAC,KAAAC,UAAAF,EAAAD,IACA,CACA,MAAAN,eACA,WAAAU,CAAAC,EAAAjD,GACAkD,KAAAD,WAIAC,KAAAC,aAAAZ,EAIAW,KAAAE,WAAAZ,EAIAU,KAAAG,SAAAZ,EAKAS,KAAAI,OAAAZ,EAIAQ,KAAAK,QAAA,MAKAL,KAAAM,OAAA,KAKAN,KAAAO,UAAA,IAAAC,KAKAR,KAAAS,QAAA,IAAAD,KACA,GAAA1D,EAAA,CACA,GAAAA,EAAAmD,aAAA,CACAD,KAAAC,aAAAnD,EAAAmD,YACA,CACA,GAAAnD,EAAAoD,WAAA,CACAF,KAAAE,WAAApD,EAAAoD,UACA,CACA,GAAApD,EAAAsD,OAAA,CACAJ,KAAAI,OAAAtD,EAAAsD,MACA,CACA,GAAAtD,EAAAqD,SAAA,CACAH,KAAAG,SAAArD,EAAAqD,QACA,CACA,CACAH,KAAAU,UAAAV,KAAAC,aACAD,KAAAW,QAAAC,YAAA,WACAC,aAAAb,KAAAW,QACA,CACA,QAAAG,CAAAC,GACA,IAAAC,EAAAC,EACAjB,KAAAS,QAAAT,KAAAO,UACAP,KAAAS,QAAAS,gBAAAlB,KAAAS,QAAAU,kBAAAnB,KAAAU,WACAG,aAAAb,KAAAW,SACAX,KAAAW,QAAAC,YAAA,KACAZ,KAAAD,WACAC,KAAAK,QAAA,QACAU,GACA,IAAAf,KAAAM,OAAA,EACAW,GAAAD,EAAAhB,KAAAW,SAAAS,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,CAIA,OAAAK,GACArB,KAAAK,QAAA,KACAL,KAAAO,UAAA,IAAAC,KACAR,KAAAc,SAAAd,KAAAU,WACA,MAAAY,EAAA1B,KAAAF,IAAAM,KAAAU,UAAAV,KAAAE,WAAAF,KAAAG,UACA,MAAAoB,EAAAD,EAAAtB,KAAAI,OACAJ,KAAAU,UACAY,EAAA7B,eAAA8B,IACA,CAKA,IAAAC,GACAX,aAAAb,KAAAW,SACAX,KAAAK,QAAA,KACA,CAKA,KAAAoB,GACAzB,KAAAU,UAAAV,KAAAC,aACA,GAAAD,KAAAK,QAAA,CACA,MAAAqB,EAAA,IAAAlB,KACA,MAAAmB,EAAA3B,KAAAO,UACAoB,EAAAT,gBAAAS,EAAAR,kBAAAnB,KAAAU,WACAG,aAAAb,KAAAW,SACA,GAAAe,EAAAC,EAAA,CACA3B,KAAAc,SAAAa,EAAAC,UAAAF,EAAAE,UACA,KACA,CACA5B,KAAAK,QAAA,KACA,CACA,CACA,CAIA,SAAAwB,GACA,OAAA7B,KAAAK,OACA,CAKA,GAAAyB,GACA,IAAAd,EAAAC,EACAjB,KAAAM,OAAA,MACAW,GAAAD,EAAAhB,KAAAW,SAAAmB,OAAA,MAAAb,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CAKA,KAAAI,GACA,IAAAJ,EAAAC,EACAjB,KAAAM,OAAA,OACAW,GAAAD,EAAAhB,KAAAW,SAAAS,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CAKA,UAAAe,GACA,OAAA/B,KAAAS,OACA,EAEAnG,EAAA8E,6B,iBC3JApC,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA0H,qBAAA,EACA,MAAAC,EAAA7H,EAAA,MACA,SAAA8H,sBAAAC,GACA,4BAAAA,UACAA,EAAAC,oBAAA,UACA,CAKA,MAAAJ,gBAQA,kCAAAK,CAAAC,GACA,WAAAC,sBAAAD,EACA,CAMA,iCAAAE,CAAAC,GACA,OAAAT,gBAAAK,6BAAA,CAAAvF,EAAAiD,KACA,IAAA2C,EACA,GAAAR,sBAAAO,GAAA,CACAC,EAAAD,EAAAL,kBAAAtF,EAAA6F,YACA,KACA,CACAD,EAAA,IAAA7G,SAAA,CAAAE,EAAA6G,KACAH,EAAAI,mBAAA/F,EAAA6F,aAAA,CAAAG,EAAAC,KACA,GAAAD,EAAA,CACAF,EAAAE,GACA,MACA,CACA,IAAAC,EAAA,CACAH,EAAA,IAAAI,MAAA,uCACA,MACA,CACAjH,EAAAgH,EAAA,GACA,GAEA,CACAL,EAAAvG,MAAA4G,IACA,MAAAE,EAAA,IAAAhB,EAAAiB,SACA,UAAA/F,KAAAH,OAAAmG,KAAAJ,GAAA,CACAE,EAAAG,IAAAjG,EAAA4F,EAAA5F,GACA,CACA4C,EAAA,KAAAkD,EAAA,IACAH,IACA/C,EAAA+C,EAAA,GACA,GAEA,CACA,kBAAAO,GACA,WAAAC,oBACA,EAEAhJ,EAAA0H,gCACA,MAAAuB,gCAAAvB,gBACA,WAAAlC,CAAA0D,GACAC,QACAzD,KAAAwD,OACA,CACA,sBAAAE,CAAA5G,GACA,MAAA6G,EAAA,IAAA1B,EAAAiB,SACA,MAAAU,QAAA/H,QAAAG,IAAAgE,KAAAwD,MAAAvH,KAAA4H,KAAAH,iBAAA5G,MACA,UAAAgH,KAAAF,EAAA,CACAD,EAAAI,MAAAD,EACA,CACA,OAAAH,CACA,CACA,OAAAK,CAAAC,GACA,WAAAV,wBAAAvD,KAAAwD,MAAAU,OAAA,CAAAD,IACA,CACA,OAAAE,CAAAF,GACA,GAAAjE,OAAAiE,EAAA,CACA,WACA,CACA,GAAAA,aAAAV,wBAAA,CACA,OAAAvD,KAAAwD,MAAAY,OAAA,CAAAxF,EAAAyF,IAAAzF,EAAAuF,QAAAF,EAAAT,MAAAa,KACA,KACA,CACA,YACA,CACA,EAEA,MAAA9B,8BAAAP,gBACA,WAAAlC,CAAAwC,GACAmB,QACAzD,KAAAsC,mBACA,CACA,gBAAAoB,CAAA5G,GACA,WAAAjB,SAAA,CAAAE,EAAA6G,KACA5C,KAAAsC,kBAAAxF,GAAA,CAAAgG,EAAAG,KACA,GAAAA,IAAAqB,UAAA,CACAvI,EAAAkH,EACA,KACA,CACAL,EAAAE,EACA,IACA,GAEA,CACA,OAAAkB,CAAAC,GACA,WAAAV,wBAAA,CAAAvD,KAAAiE,GACA,CACA,OAAAE,CAAAF,GACA,GAAAjE,OAAAiE,EAAA,CACA,WACA,CACA,GAAAA,aAAA1B,sBAAA,CACA,OAAAvC,KAAAsC,oBAAA2B,EAAA3B,iBACA,KACA,CACA,YACA,CACA,EAEA,MAAAgB,6BAAAtB,gBACA,gBAAA0B,CAAA5G,GACA,OAAAjB,QAAAE,QAAA,IAAAkG,EAAAiB,SACA,CACA,OAAAc,CAAAC,GACA,OAAAA,CACA,CACA,OAAAE,CAAAF,GACA,OAAAA,aAAAX,oBACA,E,eCrIAtG,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAiK,yBAAAjK,EAAAkK,4BAAA,EACA,SAAAA,uBAAAC,GACA,OAAAA,EAAAC,oBAAAJ,WACAG,EAAAC,kBAAA9I,SAAA,CACA,CACAtB,EAAAkK,8CACA,MAAAD,yBACA,WAAAzE,CAAA2E,EAAAE,GACA3E,KAAAyE,WACAzE,KAAA2E,eACA3E,KAAA4E,mBAAA,MACA5E,KAAA6E,kBAAA,MACA7E,KAAA8E,kBAAA,MACA9E,KAAA+E,cAAA,IACA,CACA,qBAAAC,GACA,GAAAhF,KAAA6E,kBAAA,CACA7E,KAAA2E,aAAAM,iBAAAjF,KAAAkF,gBACAlF,KAAAkF,eAAA,KACAlF,KAAA6E,kBAAA,KACA,CACA,CACA,oBAAAM,GACA,GAAAnF,KAAA+E,cAAA,CACA/E,KAAA2E,aAAAS,gBAAApF,KAAA+E,cACA,CACA,CACA,iBAAAL,CAAAzB,GACAjD,KAAA4E,mBAAA,KACA5E,KAAAyE,SAAAC,kBAAAzB,OACAjD,KAAA4E,mBAAA,MACA5E,KAAA2E,aAAAD,kBAAAzB,GACAjD,KAAAgF,wBACAhF,KAAAmF,sBAAA,GAEA,CAEA,gBAAAF,CAAArI,GAGAoD,KAAA8E,kBAAA,KACA9E,KAAAyE,SAAAQ,iBAAArI,GAAAyI,IACArF,KAAA8E,kBAAA,MACA,GAAA9E,KAAA4E,mBAAA,CACA5E,KAAAkF,eAAAG,EACArF,KAAA6E,kBAAA,IACA,KACA,CACA7E,KAAA2E,aAAAM,iBAAAI,GACArF,KAAAmF,sBACA,IAEA,CACA,eAAAC,CAAAE,GACAtF,KAAAyE,SAAAW,gBAAAE,GAAAC,IACA,GAAAvF,KAAA4E,oBAAA5E,KAAA8E,kBAAA,CACA9E,KAAA+E,cAAAQ,CACA,KACA,CACAvF,KAAA2E,aAAAS,gBAAAG,EACA,IAEA,EAEAjL,EAAAiK,iD,cCjEAvH,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAkL,uBAAA,EACA,IAAAC,EAAA,EACA,SAAAD,oBACA,OAAAC,GACA,CACAnL,EAAAkL,mC,iBCNAxI,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAoL,uBAAApL,EAAAqL,yBAAArL,EAAAsL,yBAAAtL,EAAAuL,oBAAAvL,EAAAwL,yBAAA,EACA,MAAAC,EAAA3L,EAAA,MACA,MAAA4L,EAAA5L,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KAOA,SAAA0L,oBAAAR,EAAAY,GACA,MAAAtJ,EAAA,GAAA0I,EAAAa,QAAAF,EAAAG,OAAAd,EAAAa,UAAAb,EAAAe,UACA,MAAAC,EAAA,IAAAtD,MAAApG,GACA,MAAA2J,EAAA,GAAAD,EAAAC,uBAAAL,IACA,OAAAlJ,OAAAwJ,OAAA,IAAAxD,MAAApG,GAAA0I,EAAA,CAAAiB,SACA,CACAjM,EAAAwL,wCACA,MAAAD,4BAAAE,EAAAU,aACA,WAAA3G,GACA2D,OACA,CACA,MAAAiD,GACA,IAAA1F,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA2F,iBAAAV,EAAAG,OAAAQ,UAAA,sBACA,CACA,OAAAC,GACA,IAAA7F,EAAAC,EACA,OAAAA,GAAAD,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA6F,aAAA,MAAA5F,SAAA,EAAAA,EAAA,SACA,EAEA3G,EAAAuL,wCACA,MAAAD,iCAAAI,EAAAc,SACA,WAAAhH,CAAAiH,GACAtD,MAAA,CAAAuD,WAAA,OACAhH,KAAA+G,aACA,CACA,MAAAL,GACA,IAAA1F,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA2F,iBAAAV,EAAAG,OAAAQ,UAAA,sBACA,CACA,OAAAC,GACA,IAAA7F,EAAAC,EACA,OAAAA,GAAAD,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA6F,aAAA,MAAA5F,SAAA,EAAAA,EAAA,SACA,CACA,KAAAgG,CAAAC,GACA,IAAAlG,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAAmG,WACA,EAEA7M,EAAAsL,kDACA,MAAAD,iCAAAK,EAAAoB,SACA,WAAAtH,CAAAuH,GACA5D,MAAA,CAAAuD,WAAA,OACAhH,KAAAqH,WACA,CACA,MAAAX,GACA,IAAA1F,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA2F,iBAAAV,EAAAG,OAAAQ,UAAA,sBACA,CACA,OAAAC,GACA,IAAA7F,EAAAC,EACA,OAAAA,GAAAD,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA6F,aAAA,MAAA5F,SAAA,EAAAA,EAAA,SACA,CACA,MAAAqG,CAAAC,EAAAC,EAAAC,GACA,IAAAzG,EACA,MAAA0G,EAAA,CACA3H,SAAA0H,GAEA,MAAAE,EAAAC,OAAAJ,GACA,IAAAI,OAAAC,MAAAF,GAAA,CACAD,EAAAC,OACA,EACA3G,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA8G,uBAAAJ,EAAAH,EACA,CACA,MAAAQ,CAAAN,GACA,IAAAzG,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAAgH,YACAP,GACA,EAEAnN,EAAAqL,kDACA,MAAAD,+BAAAM,EAAAiC,OACA,WAAAnI,CAAAuH,EAAAN,GACAtD,MAAA,CAAAuD,WAAA,OACAhH,KAAAqH,YACArH,KAAA+G,aACA,CACA,MAAAL,GACA,IAAA1F,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA2F,iBAAAV,EAAAG,OAAAQ,UAAA,sBACA,CACA,OAAAC,GACA,IAAA7F,EAAAC,EACA,OAAAA,GAAAD,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA6F,aAAA,MAAA5F,SAAA,EAAAA,EAAA,SACA,CACA,KAAAgG,CAAAC,GACA,IAAAlG,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAAmG,WACA,CACA,MAAAG,CAAAC,EAAAC,EAAAC,GACA,IAAAzG,EACA,MAAA0G,EAAA,CACA3H,SAAA0H,GAEA,MAAAE,EAAAC,OAAAJ,GACA,IAAAI,OAAAC,MAAAF,GAAA,CACAD,EAAAC,OACA,EACA3G,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAA8G,uBAAAJ,EAAAH,EACA,CACA,MAAAQ,CAAAN,GACA,IAAAzG,GACAA,EAAAhB,KAAA5C,QAAA,MAAA4D,SAAA,SAAAA,EAAAgH,YACAP,GACA,EAEAnN,EAAAoL,6C,iBCrHA1I,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA4N,wBAAA,EACA,MAAAC,EAAA/N,EAAA,MACA,MAAAgO,EAAAhO,EAAA,MACA,MAAAiO,EAAAjO,EAAA,MAEA,SAAAkO,qBAAAC,EAAAC,GACA,GAAAD,kBAAAE,QAAA,CACA,UAAAC,UAAA,GAAAF,oCACA,CACA,CAMA,MAAAN,mBACA,WAAApI,CAAA6I,GACA3I,KAAA2I,mBAAAP,EAAApG,gBAAAqB,aACA,CAIA,mBAAAuF,GACA,OAAA5I,KAAA2I,eACA,CAUA,gBAAAE,CAAAC,EAAAC,EAAAC,EAAAC,GACA,IAAAjI,EACAsH,qBAAAQ,EAAA,oBACAR,qBAAAS,EAAA,eACAT,qBAAAU,EAAA,qBACA,GAAAD,IAAAC,EAAA,CACA,UAAAhG,MAAA,gEACA,CACA,IAAA+F,GAAAC,EAAA,CACA,UAAAhG,MAAA,gEACA,CACA,MAAAkG,GAAA,EAAAf,EAAAgB,qBAAA,CACAC,IAAApI,EAAA8H,IAAA,MAAAA,SAAA,EAAAA,GAAA,EAAAT,EAAAgB,0BAAA,MAAArI,SAAA,EAAAA,EAAAsD,UACAnH,IAAA4L,IAAA,MAAAA,SAAA,EAAAA,EAAAzE,UACAgF,KAAAN,IAAA,MAAAA,SAAA,EAAAA,EAAA1E,UACAiF,QAAAlB,EAAAmB,gBAEA,WAAAC,6BAAAP,EAAAD,IAAA,MAAAA,SAAA,EAAAA,EAAA,GACA,CAWA,8BAAAS,CAAAR,EAAAD,GACA,WAAAQ,6BAAAP,EAAAD,IAAA,MAAAA,SAAA,EAAAA,EAAA,GACA,CAIA,qBAAAU,GACA,WAAAC,8BACA,EAEAtP,EAAA4N,sCACA,MAAA0B,uCAAA1B,mBACA,WAAApI,GACA2D,OACA,CACA,OAAAO,CAAA2E,GACA,UAAA3F,MAAA,sCACA,CACA,qBAAA6G,GACA,WACA,CACA,SAAAC,GACA,YACA,CACA,OAAA3F,CAAAF,GACA,OAAAA,aAAA2F,8BACA,EAEA,MAAAH,qCAAAvB,mBACA,WAAApI,CAAAoJ,EAAAD,GACAxF,QACAzD,KAAAkJ,gBACAlJ,KAAAiJ,gBACAjJ,KAAA+J,kBAAA,CACAb,iBAGA,GAAAD,IAAA,MAAAA,SAAA,SAAAA,EAAAe,oBAAA,CACAhK,KAAA+J,kBAAAC,oBACAf,EAAAe,mBACA,CACA,CACA,OAAAhG,CAAA2E,GACA,MAAAsB,EAAAjK,KAAA2I,gBAAA3E,QAAA2E,GACA,WAAAuB,+BAAAlK,KAAAiK,EACA,CACA,qBAAAJ,GAEA,OAAA7M,OAAAwJ,OAAA,GAAAxG,KAAA+J,kBACA,CACA,SAAAD,GACA,WACA,CACA,OAAA3F,CAAAF,GACA,GAAAjE,OAAAiE,EAAA,CACA,WACA,CACA,GAAAA,aAAAwF,6BAAA,CACA,OAAAzJ,KAAAkJ,gBAAAjF,EAAAiF,eACAlJ,KAAAiJ,cAAAe,sBACA/F,EAAAgF,cAAAe,mBACA,KACA,CACA,YACA,CACA,EAEA,MAAAE,uCAAAhC,mBACA,WAAApI,CAAAqK,EAAAC,GACA3G,MAAA2G,GACApK,KAAAmK,oBACA,CACA,OAAAnG,CAAA2E,GACA,MAAAsB,EAAAjK,KAAA2I,gBAAA3E,QAAA2E,GACA,WAAAuB,+BAAAlK,KAAAmK,mBAAAF,EACA,CACA,qBAAAJ,GACA,OAAA7J,KAAAmK,mBAAAN,uBACA,CACA,SAAAC,GACA,WACA,CACA,OAAA3F,CAAAF,GACA,GAAAjE,OAAAiE,EAAA,CACA,WACA,CACA,GAAAA,aAAAiG,+BAAA,CACA,OAAAlK,KAAAmK,mBAAAhG,QAAAF,EAAAkG,qBACAnK,KAAA2I,gBAAAxE,QAAAF,EAAA0E,gBACA,KACA,CACA,YACA,CACA,E,eC7JA3L,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+P,oBAAA/P,EAAAgQ,uBAAA,EAKAhQ,EAAAgQ,kBAAA,CACA,qCACA,+BACA,iCACA,8BACA,8BACA,iCACA,2CACA,2BACA,mCACA,yCACA,qCACA,sCACA,oCACA,uCACA,8BACA,4BACA,gDACA,2BACA,sCACA,8BACA,kCACA,wCACA,oCACA,8CACA,mCACA,kCACA,wCAEA,SAAAD,oBAAAE,EAAAC,GACA,MAAAC,EAAAzN,OAAAmG,KAAAoH,GAAAG,OACA,MAAAC,EAAA3N,OAAAmG,KAAAqH,GAAAE,OACA,GAAAD,EAAA7O,SAAA+O,EAAA/O,OAAA,CACA,YACA,CACA,QAAAD,EAAA,EAAAA,EAAA8O,EAAA7O,OAAAD,GAAA,GACA,GAAA8O,EAAA9O,KAAAgP,EAAAhP,GAAA,CACA,YACA,CACA,GAAA4O,EAAAE,EAAA9O,MAAA6O,EAAAG,EAAAhP,IAAA,CACA,YACA,CACA,CACA,WACA,CACArB,EAAA+P,uC,iBCnDArN,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAsQ,2BAAA,EACA,MAAAC,EAAAzQ,EAAA,MACA,MAAA0Q,EAAA1Q,EAAA,MACA,MAAAwQ,sBACA,WAAA9K,CAAAiL,EAAAC,EAAAlO,GACA,UAAAiO,IAAA,UACA,UAAArC,UAAA,kCACA,CACA,KAAAsC,aAAAH,EAAA3C,oBAAA,CACA,UAAAQ,UAAA,0DACA,CACA,GAAA5L,EAAA,CACA,UAAAA,IAAA,UACA,UAAA4L,UAAA,oCACA,CACA,CACA1I,KAAAiL,gBAAA,IAAAH,EAAAI,gBAAAH,EAAAC,EAAAlO,EACA,CACA,KAAAqO,GACAnL,KAAAiL,gBAAAE,OACA,CACA,SAAAC,GACA,OAAApL,KAAAiL,gBAAAG,WACA,CACA,oBAAAC,CAAAC,GACA,OAAAtL,KAAAiL,gBAAAI,qBAAAC,EACA,CACA,sBAAAC,CAAAC,EAAAC,EAAA1L,GACAC,KAAAiL,gBAAAM,uBAAAC,EAAAC,EAAA1L,EACA,CAMA,cAAA2L,GACA,OAAA1L,KAAAiL,gBAAAS,gBACA,CACA,UAAAC,CAAAC,EAAAH,EAAAI,EAAAC,EAAAC,GACA,UAAAH,IAAA,UACA,UAAAlD,UAAA,8CACA,CACA,YAAA+C,IAAA,UAAAA,aAAAjL,MAAA,CACA,UAAAkI,UAAA,wDACA,CACA,OAAA1I,KAAAiL,gBAAAU,WAAAC,EAAAH,EAAAI,EAAAC,EAAAC,EACA,EAEAzR,EAAAsQ,2C,02VC8iBAoB,YAAA,CAAA5R,EAAA6R,GAAA,W,8QC/lBAjP,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA4R,oBAAA5R,EAAA6R,iBAAA7R,EAAA8R,iBAAA9R,EAAA+R,gBAAA/R,EAAAgS,mCAAA,EACA,MAAArK,EAAA7H,EAAA,MACA,MAAAmS,EAAAnS,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAoS,EAAApS,EAAA,MAKA,MAAAkS,sCAAAtJ,MACA,WAAAlD,CAAAlD,GACA6G,MAAA7G,GACAoD,KAAAyM,KAAA,gCACAzJ,MAAA0J,kBAAA1M,KAAAsM,8BACA,EAEAhS,EAAAgS,4DACA,MAAAD,gBACA,WAAAvM,GACAE,KAAAiD,SAAAqB,UACAtE,KAAApD,QAAA0H,UACAtE,KAAAsF,OAAAhB,SACA,CACA,qBAAAqI,CAAAjI,GACA1E,KAAAiD,SAAAyB,EACA,OAAA1E,IACA,CACA,oBAAA4M,CAAA3H,GACAjF,KAAApD,QAAAqI,EACA,OAAAjF,IACA,CACA,mBAAA6M,CAAAzH,GACApF,KAAAsF,OAAAF,EACA,OAAApF,IACA,CACA,KAAA8M,GACA,OACApI,kBAAA1E,KAAAiD,SACAgC,iBAAAjF,KAAApD,QACAwI,gBAAApF,KAAAsF,OAEA,EAEAhL,EAAA+R,gCACA,MAAAD,iBACA,WAAAtM,GACAE,KAAA+M,MAAAzI,UACAtE,KAAApD,QAAA0H,UACAtE,KAAAgI,UAAA1D,UACAtE,KAAA0G,OAAApC,SACA,CACA,SAAA0I,CAAAD,GACA/M,KAAA+M,QACA,OAAA/M,IACA,CACA,eAAAiN,CAAAC,GACAlN,KAAApD,QAAAsQ,EACA,OAAAlN,IACA,CACA,aAAAmN,CAAAnF,GACAhI,KAAAgI,YACA,OAAAhI,IACA,CACA,UAAAoN,CAAA1G,GACA1G,KAAA0G,SACA,OAAA1G,IACA,CACA,KAAA8M,GACA,OACAC,MAAA/M,KAAA+M,MACAG,YAAAlN,KAAApD,QACAoL,UAAAhI,KAAAgI,UACAtB,OAAA1G,KAAA0G,OAEA,EAEApM,EAAA8R,kCAKA,MAAAiB,EAAA,CACA3I,kBAAA,CAAAzB,EAAAqK,KACAA,EAAArK,EAAA,EAEAgC,iBAAA,CAAArI,EAAA0Q,KACAA,EAAA1Q,EAAA,EAEAwI,gBAAA,CAAAE,EAAAgI,KACAA,EAAAhI,EAAA,GAOA,MAAAiI,EAAA,CACAR,MAAA,CAAA9J,EAAAwB,EAAA6I,KACAA,EAAArK,EAAAwB,EAAA,EAEAyI,YAAA,CAAAtQ,EAAA0Q,KACAA,EAAA1Q,EAAA,EAEAoL,UAAAsF,IACAA,GAAA,EAEA5G,OAAA4G,IACAA,GAAA,GAGA,MAAAnB,iBACA,WAAArM,CAAA0N,EAAAC,GACA,IAAAzM,EAAAC,EAAAyM,EAAAC,EACA3N,KAAAwN,WAKAxN,KAAA4E,mBAAA,MAIA5E,KAAA4N,sBAAA,KAKA5N,KAAA8E,kBAAA,MAKA9E,KAAA6N,iBAAA,MACA,GAAAJ,EAAA,CACAzN,KAAAyN,UAAA,CACAV,OAAA/L,EAAAyM,EAAAV,SAAA,MAAA/L,SAAA,EAAAA,EAAAuM,EAAAR,MACAG,aAAAjM,EAAAwM,EAAAP,eAAA,MAAAjM,SAAA,EAAAA,EAAAsM,EAAAL,YACAlF,WAAA0F,EAAAD,EAAAzF,aAAA,MAAA0F,SAAA,EAAAA,EAAAH,EAAAvF,UACAtB,QAAAiH,EAAAF,EAAA/G,UAAA,MAAAiH,SAAA,EAAAA,EAAAJ,EAAA7G,OAEA,KACA,CACA1G,KAAAyN,UAAAF,CACA,CACA,CACA,gBAAA5G,CAAArB,EAAAe,GACArG,KAAAyN,UAAA/G,QAAA,KACA1G,KAAAwN,SAAA7G,iBAAArB,EAAAe,EAAA,GAEA,CACA,OAAAQ,GACA,OAAA7G,KAAAwN,SAAA3G,SACA,CACA,qBAAA7B,GACA,GAAAhF,KAAA4N,sBAAA,CACA5N,KAAAwN,SAAA1F,uBAAA9H,KAAA4N,sBAAA5N,KAAAkF,gBACAlF,KAAA4N,sBAAA,KACA5N,KAAAkF,eAAA,IACA,CACA,CACA,uBAAA4I,GACA,GAAA9N,KAAA6N,iBAAA,CACA7N,KAAAwN,SAAAxF,WACA,CACA,CACA,KAAA+E,CAAA9J,EAAA8K,GACA,IAAA/M,EAAAC,EAAAyM,EAAAC,EAAAK,EAAAC,EACA,MAAAC,EAAA,CACAxJ,mBAAAzD,GAAAD,EAAA+M,IAAA,MAAAA,SAAA,SAAAA,EAAArJ,qBAAA,MAAA1D,SAAA,SAAAA,EAAAmN,KAAAJ,MAAA,MAAA9M,SAAA,EAAAA,EAAAgC,IAAA,EACAgC,kBAAA0I,GAAAD,EAAAK,IAAA,MAAAA,SAAA,SAAAA,EAAA9I,oBAAA,MAAAyI,SAAA,SAAAA,EAAAS,KAAAJ,MAAA,MAAAJ,SAAA,EAAAA,EAAA/Q,IAAA,EACAwI,iBAAA6I,GAAAD,EAAAD,IAAA,MAAAA,SAAA,SAAAA,EAAA3I,mBAAA,MAAA4I,SAAA,SAAAA,EAAAG,KAAAJ,MAAA,MAAAE,SAAA,EAAAA,EAAA3I,IAAA,GAEAtF,KAAA4E,mBAAA,KACA5E,KAAAyN,UAAAV,MAAA9J,EAAAiL,GAAA,CAAAE,EAAA3J,KACA,IAAAzD,EAAAC,EAAAyM,EACA1N,KAAA4E,mBAAA,MACA,IAAAyJ,EACA,MAAA9B,EAAA/H,wBAAAC,GAAA,CACA4J,EAAA5J,CACA,KACA,CACA,MAAA6J,EAAA,CACA5J,mBAAA1D,EAAAyD,EAAAC,qBAAA,MAAA1D,SAAA,EAAAA,EAAAqM,EAAA3I,kBACAO,kBAAAhE,EAAAwD,EAAAQ,oBAAA,MAAAhE,SAAA,EAAAA,EAAAoM,EAAApI,iBACAG,iBAAAsI,EAAAjJ,EAAAW,mBAAA,MAAAsI,SAAA,EAAAA,EAAAL,EAAAjI,iBAEAiJ,EAAA,IAAA9B,EAAAhI,yBAAA+J,EAAAJ,EACA,CACAlO,KAAAwN,SAAAT,MAAAqB,EAAAC,GACArO,KAAAgF,wBACAhF,KAAA8N,yBAAA,GAEA,CAEA,sBAAAhG,CAAAJ,EAAA9K,GACAoD,KAAA8E,kBAAA,KACA9E,KAAAyN,UAAAP,YAAAtQ,GAAA2R,IACAvO,KAAA8E,kBAAA,MACA,GAAA9E,KAAA4E,mBAAA,CACA5E,KAAA4N,sBAAAlG,EACA1H,KAAAkF,eAAAtI,CACA,KACA,CACAoD,KAAAwN,SAAA1F,uBAAAJ,EAAA6G,GACAvO,KAAA8N,yBACA,IAEA,CAEA,WAAAZ,CAAAtQ,GACAoD,KAAA8H,uBAAA,GAAAlL,EACA,CACA,SAAAuK,GACAnH,KAAAwN,SAAArG,WACA,CACA,SAAAa,GACAhI,KAAAyN,UAAAzF,WAAA,KACA,GAAAhI,KAAA4E,oBAAA5E,KAAA8E,kBAAA,CACA9E,KAAA6N,iBAAA,IACA,KACA,CACA7N,KAAAwN,SAAAxF,WACA,IAEA,EAEA1N,EAAA6R,kCACA,SAAAqC,QAAAC,EAAAC,EAAA5R,GACA,IAAAkE,EAAAC,EACA,MAAAwK,GAAAzK,EAAAlE,EAAA2O,YAAA,MAAAzK,SAAA,EAAAA,EAAA2N,SACA,MAAA9C,EAAA/O,EAAA+O,KACA,MAAA+C,GAAA3N,EAAAnE,EAAA8R,UAAA,MAAA3N,SAAA,EAAAA,EAAA,KACA,MAAA8K,EAAAjP,EAAA+R,gBACA,MAAA7D,EAAAlO,EAAAkO,YACA,MAAA5N,EAAAqR,EAAA9C,WAAA+C,EAAAjD,EAAAI,EAAA+C,EAAA7C,GACA,GAAAf,EAAA,CACA5N,EAAA0R,eAAA9D,EACA,CACA,OAAA5N,CACA,CAKA,MAAA2R,qBACA,WAAAjP,CAAA1C,EAEA4R,GACAhP,KAAA5C,OACA4C,KAAAgP,kBACA,CACA,gBAAArI,CAAArB,EAAAe,GACArG,KAAA5C,KAAAuJ,iBAAArB,EAAAe,EACA,CACA,OAAAQ,GACA,OAAA7G,KAAA5C,KAAAyJ,SACA,CAEA,sBAAAiB,CAAAJ,EAAA9K,GACA,IAAAqS,EACA,IACAA,EAAAjP,KAAAgP,iBAAAE,iBAAAtS,EACA,CACA,MAAAjC,GACAqF,KAAA5C,KAAAuJ,iBAAAV,EAAAG,OAAA+I,SAAA,6CAAA3C,EAAA4C,iBAAAzU,MACA,MACA,CACAqF,KAAA5C,KAAA0K,uBAAAJ,EAAAuH,EACA,CAEA,WAAA/B,CAAAtQ,GACAoD,KAAA8H,uBAAA,GAAAlL,EACA,CACA,KAAAmQ,CAAA9J,EAAA8K,GACA,IAAAsB,EAAA,KACArP,KAAA5C,KAAA2P,MAAA9J,EAAA,CACAyB,kBAAAzB,IACA,IAAAjC,GACAA,EAAA+M,IAAA,MAAAA,SAAA,SAAAA,EAAArJ,qBAAA,MAAA1D,SAAA,SAAAA,EAAA5D,KAAA2Q,EAAA9K,EAAA,EAEAgC,iBAAArI,IACA,IAAAoE,EAEA,IAAAsO,EACA,IACAA,EAAAtP,KAAAgP,iBAAAO,oBAAA3S,EACA,CACA,MAAAjC,GACA0U,EAAA,CACAlJ,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,sCAAAmG,EAAA4C,iBAAAzU,KACAsI,SAAA,IAAAhB,EAAAiB,UAEAlD,KAAA5C,KAAAuJ,iBAAA0I,EAAAlJ,KAAAkJ,EAAAhJ,SACA,MACA,EACArF,EAAA+M,IAAA,MAAAA,SAAA,SAAAA,EAAA9I,oBAAA,MAAAjE,SAAA,SAAAA,EAAA5D,KAAA2Q,EAAAuB,EAAA,EAEAlK,gBAAAE,IACA,IAAAtE,EAAAC,EACA,GAAAoO,EAAA,EACArO,EAAA+M,IAAA,MAAAA,SAAA,SAAAA,EAAA3I,mBAAA,MAAApE,SAAA,SAAAA,EAAA5D,KAAA2Q,EAAAsB,EACA,KACA,EACApO,EAAA8M,IAAA,MAAAA,SAAA,SAAAA,EAAA3I,mBAAA,MAAAnE,SAAA,SAAAA,EAAA7D,KAAA2Q,EAAAzI,EACA,IAGA,CACA,SAAA6B,GACAnH,KAAA5C,KAAA+J,WACA,CACA,SAAAa,GACAhI,KAAA5C,KAAA4K,WACA,EAMA,MAAAwH,kCAAAT,qBAEA,WAAAjP,CAAA1C,EAAA4R,GACAvL,MAAArG,EAAA4R,EACA,CACA,KAAAjC,CAAA9J,EAAAwB,GACA,IAAAzD,EAAAC,EACA,IAAAwO,EAAA,MACA,MAAAC,EAAA,CACAhL,mBAAAzD,GAAAD,EAAAyD,IAAA,MAAAA,SAAA,SAAAA,EAAAC,qBAAA,MAAA1D,SAAA,SAAAA,EAAAmN,KAAA1J,MAAA,MAAAxD,SAAA,EAAAA,EAAAgC,IAAA,EAEAgC,iBAAArI,IACA,IAAAoE,EACAyO,EAAA,MACAzO,EAAAyD,IAAA,MAAAA,SAAA,SAAAA,EAAAQ,oBAAA,MAAAjE,SAAA,SAAAA,EAAA5D,KAAAqH,EAAA7H,EAAA,EAEAwI,gBAAAE,IACA,IAAAtE,EAAAC,EACA,IAAAwO,EAAA,EACAzO,EAAAyD,IAAA,MAAAA,SAAA,SAAAA,EAAAQ,oBAAA,MAAAjE,SAAA,SAAAA,EAAA5D,KAAAqH,EAAA,KACA,EACAxD,EAAAwD,IAAA,MAAAA,SAAA,SAAAA,EAAAW,mBAAA,MAAAnE,SAAA,SAAAA,EAAA7D,KAAAqH,EAAAa,EAAA,GAGA7B,MAAAsJ,MAAA9J,EAAAyM,GACA1P,KAAA5C,KAAA+J,WACA,EAMA,MAAAwI,sCAAAZ,sBAEA,SAAAa,0BAAAnB,EAAA3R,EAEAkS,GACA,MAAA5R,EAAAoR,QAAAC,EAAAO,EAAAN,KAAA5R,GACA,GAAAkS,EAAAa,eAAA,CACA,WAAAF,8BAAAvS,EAAA4R,EACA,KACA,CACA,WAAAQ,0BAAApS,EAAA4R,EACA,CACA,CACA,SAAA9C,oBAAA4D,EAEAd,EAAAlS,EAAA2R,GACA,GAAAqB,EAAAC,mBAAAnU,OAAA,GACAkU,EAAAE,2BAAApU,OAAA,GACA,UAAA0Q,8BAAA,sEACA,2DACA,CACA,GAAAwD,EAAAG,iBAAArU,OAAA,GACAkU,EAAAI,yBAAAtU,OAAA,GACA,UAAA0Q,8BAAA,mEACA,yCACA,CACA,IAAA6D,EAAA,GAEA,GAAAL,EAAAG,iBAAArU,OAAA,GACAkU,EAAAI,yBAAAtU,OAAA,GACAuU,EAAA,GACAjM,OAAA4L,EAAAG,iBAAAH,EAAAI,yBAAAjU,KAAAmU,KAAApB,MACAqB,QAAAC,MAEA,KACA,CACAH,EAAA,GACAjM,OAAA4L,EAAAC,mBAAAD,EAAAE,2BAAA/T,KAAAmU,KAAApB,MACAqB,QAAAC,MAEA,CACA,MAAAC,EAAAvT,OAAAwJ,OAAA,GAAA1J,EAAA,CACA0T,kBAAAxB,IASA,MAAAR,EAAA2B,EAAAM,aAAA,CAAAjD,EAAAkD,IACAC,GAAAD,EAAAC,EAAAnD,KACAoD,GAAAhB,0BAAAnB,EAAAmC,EAAA5B,KACA,OAAAR,EAAA+B,EACA,CACAjW,EAAA4R,uC,iBCzZAlP,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAuW,YAAA,EACA,MAAAC,EAAA1W,EAAA,MACA,MAAA2W,EAAA3W,EAAA,MACA,MAAA4W,EAAA5W,EAAA,KACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA6W,EAAA7W,EAAA,MACA,MAAA8W,EAAAC,SACA,MAAAC,EAAAD,SACA,MAAAE,EAAAF,SACA,MAAAG,EAAAH,SACA,SAAAI,WAAAC,GACA,cAAAA,IAAA,UACA,CACA,SAAAC,oBAAAnL,GACA,OAAAA,EAAAC,MAAAmL,MAAA,MAAA/T,MAAA,GAAAgU,KAAA,KACA,CAKA,MAAAd,OACA,WAAA/Q,CAAA8R,EAAA5G,EAAAlO,EAAA,IACA,IAAAkE,EAAAC,EACAnE,EAAAE,OAAAwJ,OAAA,GAAA1J,GACAkD,KAAAoR,IAAApQ,EAAAlE,EAAAqT,gBAAA,MAAAnP,SAAA,EAAAA,EAAA,UACAlE,EAAAqT,aACAnQ,KAAAqR,IAAApQ,EAAAnE,EAAA+U,yBAAA,MAAA5Q,SAAA,EAAAA,EAAA,UACAnE,EAAA+U,sBACA,GAAA7R,KAAAoR,GAAAxV,OAAA,GACAoE,KAAAqR,GAAAzV,OAAA,GACA,UAAAoH,MAAA,sEACA,2DACA,CACAhD,KAAAsR,GACAxU,EAAAgV,iCACAhV,EAAAgV,0BACA,GAAAhV,EAAAiV,gBAAA,CACA/R,KAAAkR,GAAApU,EAAAiV,eACA,MACA,GAAAjV,EAAAkV,uBAAA,CACA,MAAAA,EAAAlV,EAAAkV,8BACAlV,EAAAkV,uBACAhS,KAAAkR,GAAAc,EAAAJ,EAAA5G,EAAAlO,EACA,KACA,CACAkD,KAAAkR,GAAA,IAAAH,EAAAnG,sBAAAgH,EAAA5G,EAAAlO,EACA,CACA,CACA,KAAAqO,GACAnL,KAAAkR,GAAA/F,OACA,CACA,UAAA8G,GACA,OAAAjS,KAAAkR,EACA,CACA,YAAAgB,CAAAzG,EAAA1L,GACA,MAAAoS,WAAArP,IACA,GAAAA,EAAA,CACA/C,EAAA,IAAAiD,MAAA,0CACA,MACA,CACA,IAAAoP,EACA,IACAA,EAAApS,KAAAkR,GAAA7F,qBAAA,KACA,CACA,MAAA1Q,GACAoF,EAAA,IAAAiD,MAAA,gCACA,MACA,CACA,GAAAoP,IAAApB,EAAAqB,kBAAAC,MAAA,CACAvS,GACA,KACA,CACA,IACAC,KAAAkR,GAAA3F,uBAAA6G,EAAA3G,EAAA0G,WACA,CACA,MAAAxX,GACAoF,EAAA,IAAAiD,MAAA,+BACA,CACA,GAEAuP,aAAAJ,WACA,CACA,mCAAAK,CAAAC,EAAAC,EAAAC,GACA,GAAApB,WAAAkB,GAAA,CACA,OAAAxP,SAAA,IAAAhB,EAAAiB,SAAApG,QAAA,GAAAiD,SAAA0S,EACA,MACA,GAAAlB,WAAAmB,GAAA,CACA,GAAAD,aAAAxQ,EAAAiB,SAAA,CACA,OAAAD,SAAAwP,EAAA3V,QAAA,GAAAiD,SAAA2S,EACA,KACA,CACA,OAAAzP,SAAA,IAAAhB,EAAAiB,SAAApG,QAAA2V,EAAA1S,SAAA2S,EACA,CACA,KACA,CACA,KAAAD,aAAAxQ,EAAAiB,UACAwP,aAAA1V,QACAuU,WAAAoB,IAAA,CACA,UAAA3P,MAAA,6BACA,CACA,OAAAC,SAAAwP,EAAA3V,QAAA4V,EAAA3S,SAAA4S,EACA,CACA,CACA,gBAAAC,CAAAhH,EAAAvE,EAAAN,EAAA8L,EAAA5P,EAAAnG,EAAAiD,GACA,IAAAiB,EAAAC,EACA,MAAA6R,EAAA9S,KAAAwS,oCAAAvP,EAAAnG,EAAAiD,GACA,MAAAiP,EAAA,CACAN,KAAA9C,EACAmH,cAAA,MACAlD,eAAA,MACAX,iBAAA7H,EACAkI,oBAAAxI,GAEA,IAAAiM,EAAA,CACAH,WACA5P,SAAA6P,EAAA7P,SACA7F,KAAA,IAAA0T,EAAAjL,oBACA4I,QAAAzO,KAAAkR,GACAlC,mBACAiE,YAAAH,EAAAhW,QACAiD,SAAA+S,EAAA/S,UAEA,GAAAC,KAAAsR,GAAA,CACA0B,EAAAhT,KAAAsR,GAAA0B,EACA,CACA,MAAAE,EAAAF,EAAA5V,KACA,MAAA0S,EAAA,CACAC,mBAAA/P,KAAAoR,GACApB,2BAAAhQ,KAAAqR,GACApB,kBAAAjP,EAAAgS,EAAAC,YAAA9C,gBAAA,MAAAnP,SAAA,EAAAA,EAAA,GACAkP,0BAAAjP,EAAA+R,EAAAC,YAAApB,yBAAA,MAAA5Q,SAAA,EAAAA,EAAA,IAEA,MAAA7D,GAAA,EAAA6T,EAAA/E,qBAAA4D,EAAAkD,EAAAhE,iBAAAgE,EAAAC,YAAAD,EAAAvE,SAKAyE,EAAA9V,OACA,IAAA+V,EAAA,KACA,IAAAC,EAAA,MACA,IAAAC,EAAA,IAAArQ,MACA5F,EAAA2P,MAAAiG,EAAA/P,SAAA,CACAyB,kBAAAzB,IACAiQ,EAAAI,KAAA,WAAArQ,EAAA,EAGA,gBAAAgC,CAAArI,GACA,GAAAuW,IAAA,MACA/V,EAAAuJ,iBAAAV,EAAAG,OAAA+I,SAAA,8BACA,CACAgE,EAAAvW,CACA,EACA,eAAAwI,CAAAE,GACA,GAAA8N,EAAA,CACA,MACA,CACAA,EAAA,KACA,GAAA9N,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACA,GAAAJ,IAAA,MACA,MAAAjN,EAAAuL,oBAAA4B,GACAL,EAAAjT,UAAA,EAAA+Q,EAAAhL,qBAAA,CACAK,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,sBACApD,SAAAqC,EAAArC,UACAiD,GACA,KACA,CACA8M,EAAAjT,SAAA,KAAAoT,EACA,CACA,KACA,CACA,MAAAjN,EAAAuL,oBAAA4B,GACAL,EAAAjT,UAAA,EAAA+Q,EAAAhL,qBAAAR,EAAAY,GACA,CAGAmN,EAAA,KACAH,EAAAI,KAAA,SAAAhO,EACA,IAEAlI,EAAA8P,YAAA2F,GACAzV,EAAA4K,YACA,OAAAkL,CACA,CACA,uBAAAM,CAAA5H,EAAAvE,EAAAN,EAAA9D,EAAAnG,EAAAiD,GACA,IAAAiB,EAAAC,EACA,MAAA6R,EAAA9S,KAAAwS,oCAAAvP,EAAAnG,EAAAiD,GACA,MAAAiP,EAAA,CACAN,KAAA9C,EACAmH,cAAA,KACAlD,eAAA,MACAX,iBAAA7H,EACAkI,oBAAAxI,GAEA,IAAAiM,EAAA,CACA/P,SAAA6P,EAAA7P,SACA7F,KAAA,IAAA0T,EAAAnL,yBAAA0B,GACAoH,QAAAzO,KAAAkR,GACAlC,mBACAiE,YAAAH,EAAAhW,QACAiD,SAAA+S,EAAA/S,UAEA,GAAAC,KAAAsR,GAAA,CACA0B,EAAAhT,KAAAsR,GAAA0B,EACA,CACA,MAAAE,EAAAF,EAAA5V,KACA,MAAA0S,EAAA,CACAC,mBAAA/P,KAAAoR,GACApB,2BAAAhQ,KAAAqR,GACApB,kBAAAjP,EAAAgS,EAAAC,YAAA9C,gBAAA,MAAAnP,SAAA,EAAAA,EAAA,GACAkP,0BAAAjP,EAAA+R,EAAAC,YAAApB,yBAAA,MAAA5Q,SAAA,EAAAA,EAAA,IAEA,MAAA7D,GAAA,EAAA6T,EAAA/E,qBAAA4D,EAAAkD,EAAAhE,iBAAAgE,EAAAC,YAAAD,EAAAvE,SAKAyE,EAAA9V,OACA,IAAA+V,EAAA,KACA,IAAAC,EAAA,MACA,IAAAC,EAAA,IAAArQ,MACA5F,EAAA2P,MAAAiG,EAAA/P,SAAA,CACAyB,kBAAAzB,IACAiQ,EAAAI,KAAA,WAAArQ,EAAA,EAGA,gBAAAgC,CAAArI,GACA,GAAAuW,IAAA,MACA/V,EAAAuJ,iBAAAV,EAAAG,OAAA+I,SAAA,8BACA,CACAgE,EAAAvW,CACA,EACA,eAAAwI,CAAAE,GACA,GAAA8N,EAAA,CACA,MACA,CACAA,EAAA,KACA,GAAA9N,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACA,GAAAJ,IAAA,MACA,MAAAjN,EAAAuL,oBAAA4B,GACAL,EAAAjT,UAAA,EAAA+Q,EAAAhL,qBAAA,CACAK,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,sBACApD,SAAAqC,EAAArC,UACAiD,GACA,KACA,CACA8M,EAAAjT,SAAA,KAAAoT,EACA,CACA,KACA,CACA,MAAAjN,EAAAuL,oBAAA4B,GACAL,EAAAjT,UAAA,EAAA+Q,EAAAhL,qBAAAR,EAAAY,GACA,CAGAmN,EAAA,KACAH,EAAAI,KAAA,SAAAhO,EACA,IAEA,OAAA4N,CACA,CACA,uBAAAO,CAAAhB,EAAAC,GACA,IAAAzP,EACA,IAAAnG,EACA,GAAA2V,aAAAxQ,EAAAiB,SAAA,CACAD,EAAAwP,EACA,GAAAC,EAAA,CACA5V,EAAA4V,CACA,KACA,CACA5V,EAAA,EACA,CACA,KACA,CACA,GAAA2V,EAAA,CACA3V,EAAA2V,CACA,KACA,CACA3V,EAAA,EACA,CACAmG,EAAA,IAAAhB,EAAAiB,QACA,CACA,OAAAD,WAAAnG,UACA,CACA,uBAAA4W,CAAA9H,EAAAvE,EAAAN,EAAA8L,EAAA5P,EAAAnG,GACA,IAAAkE,EAAAC,EACA,MAAA6R,EAAA9S,KAAAyT,wBAAAxQ,EAAAnG,GACA,MAAAkS,EAAA,CACAN,KAAA9C,EACAmH,cAAA,MACAlD,eAAA,KACAX,iBAAA7H,EACAkI,oBAAAxI,GAEA,IAAAiM,EAAA,CACAH,WACA5P,SAAA6P,EAAA7P,SACA7F,KAAA,IAAA0T,EAAAlL,yBAAAmB,GACA0H,QAAAzO,KAAAkR,GACAlC,mBACAiE,YAAAH,EAAAhW,SAEA,GAAAkD,KAAAsR,GAAA,CACA0B,EAAAhT,KAAAsR,GAAA0B,EACA,CACA,MAAAW,EAAAX,EAAA5V,KACA,MAAA0S,EAAA,CACAC,mBAAA/P,KAAAoR,GACApB,2BAAAhQ,KAAAqR,GACApB,kBAAAjP,EAAAgS,EAAAC,YAAA9C,gBAAA,MAAAnP,SAAA,EAAAA,EAAA,GACAkP,0BAAAjP,EAAA+R,EAAAC,YAAApB,yBAAA,MAAA5Q,SAAA,EAAAA,EAAA,IAEA,MAAA7D,GAAA,EAAA6T,EAAA/E,qBAAA4D,EAAAkD,EAAAhE,iBAAAgE,EAAAC,YAAAD,EAAAvE,SAKAkF,EAAAvW,OACA,IAAAgW,EAAA,MACA,IAAAC,EAAA,IAAArQ,MACA5F,EAAA2P,MAAAiG,EAAA/P,SAAA,CACA,iBAAAyB,CAAAzB,GACA0Q,EAAAL,KAAA,WAAArQ,EACA,EAEA,gBAAAgC,CAAArI,GACA+W,EAAApY,KAAAqB,EACA,EACA,eAAAwI,CAAAE,GACA,GAAA8N,EAAA,CACA,MACA,CACAA,EAAA,KACAO,EAAApY,KAAA,MACA,GAAA+J,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACA,MAAArN,EAAAuL,oBAAA4B,GACAM,EAAAL,KAAA,WAAAxC,EAAAhL,qBAAAR,EAAAY,GACA,CAGAmN,EAAA,KACAM,EAAAL,KAAA,SAAAhO,EACA,IAEAlI,EAAA8P,YAAA2F,GACAzV,EAAA4K,YACA,OAAA2L,CACA,CACA,qBAAAC,CAAAhI,EAAAvE,EAAAN,EAAA9D,EAAAnG,GACA,IAAAkE,EAAAC,EACA,MAAA6R,EAAA9S,KAAAyT,wBAAAxQ,EAAAnG,GACA,MAAAkS,EAAA,CACAN,KAAA9C,EACAmH,cAAA,KACAlD,eAAA,KACAX,iBAAA7H,EACAkI,oBAAAxI,GAEA,IAAAiM,EAAA,CACA/P,SAAA6P,EAAA7P,SACA7F,KAAA,IAAA0T,EAAApL,uBAAA2B,EAAAN,GACA0H,QAAAzO,KAAAkR,GACAlC,mBACAiE,YAAAH,EAAAhW,SAEA,GAAAkD,KAAAsR,GAAA,CACA0B,EAAAhT,KAAAsR,GAAA0B,EACA,CACA,MAAAW,EAAAX,EAAA5V,KACA,MAAA0S,EAAA,CACAC,mBAAA/P,KAAAoR,GACApB,2BAAAhQ,KAAAqR,GACApB,kBAAAjP,EAAAgS,EAAAC,YAAA9C,gBAAA,MAAAnP,SAAA,EAAAA,EAAA,GACAkP,0BAAAjP,EAAA+R,EAAAC,YAAApB,yBAAA,MAAA5Q,SAAA,EAAAA,EAAA,IAEA,MAAA7D,GAAA,EAAA6T,EAAA/E,qBAAA4D,EAAAkD,EAAAhE,iBAAAgE,EAAAC,YAAAD,EAAAvE,SAKAkF,EAAAvW,OACA,IAAAgW,EAAA,MACA,IAAAC,EAAA,IAAArQ,MACA5F,EAAA2P,MAAAiG,EAAA/P,SAAA,CACA,iBAAAyB,CAAAzB,GACA0Q,EAAAL,KAAA,WAAArQ,EACA,EACA,gBAAAgC,CAAArI,GACA+W,EAAApY,KAAAqB,EACA,EACA,eAAAwI,CAAAE,GACA,GAAA8N,EAAA,CACA,MACA,CACAA,EAAA,KACAO,EAAApY,KAAA,MACA,GAAA+J,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACA,MAAArN,EAAAuL,oBAAA4B,GACAM,EAAAL,KAAA,WAAAxC,EAAAhL,qBAAAR,EAAAY,GACA,CAGAmN,EAAA,KACAM,EAAAL,KAAA,SAAAhO,EACA,IAEA,OAAAqO,CACA,EAEArZ,EAAAuW,a,eC5ZA7T,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAuZ,2BAAA,EACA,IAAAA,GACA,SAAAA,GACAA,IAAA,0BACAA,IAAA,wBACAA,IAAA,iBACA,EAJA,CAIAA,IAAAvZ,EAAAuZ,wBAAA,I,iBCPA7W,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAwZ,yBAAAxZ,EAAAyZ,uBAAA,EACA,MAAAC,EAAA5Z,EAAA,MACA,MAAA6Z,EAAA7Z,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA8Z,EAAA9Z,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAga,0BAAAjX,UACAA,IAAA,iBAAA8W,EAAAJ,sBAAA1W,KAAA,SAEA,MAAAkX,mBAMA,kBAAAC,CAAA1X,EAAA2X,GACA,IAAAC,EAAA5X,EACA,GAAA2X,EAAA,CACAC,QAAAxU,KAAAyU,gBAAAD,EACA,CACA,MAAAE,EAAAjM,OAAAkM,YAAAH,EAAA5Y,OAAA,GACA8Y,EAAAE,WAAAL,EAAA,OACAG,EAAAG,cAAAL,EAAA5Y,OAAA,GACA4Y,EAAAM,KAAAJ,EAAA,GACA,OAAAA,CACA,CAKA,iBAAAK,CAAAC,GACA,MAAAC,EAAAD,EAAAE,UAAA,OACA,IAAAV,EAAAQ,EAAArX,MAAA,GACA,GAAAsX,EAAA,CACAT,QAAAxU,KAAAmV,kBAAAX,EACA,CACA,OAAAA,CACA,EAEA,MAAAY,wBAAAf,mBACA,qBAAAI,CAAA7X,GACA,OAAAA,CACA,CACA,kBAAA0X,CAAA1X,EAAA2X,GACA,MAAAG,EAAAjM,OAAAkM,YAAA/X,EAAAhB,OAAA,GAGA8Y,EAAAE,WAAA,KACAF,EAAAG,cAAAjY,EAAAhB,OAAA,GACAgB,EAAAkY,KAAAJ,EAAA,GACA,OAAAA,CACA,CACA,iBAAAS,CAAAvY,GACA,OAAAf,QAAA+G,OAAA,IAAAI,MAAA,uEACA,EAEA,MAAAqS,uBAAAhB,mBACA,eAAAI,CAAA7X,GACA,WAAAf,SAAA,CAAAE,EAAA6G,KACAoR,EAAAsB,QAAA1Y,GAAA,CAAAkG,EAAA4R,KACA,GAAA5R,EAAA,CACAF,EAAAE,EACA,KACA,CACA/G,EAAA2Y,EACA,IACA,GAEA,CACA,iBAAAS,CAAAvY,GACA,WAAAf,SAAA,CAAAE,EAAA6G,KACAoR,EAAAuB,QAAA3Y,GAAA,CAAAkG,EAAA4R,KACA,GAAA5R,EAAA,CACAF,EAAAE,EACA,KACA,CACA/G,EAAA2Y,EACA,IACA,GAEA,EAEA,MAAAc,oBAAAnB,mBACA,eAAAI,CAAA7X,GACA,WAAAf,SAAA,CAAAE,EAAA6G,KACAoR,EAAAyB,KAAA7Y,GAAA,CAAAkG,EAAA4R,KACA,GAAA5R,EAAA,CACAF,EAAAE,EACA,KACA,CACA/G,EAAA2Y,EACA,IACA,GAEA,CACA,iBAAAS,CAAAvY,GACA,WAAAf,SAAA,CAAAE,EAAA6G,KACAoR,EAAA0B,MAAA9Y,GAAA,CAAAkG,EAAA4R,KACA,GAAA5R,EAAA,CACAF,EAAAE,EACA,KACA,CACA/G,EAAA2Y,EACA,IACA,GAEA,EAEA,MAAAiB,uBAAAtB,mBACA,WAAAvU,CAAA8V,GACAnS,QACAzD,KAAA4V,iBACA,CACA,eAAAnB,CAAA7X,GACA,OAAAf,QAAA+G,OAAA,IAAAI,MAAA,mEAAAhD,KAAA4V,mBACA,CACA,iBAAAT,CAAAvY,GAEA,OAAAf,QAAA+G,OAAA,IAAAI,MAAA,qCAAAhD,KAAA4V,mBACA,EAEA,SAAAC,sBAAAD,GACA,OAAAA,GACA,eACA,WAAAR,gBACA,cACA,WAAAC,eACA,WACA,WAAAG,YACA,QACA,WAAAG,eAAAC,GAEA,CACA,MAAA7B,0BAAAG,EAAA4B,WACA,WAAAhW,CAAAiW,EAAAC,GACA,IAAAhV,EACAyC,QACAzD,KAAAgW,qBACAhW,KAAAiW,gBAAA,IAAAb,gBACApV,KAAAkW,mBAAA,IAAAd,gBACApV,KAAAmW,4BAAA,WACA,MAAAC,EAAAL,EAAA,sCACA,GAAAK,IAAA9R,UAAA,CACA,GAAA8P,0BAAAgC,GAAA,CACA,MAAAC,EAAApC,EAAAJ,sBAAAuC,GACA,MAAAE,GAAAtV,EAAAgV,EAAAO,iCAAA,MAAAvV,SAAA,SAAAA,EAAA0Q,MAAA,KAQA,IAAA4E,GACAA,EAAAE,SAAAH,GAAA,CACArW,KAAAmW,4BAAAE,EACArW,KAAAiW,gBAAAJ,sBAAA7V,KAAAmW,4BACA,CACA,KACA,CACAhC,EAAAnW,IAAAiI,EAAAwQ,aAAAC,MAAA,yEAAAN,IACA,CACA,CACA,CACA,kBAAAO,CAAA1T,GACA,MAAAF,QAAAE,EACAF,EAAAvH,IAAA,gDACAuH,EAAAvH,IAAA,8BAEA,GAAAwE,KAAAmW,8BAAA,YACApT,EAAA6T,OAAA,gBACA,KACA,CACA7T,EAAAvH,IAAA,gBAAAwE,KAAAmW,4BACA,CACA,OAAApT,CACA,CACA,eAAA8T,CAAA5T,GACA,MAAA6T,EAAA7T,EAAA8T,IAAA,iBACA,GAAAD,EAAAlb,OAAA,GACA,MAAA4L,EAAAsP,EAAA,GACA,UAAAtP,IAAA,UACAxH,KAAAkW,mBAAAL,sBAAArO,EACA,CACA,CACAvE,EAAA2T,OAAA,iBAGA,MAAAI,EAAA/T,EAAA8T,IAAA,2BACA,GAAAC,EAAA,CACAhX,KAAAgW,mBAAAO,8BACAS,EACA,MAAAV,EAAAU,EAAAtF,MAAA,KACA,IAAA4E,EAAAE,SAAAxW,KAAAmW,6BAAA,CACAnW,KAAAiW,gBAAA,IAAAb,gBACApV,KAAAmW,4BAAA,UACA,CACA,CACAlT,EAAA2T,OAAA,wBACA,OAAA3T,CACA,CACA,iBAAAiK,CAAAtQ,GACA,IAAAoE,EAIA,MAAAiW,QAAAra,EACA,IAAA2X,EACA,GAAAvU,KAAAiW,2BAAAb,gBAAA,CACAb,EAAA,KACA,KACA,CACAA,KAAAvT,EAAAiW,EAAAtP,SAAA,MAAA3G,SAAA,EAAAA,EAAA,SACA,CACA,OACApE,cAAAoD,KAAAiW,gBAAA3B,aAAA2C,EAAAra,QAAA2X,GACA5M,MAAAsP,EAAAtP,MAEA,CACA,oBAAAuP,CAAAta,GAKA,OAAAoD,KAAAkW,mBAAAnB,kBAAAnY,EACA,EAEAtC,EAAAyZ,oCACA,MAAAD,yBACA,WAAAhU,CAAA2O,EAAA3R,GACAkD,KAAAlD,UACAkD,KAAAgW,mBAAA,EACA,CACA,YAAAmB,GACA,WAAApD,kBAAA/T,KAAAlD,QAAAkD,KAAAgW,mBACA,EAEA1b,EAAAwZ,iD,cC9OA9W,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+X,uBAAA,EACA,IAAAA,GACA,SAAAA,GACAA,IAAA,kBACAA,IAAA,8BACAA,IAAA,oBACAA,IAAA,4CACAA,IAAA,yBACA,EANA,CAMAA,IAAA/X,EAAA+X,oBAAA,I,cCTArV,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA8c,mCAAA9c,EAAA+c,gCAAA/c,EAAAgd,UAAAhd,EAAAmc,aAAAnc,EAAA8L,YAAA,EACA,IAAAA,GACA,SAAAA,GACAA,IAAA,cACAA,IAAA,4BACAA,IAAA,wBACAA,IAAA,0CACAA,IAAA,4CACAA,IAAA,4BACAA,IAAA,sCACAA,IAAA,4CACAA,IAAA,8CACAA,IAAA,gDACAA,IAAA,yBACAA,IAAA,mCACAA,IAAA,qCACAA,IAAA,2BACAA,IAAA,iCACAA,IAAA,6BACAA,IAAA,wCACA,EAlBA,CAkBAA,IAAA9L,EAAA8L,SAAA,KACA,IAAAqQ,GACA,SAAAA,GACAA,IAAA,oBACAA,IAAA,kBACAA,IAAA,oBACAA,IAAA,iBACA,EALA,CAKAA,IAAAnc,EAAAmc,eAAA,KAKA,IAAAa,GACA,SAAAA,GACAA,IAAA,0BACAA,IAAA,kDACAA,IAAA,sDACAA,IAAA,kCAEAA,IAAA,6BACA,EAPA,CAOAA,IAAAhd,EAAAgd,YAAA,KAEAhd,EAAA+c,iCAAA,EAEA/c,EAAA8c,mCAAA,W,iBC7CApa,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAid,oCAAA,EACA,MAAAtR,EAAA7L,EAAA,KACA,MAAAod,EAAA,CACAvR,EAAAG,OAAAmN,GACAtN,EAAAG,OAAAqR,iBACAxR,EAAAG,OAAAsR,UACAzR,EAAAG,OAAAuR,eACA1R,EAAAG,OAAAwR,oBACA3R,EAAAG,OAAAyR,QACA5R,EAAAG,OAAA0R,aACA7R,EAAAG,OAAA2R,WAEA,SAAAR,+BAAApR,EAAAE,GACA,GAAAmR,EAAAhB,SAAArQ,GAAA,CACA,OACAA,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,sCAAAF,KAAAF,EAAAG,OAAAD,MAAAE,IAEA,KACA,CACA,OAAAF,OAAAE,UACA,CACA,CACA/L,EAAAid,6D,cCxBAva,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA0d,iBAAA1d,EAAA2d,mBAAA3d,EAAA4d,yBAAA5d,EAAA6d,iBAAA,EACA,SAAAA,eAAAC,GACA,IAAAC,EAAA1J,SACA,UAAAlD,KAAA2M,EAAA,CACA,MAAAE,EAAA7M,aAAAjL,KAAAiL,EAAA7J,UAAA6J,EACA,GAAA6M,EAAAD,EAAA,CACAA,EAAAC,CACA,CACA,CACA,OAAAD,CACA,CACA/d,EAAA6d,wBACA,MAAAI,EAAA,CACA,QACA,UACA,aACA,iBAEA,SAAAL,yBAAAzM,GACA,MAAA/J,GAAA,IAAAlB,MAAAoB,UACA,GAAA6J,aAAAjL,KAAA,CACAiL,IAAA7J,SACA,CACA,MAAA4W,EAAA5Y,KAAAD,IAAA8L,EAAA/J,EAAA,GACA,UAAA+W,EAAAC,KAAAH,EAAA,CACA,MAAAI,EAAAH,EAAAE,EACA,GAAAC,EAAA,KACA,OAAAC,OAAAhZ,KAAAiZ,KAAAF,IAAAF,CACA,CACA,CACA,UAAAzV,MAAA,oCACA,CACA1I,EAAA4d,kDAOA,MAAAY,EAAA,WAUA,SAAAb,mBAAAxM,GACA,MAAAsN,EAAAtN,aAAAjL,KAAAiL,EAAA7J,UAAA6J,EACA,MAAA/J,GAAA,IAAAlB,MAAAoB,UACA,MAAAoX,EAAAD,EAAArX,EACA,GAAAsX,EAAA,GACA,QACA,MACA,GAAAA,EAAAF,EAAA,CACA,OAAAnK,QACA,KACA,CACA,OAAAqK,CACA,CACA,CACA1e,EAAA2d,sCACA,SAAAD,iBAAAvM,GACA,GAAAA,aAAAjL,KAAA,CACA,OAAAiL,EAAAwN,aACA,KACA,CACA,MAAAC,EAAA,IAAA1Y,KAAAiL,GACA,GAAA7D,OAAAC,MAAAqR,EAAAtX,WAAA,CACA,SAAA6J,CACA,KACA,CACA,OAAAyN,EAAAD,aACA,CACA,CACA,CACA3e,EAAA0d,iC,eC/EAhb,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA6e,WAAA7e,EAAA8e,aAAA9e,EAAA+e,kBAAA,EACA,SAAAA,aAAAC,GACA,OACAC,QAAAD,EAAA,MACAE,MAAAF,EAAA,UAEA,CACAhf,EAAA+e,0BACA,SAAAD,aAAAK,GACA,OAAAA,EAAAF,QAAA,IAAAE,EAAAD,MAAA,KACA,CACAlf,EAAA8e,0BACA,SAAAD,WAAAva,GACA,cAAAA,EAAA2a,UAAA,iBAAA3a,EAAA4a,QAAA,QACA,CACAlf,EAAA6e,qB,eChBAnc,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAof,aAAApf,EAAA8U,qBAAA,EACA,SAAAA,gBAAA9I,GACA,GAAAA,aAAAtD,MAAA,CACA,OAAAsD,EAAA1J,OACA,KACA,CACA,OAAAgc,OAAAtS,EACA,CACA,CACAhM,EAAA8U,gCACA,SAAAsK,aAAApT,GACA,UAAAA,IAAA,UACAA,IAAA,MACA,SAAAA,UACAA,EAAAH,OAAA,UACA,OAAAG,EAAAH,IACA,KACA,CACA,WACA,CACA,CACA7L,EAAAof,yB,iBCtCA1c,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAqf,sBAAArf,EAAAwE,qBAAAxE,EAAAsf,mBAAAtf,EAAAwb,WAAAxb,EAAAuf,eAAAvf,EAAAwf,YAAAxf,EAAAyf,kBAAAzf,EAAA0f,yBAAA1f,EAAA2f,YAAA3f,EAAA4f,mBAAA5f,EAAA6f,iBAAA7f,EAAA8f,0BAAA9f,EAAA+f,iBAAA/f,EAAAggB,6BAAAhgB,EAAAigB,yBAAAjgB,EAAAkgB,uBAAAlgB,EAAAmgB,yBAAAngB,EAAAogB,gCAAApgB,EAAA8E,eAAA9E,EAAA8e,aAAA9e,EAAAqgB,YAAArgB,EAAAsgB,eAAAtgB,EAAAugB,iBAAAvgB,EAAA0D,IAAA1D,EAAAwgB,WAAA,EACA,IAAAC,EAAA3gB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,SAAA0gB,WAAA,KAAAjE,IAAA,kBAAAgE,EAAAD,KAAA,IACA9d,OAAA2B,eAAArE,EAAA,OAAA0gB,WAAA,KAAAjE,IAAA,kBAAAgE,EAAA/c,GAAA,IACA,IAAAid,EAAA7gB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,oBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAkE,EAAAJ,gBAAA,IACA7d,OAAA2B,eAAArE,EAAA,kBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAkE,EAAAL,cAAA,IACA,IAAAM,EAAA9gB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,eAAA0gB,WAAA,KAAAjE,IAAA,kBAAAmE,EAAAP,WAAA,IACA,IAAAQ,EAAA/gB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,gBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAoE,EAAA/B,YAAA,IACA,IAAAgC,EAAAhhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,kBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAqE,EAAAhc,cAAA,IACA,IAAAic,EAAAjhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,mCAAA0gB,WAAA,KAAAjE,IAAA,kBAAAsE,EAAAX,+BAAA,IACA1d,OAAA2B,eAAArE,EAAA,4BAAA0gB,WAAA,KAAAjE,IAAA,kBAAAsE,EAAAZ,wBAAA,IACAzd,OAAA2B,eAAArE,EAAA,0BAAA0gB,WAAA,KAAAjE,IAAA,kBAAAsE,EAAAb,sBAAA,IACAxd,OAAA2B,eAAArE,EAAA,4BAAA0gB,WAAA,KAAAjE,IAAA,kBAAAsE,EAAAd,wBAAA,IACAvd,OAAA2B,eAAArE,EAAA,gCAAA0gB,WAAA,KAAAjE,IAAA,kBAAAsE,EAAAf,4BAAA,IACA,IAAAgB,EAAAlhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,oBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAuE,EAAAjB,gBAAA,IACA,IAAAkB,EAAAnhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,6BAAA0gB,WAAA,KAAAjE,IAAA,kBAAAwE,EAAAnB,yBAAA,IACApd,OAAA2B,eAAArE,EAAA,oBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAwE,EAAApB,gBAAA,IACAnd,OAAA2B,eAAArE,EAAA,sBAAA0gB,WAAA,KAAAjE,IAAA,kBAAAwE,EAAArB,kBAAA,IACAld,OAAA2B,eAAArE,EAAA,eAAA0gB,WAAA,KAAAjE,IAAA,kBAAAwE,EAAAtB,WAAA,IACA,IAAAuB,EAAAphB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,4BAAA0gB,WAAA,KAAAjE,IAAA,kBAAAyE,EAAAxB,wBAAA,IACA,IAAAyB,EAAArhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,qBAAA0gB,WAAA,KAAAjE,IAAA,kBAAA0E,EAAA1B,iBAAA,IACA/c,OAAA2B,eAAArE,EAAA,eAAA0gB,WAAA,KAAAjE,IAAA,kBAAA0E,EAAA3B,WAAA,IACA9c,OAAA2B,eAAArE,EAAA,kBAAA0gB,WAAA,KAAAjE,IAAA,kBAAA0E,EAAA5B,cAAA,IACA,IAAA3F,EAAA9Z,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,cAAA0gB,WAAA,KAAAjE,IAAA,kBAAA7C,EAAA4B,UAAA,IACA,IAAA4F,EAAAthB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,sBAAA0gB,WAAA,KAAAjE,IAAA,kBAAA2E,EAAA9B,kBAAA,IACA,IAAA+B,EAAAvhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,wBAAA0gB,WAAA,KAAAjE,IAAA,kBAAA4E,EAAA7c,oBAAA,IACA,IAAA8c,EAAAxhB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,yBAAA0gB,WAAA,KAAAjE,IAAA,kBAAA6E,EAAAjC,qBAAA,G,eCxBA3c,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAsf,mBAAAtf,EAAAuhB,iBAAA,EACA,MAAAA,YACA,WAAA/b,CAAAgc,GACA9b,KAAA8b,SACA,CACA,YAAAnF,CAAA1T,GACA,IAAA8Y,EAAA9Y,EACA,QAAAtH,EAAA,EAAAA,EAAAqE,KAAA8b,QAAAlgB,OAAAD,IAAA,CACAogB,EAAA/b,KAAA8b,QAAAngB,GAAAgb,aAAAoF,EACA,CACA,OAAAA,CACA,CACA,eAAAlF,CAAA5T,GACA,IAAA8Y,EAAA9Y,EACA,QAAAtH,EAAAqE,KAAA8b,QAAAlgB,OAAA,EAAAD,GAAA,EAAAA,IAAA,CACAogB,EAAA/b,KAAA8b,QAAAngB,GAAAkb,gBAAAkF,EACA,CACA,OAAAA,CACA,CACA,WAAA7O,CAAAtQ,GACA,IAAAmf,EAAAnf,EACA,QAAAjB,EAAA,EAAAA,EAAAqE,KAAA8b,QAAAlgB,OAAAD,IAAA,CACAogB,EAAA/b,KAAA8b,QAAAngB,GAAAuR,YAAA6O,EACA,CACA,OAAAA,CACA,CACA,cAAA7E,CAAAta,GACA,IAAAmf,EAAAnf,EACA,QAAAjB,EAAAqE,KAAA8b,QAAAlgB,OAAA,EAAAD,GAAA,EAAAA,IAAA,CACAogB,EAAA/b,KAAA8b,QAAAngB,GAAAub,eAAA6E,EACA,CACA,OAAAA,CACA,CACA,eAAAC,CAAA1W,GACA,IAAAyW,EAAAzW,EACA,QAAA3J,EAAAqE,KAAA8b,QAAAlgB,OAAA,EAAAD,GAAA,EAAAA,IAAA,CACAogB,EAAA/b,KAAA8b,QAAAngB,GAAAqgB,gBAAAD,EACA,CACA,OAAAA,CACA,CACA,IAAAxgB,CAAAugB,GACA9b,KAAA8b,QAAAG,WAAAH,EACA,CACA,UAAAI,GACA,OAAAlc,KAAA8b,OACA,EAEAxhB,EAAAuhB,wBACA,MAAAjC,mBACA,WAAA9Z,CAAAqc,GACAnc,KAAAmc,WACA,CACA,IAAA5gB,CAAA6gB,GACApc,KAAAmc,UAAAF,WAAAG,EACA,CACA,KAAAC,GACA,WAAAzC,mBAAA,IAAA5Z,KAAAmc,WACA,CACA,YAAAhF,GACA,WAAA0E,YAAA7b,KAAAmc,UAAAlgB,KAAAqgB,KAAAnF,iBACA,EAEA7c,EAAAsf,qC,eC/DA5c,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAwb,gBAAA,EACA,MAAAA,WACA,kBAAAa,CAAA1T,GACA,OAAAA,CACA,CACA,eAAA4T,CAAA5T,GACA,OAAAA,CACA,CACA,iBAAAiK,CAAAtQ,GACA,OAAAA,CACA,CACA,oBAAAsa,CAAAta,GACA,OAAAA,CACA,CACA,eAAAof,CAAA1W,GACA,OAAAA,CACA,EAEAhL,EAAAwb,qB,gBCnBA9Y,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAiiB,qBAAAjiB,EAAAkiB,kBAAA,EACA,MAAAzB,EAAA3gB,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6gB,EAAA7gB,EAAA,MACA,MAAAqiB,EAAAriB,EAAA,MACA,MAAAsiB,EAAAtiB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAAuiB,EAAAviB,EAAA,MACA,MAAAwiB,EAAAxiB,EAAA,MACA,MAAAyiB,EAAA,QACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAAC,EACA,CACA,SAAAC,eACA,IAAAC,EAAA,GACA,IAAAC,EAAA,GAKA,GAAApiB,QAAAC,IAAAoiB,WAAA,CACAD,EAAA,aACAD,EAAAniB,QAAAC,IAAAoiB,UACA,MACA,GAAAriB,QAAAC,IAAAqiB,YAAA,CACAF,EAAA,cACAD,EAAAniB,QAAAC,IAAAqiB,WACA,MACA,GAAAtiB,QAAAC,IAAAsiB,WAAA,CACAH,EAAA,aACAD,EAAAniB,QAAAC,IAAAsiB,UACA,KACA,CACA,QACA,CACA,IAAAC,EACA,IACAA,EAAA,IAAAV,EAAAW,IAAAN,EACA,CACA,MAAAriB,IACA,EAAAogB,EAAA/c,KAAAiI,EAAAwQ,aAAAC,MAAA,0BAAAuG,cACA,QACA,CACA,GAAAI,EAAAE,WAAA,UACA,EAAAxC,EAAA/c,KAAAiI,EAAAwQ,aAAAC,MAAA,IAAA2G,EAAAE,+CACA,QACA,CACA,IAAAC,EAAA,KACA,GAAAH,EAAAI,SAAA,CACA,GAAAJ,EAAAK,SAAA,EACA,EAAA3C,EAAA/c,KAAAiI,EAAAwQ,aAAAkH,KAAA,+BACAH,EAAA,GAAAH,EAAAI,YAAAJ,EAAAK,UACA,KACA,CACAF,EAAAH,EAAAI,QACA,CACA,CACA,MAAAG,EAAAP,EAAAO,SACA,IAAAC,EAAAR,EAAAQ,KAIA,GAAAA,IAAA,IACAA,EAAA,IACA,CACA,MAAA9B,EAAA,CACAnK,QAAA,GAAAgM,KAAAC,KAEA,GAAAL,EAAA,CACAzB,EAAAvY,MAAAga,CACA,CACA1C,MAAA,gBAAAiB,EAAAnK,QAAA,gCAAAqL,GACA,OAAAlB,CACA,CACA,SAAA+B,qBAEA,IAAAC,EAAAljB,QAAAC,IAAAkjB,cACA,IAAAf,EAAA,gBACA,IAAAc,EAAA,CACAA,EAAAljB,QAAAC,IAAAmjB,SACAhB,EAAA,UACA,CACA,GAAAc,EAAA,CACAjD,MAAA,oDAAAmC,GACA,OAAAc,EAAArM,MAAA,IACA,KACA,CACA,QACA,CACA,CACA,SAAA8K,aAAAzR,EAAAjO,GACA,IAAAkE,EACA,MAAAkd,EAAA,CACAnT,SACAoT,aAAA,IAEA,KAAAnd,EAAAlE,EAAA,mCAAAkE,SAAA,EAAAA,EAAA,QACA,OAAAkd,CACA,CACA,GAAAnT,EAAAqT,SAAA,QACA,OAAAF,CACA,CACA,MAAAG,EAAAtB,eACA,IAAAsB,EAAAzM,QAAA,CACA,OAAAsM,CACA,CACA,MAAAI,GAAA,EAAApD,EAAAqD,eAAAxT,EAAA2D,MACA,IAAA4P,EAAA,CACA,OAAAJ,CACA,CACA,MAAAM,EAAAF,EAAAzS,KACA,UAAAA,KAAAiS,qBAAA,CACA,GAAAjS,IAAA2S,EAAA,CACA1D,MAAA,mDAAAI,EAAAP,aAAA5P,IACA,OAAAmT,CACA,CACA,CACA,MAAAC,EAAA,CACA,8BAAAjD,EAAAP,aAAA5P,IAEA,GAAAsT,EAAA7a,MAAA,CACA2a,EAAA,2BAAAE,EAAA7a,KACA,CACA,OACAuH,OAAA,CACAqT,OAAA,MACA1P,KAAA2P,EAAAzM,SAEAuM,eAEA,CACA7jB,EAAAkiB,0BACA,SAAAD,qBAAA3K,EAAAmE,EAAAhM,GACA,IAAA/I,EACA,kCAAA+U,GAAA,CACA,OAAAla,QAAAE,QAAA,GACA,CACA,MAAA0iB,EAAA1I,EAAA,4BACA,MAAA2I,GAAA,EAAAxD,EAAAyD,UAAAF,GACA,GAAAC,IAAA,MACA,OAAA7iB,QAAAE,QAAA,GACA,CACA,MAAA6iB,GAAA,EAAA1D,EAAAqD,eAAAG,EAAAhQ,MACA,GAAAkQ,IAAA,MACA,OAAA/iB,QAAAE,QAAA,GACA,CACA,MAAAuiB,EAAA,GAAAM,EAAA/S,SAAA7K,EAAA4d,EAAAf,QAAA,MAAA7c,SAAA,EAAAA,EAAA4b,EAAAiC,eACA,MAAA/hB,EAAA,CACA8O,OAAA,UACA8C,KAAA4P,GAEA,MAAAvb,EAAA,CACA+b,KAAAR,GAGA,MAAA/C,EAAAwD,wBAAAnN,GAAA,CACA9U,EAAA+O,KAAA+F,EAAA/F,KACA/O,EAAA+gB,KAAAjM,EAAAiM,IACA,KACA,CACA/gB,EAAAkiB,WAAApN,EAAAlD,IACA,CACA,+BAAAqH,EAAA,CACAhT,EAAA,uBACA,SACA0F,OAAAwW,KAAAlJ,EAAA,4BAAAmJ,SAAA,SACA,CACApiB,EAAAiG,UACA,MAAAoc,GAAA,EAAA5D,EAAAnB,2BAAAxI,GACAkJ,MAAA,eAAAqE,EAAA,kBAAAriB,EAAA4R,MACA,WAAA7S,SAAA,CAAAE,EAAA6G,KACA,MAAAwc,EAAA3C,EAAA2C,QAAAtiB,GACAsiB,EAAAC,KAAA,YAAAC,EAAAC,EAAAC,KACA,IAAAxe,EACAoe,EAAAK,qBACAF,EAAAE,qBACA,GAAAH,EAAAI,aAAA,KACA5E,MAAA,6BACAhe,EAAA4R,KACA,kBACAyQ,GACA,qBAAApV,EAAA,CAKA,MAAA4V,GAAA,EAAA1E,EAAA2E,qBAAAlB,GACA,MAAAJ,GAAA,EAAApD,EAAAqD,eAAAoB,GACA,MAAAE,GAAA7e,EAAAsd,IAAA,MAAAA,SAAA,SAAAA,EAAAzS,QAAA,MAAA7K,SAAA,EAAAA,EAAA2e,EACA,MAAAG,EAAApD,EAAAqD,QAAA/iB,OAAAwJ,OAAA,CAAAqF,KAAAgU,EAAAG,WAAAH,EAAAN,UAAAxV,IAAA,KACA+Q,MAAA,gDACAhe,EAAA4R,KACA,kBACAyQ,GACApjB,EAAA,CAAAwjB,OAAAO,EAAArB,WAAAC,GAAA,IAEAoB,EAAAG,GAAA,SAAA3Z,IACAwU,MAAA,2CACAhe,EAAA4R,KACA,kBACAyQ,EACA,eACA7Y,EAAA1J,SACAgG,GAAA,GAEA,KACA,CACAkY,MAAA,sDACAhe,EAAA4R,KACA,kBACAyQ,GACApjB,EAAA,CACAwjB,SACAd,WAAAC,GAEA,CACA,KACA,EACA,EAAA3D,EAAA/c,KAAAiI,EAAAwQ,aAAAC,MAAA,wBACA5Z,EAAA4R,KACA,kBACAyQ,EACA,gBACAG,EAAAI,YACA9c,GACA,KAEAwc,EAAAC,KAAA,SAAAvc,IACAsc,EAAAK,sBACA,EAAA1E,EAAA/c,KAAAiI,EAAAwQ,aAAAC,MAAA,8BACAyI,EACA,eACArc,EAAAlG,SACAgG,GAAA,IAEAwc,EAAAc,KAAA,GAEA,CACA5lB,EAAAiiB,yC,uBCjPA4D,EAAA,CAAAvhB,MAAA,MACAuhB,EAAA7lB,EAAA8lB,GAAAD,EAAA7lB,EAAA+lB,GAAAF,QAAA7lB,EAAAgmB,GAAAhmB,EAAAimB,GAAAJ,EAAA7lB,EAAAkmB,GAAAL,sCAAA7lB,EAAAmmB,GAAAN,EAAA7lB,EAAAomB,GAAAP,OAAA,EACA,MAAA/X,EAAAhO,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA3O,EAAApG,eAAA,GACA,MAAA+O,EAAA3W,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAAhG,EAAAnG,qBAAA,GACA,MAAAqJ,EAAA7Z,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA9C,EAAAJ,qBAAA,GACA,MAAA7C,EAAA5W,EAAA,KACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA/F,EAAAqB,iBAAA,GACA,MAAAxH,EAAAzQ,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAAlM,EAAA3C,kBAAA,GACA,MAAAyY,EAAAvmB,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA4J,EAAA9P,MAAA,GACA,MAAA5K,EAAA7L,EAAA,KACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA9Q,EAAAwQ,YAAA,GACAzZ,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAA9Q,EAAAG,MAAA,IACA+Z,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA9Q,EAAAqR,SAAA,GACA,MAAAnD,EAAA/Z,EAAA,MACA,MAAAwmB,EAAAxmB,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA6J,EAAAC,qBAAA,GACAV,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA6J,EAAAE,qBAAA,GACAX,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA6J,EAAAE,qBAAA,GACA,MAAA7e,EAAA7H,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAA9U,EAAAiB,QAAA,IACA,MAAA6d,EAAA3mB,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAAgK,EAAAC,MAAA,GACA,MAAAC,EAAA7mB,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAAkK,EAAAC,iBAAA,GACA,MAAAC,EAAA/mB,EAAA,MACA4C,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAAoK,EAAAC,aAAA,IAGAjB,EAAA,CAQAkB,0BAAA,CAAAlX,KAAAxB,IACAA,EAAA2Y,QAAA,CAAAC,EAAAtd,IAAAsd,EAAAvd,QAAAC,IAAAkG,GASAqX,uBAAA,CAAAC,KAAAC,IACAA,EAAAJ,QAAA,CAAAC,EAAAtd,IAAAsd,EAAAvd,QAAAC,IAAAwd,GAGA9X,eAAAkB,EAAA3C,mBAAAyB,eACAd,UAAAgC,EAAA3C,mBAAAW,UACAa,wBAAAmB,EAAA3C,mBAAAwB,wBAEArH,4BAAA+F,EAAApG,gBAAAK,4BACAG,2BAAA4F,EAAApG,gBAAAQ,2BACAa,YAAA+E,EAAApG,gBAAAqB,aAMA,MAAAse,YAAAxf,KAAAgJ,QACAgV,EAAAwB,YACA,MAAAC,mBAAA,CAAAzf,EAAAsJ,EAAA1L,IAAAoC,EAAA+P,aAAAzG,EAAA1L,GACAogB,EAAAyB,mBAIA,MAAAC,WAAA,CAAAjjB,EAAA9B,KACA,UAAAkG,MAAA,4FAEAmd,EAAA0B,WACA,MAAAC,KAAA,CAAAC,EAAAC,EAAAllB,KACA,UAAAkG,MAAA,4FAEAmd,EAAA2B,KACA,MAAAG,UAAA9mB,IACAgZ,EAAA8N,UAAA9mB,EAAA,EAEAglB,EAAA8B,UACA,MAAAC,gBAAAC,IACAhO,EAAAiO,mBAAAD,EAAA,EAEAhC,EAAA+B,gBACA,MAAAG,iBAAAlgB,GACAwe,EAAA9P,OAAA5T,UAAAgV,WAAA7U,KAAA+E,GAEAge,EAAAkC,iBACA,IAAApR,EAAA7W,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA9F,EAAA5E,eAAA,GACArP,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAA9F,EAAA7E,gBAAA,IACApP,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAA9F,EAAA9E,gBAAA,IACAgU,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA9F,EAAA3E,6BAAA,GACA,IAAAgW,EAAAloB,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAAuL,EAAAC,4BAAA,GACApC,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAAuL,EAAAE,mBAAA,GACA,IAAA7G,EAAAvhB,EAAA,MACA+lB,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA4E,EAAA9c,wBAAA,GACA,IAAA4jB,EAAAroB,EAAA,KACA4C,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAA0L,EAAAC,qBAAA,IACAvC,EAAA,CAAAnF,WAAA,KAAAjE,IAAA,kBAAA0L,EAAAE,gBAAA,GACA3lB,OAAA2B,eAAArE,EAAA,MAAA0gB,WAAA,KAAAjE,IAAA,kBAAA0L,EAAAG,sBAAA,IACA,MAAAC,EAAAzoB,EAAA,MACA+lB,EAAA0C,EACA,MAAAC,EAAA1oB,EAAA,MACA,MAAA2oB,EAAA3oB,EAAA,MACA,MAAA4oB,EAAA5oB,EAAA,MACA,MAAA6oB,EAAA7oB,EAAA,MACA,MAAA8oB,EAAA9oB,EAAA,MACA,MAAA+oB,EAAA/oB,EAAA,MACA,MAAAgpB,EAAAhpB,EAAA,MACA,MACA0oB,EAAAO,QACAN,EAAAM,QACAL,EAAAK,QACAJ,EAAAI,QACAH,EAAAG,QACAF,EAAAE,QACAD,EAAAC,OACA,EARA,E,iBCrHArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA4Q,qBAAA,EACA,MAAAL,EAAAzQ,EAAA,MACA,MAAAkpB,EAAAlpB,EAAA,MACA,MAAAmpB,EAAAnpB,EAAA,MACA,MAAAqhB,EAAArhB,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAshB,EAAAthB,EAAA,MACA,MAAAopB,EAAAppB,EAAA,MACA,MAAA6gB,EAAA7gB,EAAA,MACA,MAAA2gB,EAAA3gB,EAAA,MACA,MAAAqpB,EAAArpB,EAAA,KACA,MAAAspB,EAAAtpB,EAAA,KACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAA4W,EAAA5W,EAAA,KACA,MAAAkoB,EAAAloB,EAAA,MACA,MAAAupB,EAAAvpB,EAAA,KACA,MAAAwpB,EAAAxpB,EAAA,KACA,MAAAypB,EAAAzpB,EAAA,MACA,MAAA0pB,EAAA1pB,EAAA,KACA,MAAA2pB,EAAA3pB,EAAA,MACA,MAAA4pB,EAAA5pB,EAAA,MACA,MAAAwhB,EAAAxhB,EAAA,MAIA,MAAA0e,EAAA,WACA,MAAAmL,EAAA,IAEA,MAAAC,EAAA,UACA,MAAAC,EAAA,IAAAC,IACA,MAAAC,EAAA,MACA,MAAAC,EAAA,MACA,MAAAC,iCAAA3I,EAAAjC,sBACA,WAAA7Z,CAAA0kB,EAAA/V,GACAhL,MAAA+gB,GACAxkB,KAAAyO,UACAzO,KAAAykB,SAAA,EACAzkB,KAAA0kB,wBAAA,CAAAC,EAAAC,EAAAxS,EAAAyS,KACApW,EAAAqW,kBAAAD,EAAA,EAEAL,EAAAO,6BAAA/kB,KAAA0kB,wBACA,CACA,GAAA5iB,GACA9B,KAAAglB,MAAAljB,MACA9B,KAAAykB,UAAA,CACA,CACA,KAAArjB,GACApB,KAAAglB,MAAA5jB,QACApB,KAAAykB,UAAA,EACA,GAAAzkB,KAAAykB,UAAA,GACAzkB,KAAAglB,MAAAC,gCAAAjlB,KAAA0kB,yBACA1kB,KAAAyO,QAAAyW,wBAAAllB,KACA,CACA,EAEA,MAAAkL,gBACA,WAAApL,CAAAiL,EAAAC,EAAAlO,GACA,IAAAkE,EAAAC,EAAAyM,EAAAC,EAAAK,EAAAC,EAAAkX,EAAAC,EACAplB,KAAAgL,cACAhL,KAAAlD,UACAkD,KAAAqlB,kBAAArU,EAAAqB,kBAAAiT,KACAtlB,KAAAulB,cAAA,IAAA9J,EAAA1B,kBAKA/Z,KAAAwlB,qBAAA,GACAxlB,KAAAylB,UAAA,GACAzlB,KAAA0lB,0BAAA,GACA1lB,KAAA2lB,eAAA,KAQA3lB,KAAA4lB,uBAAA,KACA5lB,KAAA6lB,mBAAA,IAAAC,IACA9lB,KAAA+lB,UAAA,EACA/lB,KAAAgmB,UAAA,KAEAhmB,KAAAimB,gBAAA,KACAjmB,KAAAkmB,YAAA,IAAA5D,EAAA6D,oBACAnmB,KAAAomB,gBAAA,IAAA9D,EAAA+D,wBAMArmB,KAAAsmB,gBAAA1mB,KAAA2mB,MAAA3mB,KAAAC,SAAA+H,OAAA4e,kBACA,UAAAzb,IAAA,UACA,UAAArC,UAAA,kCACA,CACA,KAAAsC,aAAAH,EAAA3C,oBAAA,CACA,UAAAQ,UAAA,0DACA,CACA,GAAA5L,EAAA,CACA,UAAAA,IAAA,UACA,UAAA4L,UAAA,oCACA,CACA,CACA1I,KAAAymB,eAAA1b,EACA,MAAA2b,GAAA,EAAAxL,EAAAyD,UAAA5T,GACA,GAAA2b,IAAA,MACA,UAAA1jB,MAAA,gCAAA+H,KACA,CAGA,MAAA4b,GAAA,EAAA1L,EAAA2L,qBAAAF,GACA,GAAAC,IAAA,MACA,UAAA3jB,MAAA,oDAAA+H,KACA,CACA/K,KAAA6mB,aAAAC,aAAA,QAAAhO,IACA7X,GAAAD,EAAAhB,KAAA6mB,cAAAzlB,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,GACA,GAAAhB,KAAAlD,QAAA,6BACAkD,KAAAimB,gBAAA,KACA,CACAjmB,KAAA+mB,cAAA,IAAAzE,EAAA0E,cACAhnB,KAAAinB,aAAA,EAAA3E,EAAA4E,yBAAAnc,GAAA,IAAA/K,KAAAmnB,mBAAAnnB,KAAAimB,iBACA,GAAAjmB,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,4BACA,CACA,GAAApnB,KAAAlD,QAAA,2BACAkD,KAAAqnB,iBAAArnB,KAAAlD,QAAA,yBACA,KACA,CACAkD,KAAAqnB,kBAAA,EAAApM,EAAA2E,qBAAA+G,EACA,CACA,MAAAW,GAAA,EAAA5D,EAAAlH,cAAAmK,EAAA7pB,GACAkD,KAAA+K,OAAAuc,EAAAvc,OACA/K,KAAAlD,QAAAE,OAAAwJ,OAAA,GAAAxG,KAAAlD,QAAAwqB,EAAAnJ,cAGAne,KAAAunB,gBAAA,EAAAhE,EAAAiE,qBAAA9Z,EAAA5Q,EAAA,2CAAA4Q,SAAA,EAAAA,EAAA,QACA1N,KAAAynB,mBAAA,IAAAzD,EAAA0D,sBAAA/Z,EAAA7Q,EAAA,mCAAA6Q,SAAA,EAAAA,EAAA0W,GAAArW,EAAAlR,EAAA,2CAAAkR,SAAA,EAAAA,EAAAsW,GACAtkB,KAAA6kB,eAAA5W,EAAAnR,EAAA,mCAAAmR,SAAA,EAAAA,GAAA,EACAjO,KAAA2nB,cAAA/nB,KAAAD,KAAAwlB,EAAAroB,EAAA,wCAAAqoB,SAAA,EAAAA,EAAAjB,EAAAD,GACA,MAAA2D,EAAA,CACAC,iBAAA,CAAAC,EAAAC,KACA,MAAApD,EAAA3kB,KAAAunB,eAAAS,sBAAAhoB,KAAA+K,OAAA+c,EAAA9qB,OAAAwJ,OAAA,GAAAxG,KAAAlD,QAAAirB,GAAA/nB,KAAAgL,aACA2Z,EAAAG,kBAAA9kB,KAAA6kB,eACA,GAAA7kB,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,2DAAAzC,EAAAjZ,iBACA,CACA,MAAAuc,EAAA,IAAA1D,yBAAAI,EAAA3kB,MACAA,KAAA6lB,mBAAAziB,IAAA6kB,GACA,OAAAA,CAAA,EAEAC,YAAA,CAAA7C,EAAA8C,KACAnoB,KAAAulB,cAAA4C,EACA,MAAAC,EAAApoB,KAAAylB,UAAA9nB,QACAqC,KAAAylB,UAAA,GACA,GAAA2C,EAAAxsB,OAAA,GACAoE,KAAAqoB,mBACA,CACA,UAAAjrB,KAAAgrB,EAAA,CACAhrB,EAAAkrB,QACA,CACAtoB,KAAAkoB,YAAA7C,EAAA,EAEAkD,oBAAA,KAEA,UAAAvlB,MAAA,kEAEAwlB,iBAAAxD,IACA,GAAAhlB,KAAAimB,gBAAA,CACAjmB,KAAAomB,gBAAAqC,SAAAzD,EACA,GAEA0D,oBAAA1D,IACA,GAAAhlB,KAAAimB,gBAAA,CACAjmB,KAAAomB,gBAAAuC,WAAA3D,EACA,IAGAhlB,KAAA4oB,sBAAA,IAAAtF,EAAAuF,sBAAA7oB,KAAA+K,OAAA6c,EAAA9qB,GAAA,CAAAgsB,EAAAnD,KACA,GAAAmD,EAAAC,gBAAA,CACA5E,EAAA3oB,IAAAwE,KAAAoL,YAAA,IAAA4Y,EAAAgF,eAAAF,EAAAC,gBAAAE,UAAAH,EAAAC,gBAAAG,WAAA/E,EAAApN,IAAA/W,KAAAoL,cACA,KACA,CACA+Y,EAAAgF,OAAAnpB,KAAAoL,YACA,CACA,GAAApL,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,yCACA,CACApnB,KAAA2lB,iBACA3lB,KAAA4lB,uBAAA,KAGA/qB,QAAAuuB,UAAA,KACA,MAAAC,EAAArpB,KAAAwlB,qBACAxlB,KAAAwlB,qBAAA,GACA,GAAA6D,EAAAztB,OAAA,GACAoE,KAAAqoB,mBACA,CACA,UAAAjrB,KAAAisB,EAAA,CACAjsB,EAAAksB,WACA,IACA,IACAhkB,IACA,GAAAtF,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,oDACA9hB,EAAAa,KACA,iBACAb,EAAAe,QACA,IACA,CACA,GAAArG,KAAAwlB,qBAAA5pB,OAAA,GACAoE,KAAA8a,MAAA,gEACA,CACA,GAAA9a,KAAA2lB,iBAAA,MACA3lB,KAAA4lB,uBAAA5oB,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,MAAAud,EAAAxM,gCAAAjS,EAAAa,KAAAb,EAAAe,UAAA,CAAApD,SAAAqC,EAAArC,UACA,CACA,MAAAomB,EAAArpB,KAAAwlB,qBACAxlB,KAAAwlB,qBAAA,GACA,GAAA6D,EAAAztB,OAAA,GACAoE,KAAAqoB,mBACA,CACA,UAAAjrB,KAAAisB,EAAA,CACAjsB,EAAAmsB,oBAAAjkB,EACA,KAEAtF,KAAAwpB,mBAAA,IAAA9N,EAAA9B,mBAAA,CACA,IAAA6J,EAAAgG,4BAAAzpB,KAAAlD,SACA,IAAA0mB,EAAA1P,yBAAA9T,UAAAlD,WAEAkD,KAAA8a,MAAA,oCACA4O,KAAAC,UAAA7sB,EAAAwH,UAAA,IACA,MAAAgC,EAAA,IAAAtD,OACA,EAAA+X,EAAAD,OAAA7U,EAAAwQ,aAAA1b,MAAA,yBACAiF,KAAAinB,YAAA2C,GACA,KACA,2BACAxE,EAAA9e,EAAAC,SAAA,MAAA6e,SAAA,SAAAA,EAAAyE,UAAAvjB,EAAAC,MAAAjL,QAAA,WACA0E,KAAA8pB,sBAAA,IAAAtpB,IACA,CACA,eAAA2mB,GACA,OACApc,OAAA/K,KAAAymB,eACAsD,MAAA/pB,KAAAqlB,kBACAvK,MAAA9a,KAAA+mB,cACAb,YAAAlmB,KAAAkmB,YACA8D,SAAAhqB,KAAAomB,gBAAA6D,gBAEA,CACA,KAAAnP,CAAAgC,EAAAoN,IACA,EAAAnP,EAAAD,OAAAoP,IAAA,MAAAA,SAAA,EAAAA,EAAAjkB,EAAAwQ,aAAA1b,MAAA,cAAAiF,KAAAinB,YAAA2C,GAAA,QAAA1O,EAAAP,aAAA3a,KAAA+K,QAAA,IAAA+R,EACA,CACA,eAAAqN,GACA,IAAAnpB,EAAAC,EAAAyM,EAAAC,EAEA,MAAA1M,GAAAD,EAAAhB,KAAA6mB,cAAAvmB,UAAA,MAAAW,SAAA,SAAAA,EAAA7D,KAAA4D,IAAA,CACAhB,KAAA8a,MAAA,kDACA9a,KAAAwlB,qBAAA5pB,OACA,qBACAoE,KAAAylB,UAAA7pB,SACA+R,GAAAD,EAAA1N,KAAA6mB,cAAA/kB,OAAA,MAAA6L,SAAA,SAAAA,EAAAvQ,KAAAsQ,EACA,CACA,CACA,iBAAA2a,GACA,IAAArnB,EAAAC,EAEA,IAAAjB,KAAA6mB,aAAAvmB,QAAAN,KAAA6mB,aAAAvmB,SAAA,CACAN,KAAA8a,MAAA,oDACA9a,KAAAwlB,qBAAA5pB,OACA,qBACAoE,KAAAylB,UAAA7pB,SACAqF,GAAAD,EAAAhB,KAAA6mB,cAAAzlB,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,CACA,8BAAAopB,CAAAC,GACA,MAAAC,EAAAtqB,KAAA0lB,0BAAA6E,WAAA3rB,OAAAyrB,IACA,GAAAC,GAAA,GACAtqB,KAAA0lB,0BAAA8E,OAAAF,EAAA,EACA,CACA,CACA,WAAApC,CAAA9V,IACA,EAAA2I,EAAAD,OAAA7U,EAAAwQ,aAAA1b,MAAA,yBACAiF,KAAAinB,YAAA2C,GACA,MACA,EAAA1O,EAAAP,aAAA3a,KAAA+K,QACA,IACAiG,EAAAqB,kBAAArS,KAAAqlB,mBACA,OACArU,EAAAqB,kBAAAD,IACA,GAAApS,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,0CAAApW,EAAAqB,kBAAAD,GACA,CACApS,KAAAqlB,kBAAAjT,EACA,MAAAqY,EAAAzqB,KAAA0lB,0BAAA/nB,QACA,UAAA0sB,KAAAI,EAAA,CACA,GAAArY,IAAAiY,EAAA7e,aAAA,CACA,GAAA6e,EAAAK,MAAA,CACA7pB,aAAAwpB,EAAAK,MACA,CACA1qB,KAAAoqB,+BAAAC,GACAA,EAAAtqB,UACA,CACA,CACA,GAAAqS,IAAApB,EAAAqB,kBAAAsY,kBAAA,CACA3qB,KAAA4lB,uBAAA,IACA,CACA,CACA,iBAAAd,CAAA8F,GACA,GAAAA,EAAA5qB,KAAA6kB,cAAA,CACA7kB,KAAA6kB,cAAA+F,EACA,UAAA3C,KAAAjoB,KAAA6lB,mBAAA,CACAoC,EAAAnD,kBAAA8F,EACA,CACA,CACA,CACA,uBAAA1F,CAAA+C,GACAjoB,KAAA6lB,mBAAAsD,OAAAlB,EACA,CACA,MAAAK,CAAArlB,EAAA4nB,GACA,OAAA7qB,KAAAulB,cAAAuF,KAAA,CACA7nB,WACA4nB,iBAEA,CACA,gBAAAE,CAAA3tB,GACA4C,KAAAylB,UAAAlqB,KAAA6B,GACA4C,KAAAmqB,iBACA,CACA,SAAAb,CAAA1d,EAAA3I,GACAjD,KAAA4oB,sBAAAoC,WACA,GAAAhrB,KAAA2lB,eAAA,CACA,OACAsF,KAAA,UACAC,OAAAlrB,KAAA2lB,eAAA/Z,EAAA3I,EAAAjD,KAAAsmB,iBAEA,KACA,CACA,GAAAtmB,KAAA4lB,uBAAA,CACA,OACAqF,KAAA,QACA3kB,MAAAtG,KAAA4lB,uBAEA,KACA,CACA,OACAqF,KAAA,OAEA,CACA,CACA,CACA,kBAAAE,CAAA/tB,GACA4C,KAAAwlB,qBAAAjqB,KAAA6B,GACA4C,KAAAmqB,iBACA,CACA,SAAAiB,GACAprB,KAAA4oB,sBAAAyC,UACArrB,KAAAkoB,YAAAlX,EAAAqB,kBAAAiT,MACAtlB,KAAAulB,cAAA,IAAA9J,EAAA3B,YAAA9Z,KAAA4oB,uBACA,GAAA5oB,KAAAgmB,UAAA,CACAnlB,aAAAb,KAAAgmB,WACAhmB,KAAAgmB,UAAA,IACA,CACA,CACA,gBAAAsF,CAAA9S,GACA,IAAAxX,EAAAC,EACAjB,KAAAgmB,UAAAplB,YAAA,KACA,GAAAZ,KAAA+lB,UAAA,GAIA/lB,KAAAsrB,iBAAAtrB,KAAA2nB,eACA,MACA,CACA,MAAAjmB,EAAA,IAAAlB,KACA,MAAA+qB,EAAA7pB,EAAA8pB,UAAAxrB,KAAA8pB,sBAAA0B,UACA,GAAAD,GAAAvrB,KAAA2nB,cAAA,CACA3nB,KAAA8a,MAAA,8BACA9a,KAAA2nB,cACA,oBACA3nB,KAAAorB,WACA,KACA,CAKAprB,KAAAsrB,iBAAAtrB,KAAA2nB,cAAA4D,EACA,IACA/S,IACAvX,GAAAD,EAAAhB,KAAAgmB,WAAA5kB,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,mBAAAyqB,GACA,GAAAzrB,KAAAqlB,oBAAArU,EAAAqB,kBAAAqZ,WAAA1rB,KAAAgmB,UAAA,CACAhmB,KAAAsrB,iBAAAtrB,KAAA2nB,cACA,CACA,CACA,WAAAgE,GACA,GAAA3rB,KAAAimB,gBAAA,CACAjmB,KAAAkmB,YAAA0F,gBACA,CACA5rB,KAAA+lB,WAAA,CACA,CACA,SAAA8F,CAAAvmB,GACA,GAAAtF,KAAAimB,gBAAA,CACA,GAAA3gB,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACAvT,KAAAkmB,YAAA4F,kBACA,KACA,CACA9rB,KAAAkmB,YAAA6F,eACA,CACA,CACA/rB,KAAA+lB,WAAA,EACA/lB,KAAA8pB,sBAAA,IAAAtpB,KACAR,KAAAyrB,qBACA,CACA,uBAAAO,CAAAC,EAAArgB,EAAAC,EAAAb,EAAAS,GACA,MAAAygB,GAAA,EAAApI,EAAAte,qBACAxF,KAAA8a,MAAA,4BAAAoR,EAAA,aAAAtgB,EAAA,KACA,WAAA+X,EAAAwI,kBAAAnsB,KAAAisB,EAAArgB,EAAAC,EAAAb,EAAAS,EAAAygB,EACA,CACA,kBAAAE,CAAAH,EAAArgB,EAAAC,EAAAb,EAAAS,GACA,MAAAygB,GAAA,EAAApI,EAAAte,qBACAxF,KAAA8a,MAAA,uBAAAoR,EAAA,aAAAtgB,EAAA,KACA,WAAAoY,EAAAqI,aAAArsB,KAAAisB,EAAArgB,EAAAC,EAAAb,EAAAS,EAAAygB,EAAAlsB,KAAAynB,mBAAAtD,EAAApN,IAAA/W,KAAAoL,aACA,CACA,eAAAkhB,CAAAL,EAAArgB,EAAAC,EAAAb,EAAAS,GAEA,GAAAzL,KAAAlD,QAAA,4BACA,OAAAkD,KAAAgsB,wBAAAC,EAAArgB,EAAAC,EAAAb,EAAAS,EACA,KACA,CACA,OAAAzL,KAAAosB,mBAAAH,EAAArgB,EAAAC,EAAAb,EAAAS,EACA,CACA,CACA,mBAAA8gB,CAAA3gB,EAAAH,EAAAI,EAAAC,EAAAC,GACA,MAAAmgB,GAAA,EAAApI,EAAAte,qBACAxF,KAAA8a,MAAA,wBACAoR,EACA,aACAtgB,EACA,gBACA,EAAAgY,EAAA5L,kBAAAvM,IACA,MAAAmF,EAAA,CACAnF,WACA9D,MAAAoE,IAAA,MAAAA,SAAA,EAAAA,EAAA9F,EAAAqR,UAAAkV,SACA3gB,SAAA,MAAAA,SAAA,EAAAA,EAAA7L,KAAAqnB,iBACAvb,cAEA,MAAA1O,EAAA,IAAAymB,EAAA4I,cAAAzsB,KAAA4L,EAAAgF,EAAA5Q,KAAAwpB,mBAAAnN,QAAArc,KAAAgL,YAAApC,sBAAAsjB,GACAlsB,KAAA2rB,cACAvuB,EAAAsvB,kBAAApnB,IACAtF,KAAA6rB,UAAAvmB,EAAA,IAEA,OAAAlI,CACA,CACA,KAAA+N,GACAnL,KAAA4oB,sBAAAyC,UACArrB,KAAAkoB,YAAAlX,EAAAqB,kBAAAqZ,UACAiB,cAAA3sB,KAAA6mB,cACA,GAAA7mB,KAAAgmB,UAAA,CACAnlB,aAAAb,KAAAgmB,UACA,CACA,GAAAhmB,KAAAimB,gBAAA,EACA,EAAA3D,EAAAsK,uBAAA5sB,KAAAinB,YACA,CACAjnB,KAAAunB,eAAAsF,wBACA,CACA,SAAAzhB,GACA,SAAA8P,EAAAP,aAAA3a,KAAA+K,OACA,CACA,oBAAAM,CAAAC,GACA,MAAA+Z,EAAArlB,KAAAqlB,kBACA,GAAA/Z,EAAA,CACAtL,KAAA4oB,sBAAAoC,WACAhrB,KAAA8pB,sBAAA,IAAAtpB,KACAR,KAAAyrB,qBACA,CACA,OAAApG,CACA,CACA,sBAAA9Z,CAAAC,EAAAC,EAAA1L,GACA,GAAAC,KAAAqlB,oBAAArU,EAAAqB,kBAAAqZ,SAAA,CACA,UAAA1oB,MAAA,6BACA,CACA,IAAA0nB,EAAA,KACA,GAAAjf,IAAAkD,SAAA,CACA,MAAAme,EAAArhB,aAAAjL,KAAAiL,EAAA,IAAAjL,KAAAiL,GACA,MAAA/J,EAAA,IAAAlB,KACA,GAAAiL,KAAAkD,UAAAme,GAAAprB,EAAA,CACA7G,QAAAuuB,SAAArpB,EAAA,IAAAiD,MAAA,sDACA,MACA,CACA0nB,EAAA9pB,YAAA,KACAZ,KAAAoqB,+BAAAC,GACAtqB,EAAA,IAAAiD,MAAA,wDACA8pB,EAAAlrB,UAAAF,EAAAE,UACA,CACA,MAAAyoB,EAAA,CACA7e,eACAzL,WACA2qB,SAEA1qB,KAAA0lB,0BAAAnqB,KAAA8uB,EACA,CAMA,cAAA3e,GACA,OAAA1L,KAAAinB,WACA,CACA,UAAAtb,CAAAC,EAAAH,EAAAI,EAAAC,EAAAC,GACA,UAAAH,IAAA,UACA,UAAAlD,UAAA,8CACA,CACA,YAAA+C,IAAA,UAAAA,aAAAjL,MAAA,CACA,UAAAkI,UAAA,wDACA,CACA,GAAA1I,KAAAqlB,oBAAArU,EAAAqB,kBAAAqZ,SAAA,CACA,UAAA1oB,MAAA,6BACA,CACA,OAAAhD,KAAAusB,oBAAA3gB,EAAAH,EAAAI,EAAAC,EAAAC,EACA,EAEAzR,EAAA4Q,+B,iBC1gBAlO,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA0f,8BAAA,EACA,MAAAqB,EAAAjhB,EAAA,MACA,MAAA4W,EAAA5W,EAAA,KACA,MAAA2yB,EAAA,6BACA,MAAA/S,yBACA,WAAAla,CAAA8nB,EAAA9qB,GACAkD,KAAA4nB,uBACA5nB,KAAAlD,UACAkD,KAAAgtB,aAAA,KACAhtB,KAAAitB,aAAA,KACAjtB,KAAAktB,aAAA,KACAltB,KAAAmtB,kBAAA,MACA,WAAArtB,CAAA8O,GACA5O,KAAA4O,SACA5O,KAAAglB,MAAA,IACA,CACA,gBAAA6C,CAAAC,EAAAC,GACA,OAAA/nB,KAAA4O,OAAAgZ,qBAAAC,iBAAAC,EAAAC,EACA,CACA,WAAAG,CAAA7C,EAAA8C,GACA,IAAAnnB,EACA,GAAAhB,KAAAotB,uBAAA,CACA,GAAA/H,IAAArU,EAAAqB,kBAAAgb,WAAA,CACA,MACA,EACArsB,EAAAhB,KAAA4O,OAAAoe,gBAAA,MAAAhsB,SAAA,SAAAA,EAAAqqB,UACArrB,KAAA4O,OAAAoe,aAAAhtB,KAAA4O,OAAAqe,aACAjtB,KAAA4O,OAAAqe,aAAA,IACA,MACA,IAAAjtB,KAAAstB,uBAAA,CACA,MACA,CACAttB,KAAA4O,OAAAgZ,qBAAAM,YAAA7C,EAAA8C,EACA,CACA,mBAAAI,GACA,IAAAvnB,EACA,MAAAusB,GAAAvsB,EAAAhB,KAAA4O,OAAAqe,gBAAA,MAAAjsB,SAAA,EAAAA,EAAAhB,KAAA4O,OAAAoe,aACA,GAAAhtB,KAAAglB,QAAAuI,EAAA,CACAvtB,KAAA4O,OAAAgZ,qBAAAW,qBACA,CACA,CACA,QAAAiF,CAAAC,GACAztB,KAAAglB,MAAAyI,CACA,CACA,gBAAAjF,CAAAxD,GACAhlB,KAAA4O,OAAAgZ,qBAAAY,iBAAAxD,EACA,CACA,mBAAA0D,CAAA1D,GACAhlB,KAAA4O,OAAAgZ,qBAAAc,oBAAA1D,EACA,CACA,oBAAAoI,GACA,OAAAptB,KAAAglB,QAAAhlB,KAAA4O,OAAAqe,YACA,CACA,oBAAAK,GACA,OAAAttB,KAAAglB,QAAAhlB,KAAA4O,OAAAoe,YACA,EAEA,CACA,qCAAAU,CAAAC,EAAAC,GACA,OAAAD,EAAAE,wBAAAD,EAAAC,qBACA,CAOA,iBAAAC,CAAAC,EAAAC,EAAAC,GACA,IAAAC,EACA,GAAAluB,KAAAgtB,eAAA,MACAhtB,KAAAktB,eAAA,MACAltB,KAAA0tB,sCAAA1tB,KAAAktB,aAAAc,GAAA,CACA,MAAAG,EAAA,IAAAnuB,KAAAmtB,kBAAAntB,MACA,MAAAytB,GAAA,EAAApS,EAAA+S,oBAAAJ,EAAAG,EAAAnuB,KAAAlD,SACAqxB,EAAAX,SAAAC,GACA,GAAAztB,KAAAgtB,eAAA,MACAhtB,KAAAgtB,aAAAS,EACAS,EAAAluB,KAAAgtB,YACA,KACA,CACA,GAAAhtB,KAAAitB,aAAA,CACAjtB,KAAAitB,aAAA5B,SACA,CACArrB,KAAAitB,aAAAQ,EACAS,EAAAluB,KAAAitB,YACA,CACA,KACA,CACA,GAAAjtB,KAAAitB,eAAA,MACAiB,EAAAluB,KAAAgtB,YACA,KACA,CACAkB,EAAAluB,KAAAitB,YACA,CACA,CACAjtB,KAAAktB,aAAAc,EACAE,EAAAJ,kBAAAC,EAAAC,EAAAC,EACA,CACA,QAAAjD,GACA,GAAAhrB,KAAAgtB,aAAA,CACAhtB,KAAAgtB,aAAAhC,WACA,GAAAhrB,KAAAitB,aAAA,CACAjtB,KAAAitB,aAAAjC,UACA,CACA,CACA,CACA,YAAAqD,GACA,GAAAruB,KAAAgtB,aAAA,CACAhtB,KAAAgtB,aAAAqB,eACA,GAAAruB,KAAAitB,aAAA,CACAjtB,KAAAitB,aAAAoB,cACA,CACA,CACA,CACA,OAAAhD,GAKA,GAAArrB,KAAAgtB,aAAA,CACAhtB,KAAAgtB,aAAA3B,UACArrB,KAAAgtB,aAAA,IACA,CACA,GAAAhtB,KAAAitB,aAAA,CACAjtB,KAAAitB,aAAA5B,UACArrB,KAAAitB,aAAA,IACA,CACA,CACA,WAAAqB,GACA,OAAAvB,CACA,EAEAzyB,EAAA0f,iD,iBCrIA,IAAAhZ,EACAhE,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+oB,MAAA/oB,EAAAi0B,6BAAAj0B,EAAAk0B,yCAAA,EACA,MAAAxd,EAAA5W,EAAA,KACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA+gB,EAAA/gB,EAAA,MACA,MAAAq0B,EAAAr0B,EAAA,MACA,MAAAihB,EAAAjhB,EAAA,MACA,MAAAohB,EAAAphB,EAAA,MACA,MAAAqhB,EAAArhB,EAAA,MACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAAwhB,EAAAxhB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAyiB,EAAA,oBACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAAC,EACA,CACA,MAAAiQ,EAAA,oBACA,MAAA2B,IAAA1tB,EAAAnG,QAAAC,IAAA6zB,8CAAA,MAAA3tB,SAAA,EAAAA,EAAA,iBACA,MAAA4tB,EAAA,CACAC,aAAA,KACAC,uBAAA,IACAC,cAAA,EACAC,eAAA,KAEA,MAAAC,EAAA,CACAC,UAAA,GACAJ,uBAAA,IACAC,cAAA,EACAC,eAAA,IAEA,SAAAG,kBAAA5mB,EAAA6mB,EAAAC,EAAAC,GACA,GAAAF,KAAA7mB,GACAA,EAAA6mB,KAAA9qB,kBACAiE,EAAA6mB,KAAAC,EAAA,CACA,MAAAE,EAAAD,EAAA,GAAAA,KAAAF,MACA,UAAApsB,MAAA,4BAAAusB,2BAAAF,iBAAA9mB,EAAA6mB,KACA,CACA,CACA,SAAAI,yBAAAjnB,EAAA6mB,EAAAE,GACA,MAAAC,EAAAD,EAAA,GAAAA,KAAAF,MACA,GAAAA,KAAA7mB,KAAA6mB,KAAA9qB,UAAA,CACA,OAAA6W,EAAAhC,YAAA5Q,EAAA6mB,IAAA,CACA,UAAApsB,MAAA,4BAAAusB,gDAAAhnB,EAAA6mB,KACA,CACA,KAAA7mB,EAAA6mB,GAAA7V,SAAA,GACAhR,EAAA6mB,GAAA7V,SAAA,UACAhR,EAAA6mB,GAAA5V,OAAA,GACAjR,EAAA6mB,GAAA5V,OAAA,YACA,UAAAxW,MAAA,4BAAAusB,gEACA,CACA,CACA,CACA,SAAAE,mBAAAlnB,EAAA6mB,EAAAE,GACA,MAAAC,EAAAD,EAAA,GAAAA,KAAAF,MACAD,kBAAA5mB,EAAA6mB,EAAA,SAAAE,GACA,GAAAF,KAAA7mB,GACAA,EAAA6mB,KAAA9qB,aACAiE,EAAA6mB,IAAA,GAAA7mB,EAAA6mB,IAAA,MACA,UAAApsB,MAAA,4BAAAusB,2DACA,CACA,CACA,MAAAf,oCACA,WAAA1uB,CAAA4vB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACAhwB,KAAAgwB,cACA,GAAAA,EAAAnC,wBAAA,cACA,UAAA7qB,MAAA,oEACA,CACAhD,KAAA0vB,eAAA,MAAAA,SAAA,EAAAA,EAAA,IACA1vB,KAAA2vB,uBAAA,MAAAA,SAAA,EAAAA,EAAA,IACA3vB,KAAA4vB,sBAAA,MAAAA,SAAA,EAAAA,EAAA,IACA5vB,KAAA6vB,uBAAA,MAAAA,SAAA,EAAAA,EAAA,GACA7vB,KAAA8vB,sBACA9yB,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAooB,GAAAkB,GAAA,KACA9vB,KAAA+vB,4BACA/yB,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAyoB,GAAAc,GAAA,IACA,CACA,mBAAAlC,GACA,OAAAd,CACA,CACA,YAAAkD,GACA,IAAAjvB,EAAAC,EACA,OACAivB,kBAAA,CACAC,UAAA,EAAAhV,EAAA9B,cAAArZ,KAAA0vB,YACAU,oBAAA,EAAAjV,EAAA9B,cAAArZ,KAAA2vB,oBACAU,mBAAA,EAAAlV,EAAA9B,cAAArZ,KAAA4vB,mBACAU,qBAAAtwB,KAAA6vB,mBACAU,uBAAAvvB,EAAAhB,KAAA8vB,uBAAA,MAAA9uB,SAAA,EAAAA,EAAAsD,UACAksB,6BAAAvvB,EAAAjB,KAAA+vB,6BAAA,MAAA9uB,SAAA,EAAAA,EAAAqD,UACAmsB,aAAA,CAAAzwB,KAAAgwB,YAAAC,iBAGA,CACA,aAAAS,GACA,OAAA1wB,KAAA0vB,UACA,CACA,qBAAAiB,GACA,OAAA3wB,KAAA2vB,kBACA,CACA,oBAAAiB,GACA,OAAA5wB,KAAA4vB,iBACA,CACA,qBAAAiB,GACA,OAAA7wB,KAAA6vB,kBACA,CACA,4BAAAiB,GACA,OAAA9wB,KAAA8vB,mBACA,CACA,kCAAAiB,GACA,OAAA/wB,KAAA+vB,yBACA,CACA,cAAAiB,GACA,OAAAhxB,KAAAgwB,WACA,CACA,qBAAAiB,CAAA1oB,GACA,IAAAvH,EACAwuB,yBAAAjnB,EAAA,YACAinB,yBAAAjnB,EAAA,sBACAinB,yBAAAjnB,EAAA,qBACAknB,mBAAAlnB,EAAA,wBACA,6BAAAA,GACAA,EAAAgoB,wBAAAjsB,UAAA,CACA,UAAAiE,EAAAgoB,wBAAA,UACA,UAAAvtB,MAAA,mEACA,CACAmsB,kBAAA5mB,EAAAgoB,sBAAA,iDACAd,mBAAAlnB,EAAAgoB,sBAAA,kDACApB,kBAAA5mB,EAAAgoB,sBAAA,kDACApB,kBAAA5mB,EAAAgoB,sBAAA,kDACA,CACA,mCAAAhoB,GACAA,EAAAioB,8BAAAlsB,UAAA,CACA,UAAAiE,EAAAioB,8BAAA,UACA,UAAAxtB,MAAA,yEACA,CACAysB,mBAAAlnB,EAAAioB,4BAAA,2CACAf,mBAAAlnB,EAAAioB,4BAAA,wDACArB,kBAAA5mB,EAAAioB,4BAAA,wDACArB,kBAAA5mB,EAAAioB,4BAAA,wDACA,CACA,sBAAAjoB,KAAA7K,MAAAwzB,QAAA3oB,EAAAkoB,cAAA,CACA,UAAAztB,MAAA,yDACA,CACA,MAAAgtB,GAAA,EAAA3U,EAAAb,wBAAAjS,EAAAkoB,cACA,IAAAT,EAAA,CACA,UAAAhtB,MAAA,0EACA,CACA,WAAAwrB,oCAAAjmB,EAAA4nB,UAAA,EAAAhV,EAAA/B,cAAA7Q,EAAA4nB,UAAA,KAAA5nB,EAAA6nB,oBAAA,EAAAjV,EAAA/B,cAAA7Q,EAAA6nB,oBAAA,KAAA7nB,EAAA8nB,mBAAA,EAAAlV,EAAA/B,cAAA7Q,EAAA8nB,mBAAA,MAAArvB,EAAAuH,EAAA+nB,wBAAA,MAAAtvB,SAAA,EAAAA,EAAA,KAAAuH,EAAAgoB,sBAAAhoB,EAAAioB,4BAAAR,EACA,EAEA11B,EAAAk0B,wEACA,MAAA2C,0CAAAvV,EAAAjC,sBACA,WAAA7Z,CAAA0kB,EAAA4M,GACA3tB,MAAA+gB,GACAxkB,KAAAoxB,WACApxB,KAAAykB,SAAA,CACA,CACA,GAAA3iB,GACA9B,KAAAglB,MAAAljB,MACA9B,KAAAykB,UAAA,CACA,CACA,KAAArjB,GACApB,KAAAglB,MAAA5jB,QACApB,KAAAykB,UAAA,EACA,GAAAzkB,KAAAykB,UAAA,GACA,GAAAzkB,KAAAoxB,SAAA,CACA,MAAA/sB,EAAArE,KAAAoxB,SAAAC,mBAAA/1B,QAAA0E,MACA,GAAAqE,GAAA,GACArE,KAAAoxB,SAAAC,mBAAA7G,OAAAnmB,EAAA,EACA,CACA,CACA,CACA,CACA,KAAAitB,GACAtxB,KAAAuxB,WAAA,MACA,CACA,OAAAC,GACAxxB,KAAAuxB,WAAA,KACA,CACA,WAAAE,GACA,OAAAzxB,KAAAoxB,QACA,CACA,oBAAAM,GACA,OAAA1xB,KAAAglB,KACA,EAEA,SAAA2M,oBACA,OACAC,QAAA,EACAC,QAAA,EAEA,CACA,MAAAC,YACA,WAAAhyB,GACAE,KAAA+xB,aAAAJ,oBACA3xB,KAAAgyB,eAAAL,mBACA,CACA,UAAAM,GACAjyB,KAAA+xB,aAAAH,SAAA,CACA,CACA,UAAAM,GACAlyB,KAAA+xB,aAAAF,SAAA,CACA,CACA,aAAAM,GACAnyB,KAAAgyB,eAAAhyB,KAAA+xB,aACA/xB,KAAA+xB,aAAAJ,mBACA,CACA,gBAAAS,GACA,OAAApyB,KAAAgyB,eAAAJ,OACA,CACA,eAAAS,GACA,OAAAryB,KAAAgyB,eAAAH,OACA,EAEA,MAAAS,uBACA,WAAAxyB,CAAAyyB,EAAAC,GACAxyB,KAAAuyB,gBACAvyB,KAAAwyB,YACA,CACA,IAAA1H,CAAA2H,GACA,MAAAC,EAAA1yB,KAAAuyB,cAAAzH,KAAA2H,GACA,GAAAC,EAAAC,iBAAAlX,EAAA5B,eAAA+Y,SAAA,CACA,MAAAC,EAAAH,EAAA/N,WACA,MAAAyM,EAAAyB,EAAApB,cACA,GAAAL,EAAA,CACA,IAAA0B,EAAAJ,EAAAI,YACA,GAAA9yB,KAAAwyB,WAAA,CACAM,EAAApT,IACA,IAAA1e,EACA,GAAA0e,IAAAzZ,EAAAG,OAAAmN,GAAA,CACA6d,EAAA2B,QAAAd,YACA,KACA,CACAb,EAAA2B,QAAAb,YACA,EACAlxB,EAAA0xB,EAAAI,eAAA,MAAA9xB,SAAA,SAAAA,EAAA5D,KAAAs1B,EAAAhT,EAAA,CAEA,CACA,OAAA1iB,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAksB,GAAA,CAAA/N,WAAAkO,EAAAnB,uBAAAoB,eACA,KACA,CACA,OAAA91B,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAksB,GAAA,CAAA/N,WAAAkO,EAAAnB,wBACA,CACA,KACA,CACA,OAAAgB,CACA,CACA,EAEA,MAAAnE,6BACA,WAAAzuB,CAAA8nB,EAAA9qB,GACAkD,KAAAgzB,SAAA,IAAAzX,EAAAtB,YACAja,KAAAktB,aAAA,KACAltB,KAAAizB,eAAA,KACAjzB,KAAAkzB,cAAA,IAAA1X,EAAAxB,0BAAA,EAAAyU,EAAA/T,iCAAAkN,EAAA,CACAC,iBAAA,CAAAC,EAAAC,KACA,MAAAoL,EAAAvL,EAAAC,iBAAAC,EAAAC,GACA,MAAAqJ,EAAApxB,KAAAgzB,SAAAI,wBAAAtL,GACA,MAAA+K,EAAA,IAAA1B,kCAAAgC,EAAA/B,GACA,IAAAA,IAAA,MAAAA,SAAA,SAAAA,EAAAiC,4BAAA,MAEAR,EAAAvB,OACA,CACAF,IAAA,MAAAA,SAAA,SAAAA,EAAAC,mBAAA91B,KAAAs3B,GACA,OAAAA,CAAA,EAEA3K,YAAA,CAAA7C,EAAA8C,KACA,GAAA9C,IAAArU,EAAAqB,kBAAAC,MAAA,CACAsV,EAAAM,YAAA7C,EAAA,IAAAiN,uBAAAnK,EAAAnoB,KAAAszB,qBACA,KACA,CACA1L,EAAAM,YAAA7C,EAAA8C,EACA,KAEArrB,GACAkD,KAAAuzB,cAAAzM,aAAA,WACA6F,cAAA3sB,KAAAuzB,cACA,CACA,iBAAAD,GACA,OAAAtzB,KAAAktB,eAAA,OACAltB,KAAAktB,aAAA4D,iCAAA,MACA9wB,KAAAktB,aAAA6D,uCAAA,KACA,CACA,yBAAAyC,GACA,IAAAC,EAAA,EACA,UAAArC,KAAApxB,KAAAgzB,SAAA32B,SAAA,CACA,GAAA+0B,EAAAiC,2BAAA,MACAI,GAAA,CACA,CACA,CACA,OAAAA,EAAA,IAAAzzB,KAAAgzB,SAAAU,IACA,CACA,mBAAAC,CAAAC,GACA,IAAA5zB,KAAAktB,aAAA,CACA,MACA,CACA,MAAA2G,EAAA7zB,KAAAktB,aAAA4D,+BACA,IAAA+C,EAAA,CACA,MACA,CACA/Y,MAAA,8BAEA,MAAAgZ,EAAAD,EAAA7E,eACA,IAAA+E,EAAA,EACA,MAAAC,EAAA,GACA,UAAAC,EAAA7C,KAAApxB,KAAAgzB,SAAAkB,UAAA,CACA,MAAAC,EAAA/C,EAAA2B,QAAAX,mBACA,MAAAgC,EAAAhD,EAAA2B,QAAAV,kBACAvX,MAAA,cACA,EAAAS,EAAApB,kBAAA8Z,GACA,eACAE,EACA,aACAC,EACA,wBACAN,GACA,GAAAK,EAAAC,GAAAN,EAAA,CACAC,GAAA,EACAC,EAAAz4B,KAAA44B,KAAAC,GACA,CACA,CACAtZ,MAAA,SACAiZ,EACA,oDACA/zB,KAAAwzB,4BACA,kBACAQ,EACA,KACA,GAAAD,EAAAF,EAAA9E,cAAA,CACA,MACA,CAEA,MAAAsF,EAAAL,EAAA1S,QAAA,CAAAgT,EAAAC,IAAAD,EAAAC,IAAAP,EAAAp4B,OACA,IAAA44B,EAAA,EACA,UAAAC,KAAAT,EAAA,CACA,MAAAU,EAAAD,EAAAJ,EACAG,GAAAE,GACA,CACA,MAAAC,EAAAH,EAAAR,EAAAp4B,OACA,MAAAg5B,EAAAh1B,KAAAi1B,KAAAF,GACA,MAAAG,EAAAT,EACAO,GAAAf,EAAAhF,aAAA,KACA/T,MAAA,SAAA8Z,EAAA,sBAAAE,GAEA,UAAAljB,EAAAwf,KAAApxB,KAAAgzB,SAAAkB,UAAA,CAEA,GAAAl0B,KAAAwzB,6BACAxzB,KAAAktB,aAAA2D,wBAAA,CACA,KACA,CAEA,MAAAsD,EAAA/C,EAAA2B,QAAAX,mBACA,MAAAgC,EAAAhD,EAAA2B,QAAAV,kBACA,GAAA8B,EAAAC,EAAAN,EAAA,CACA,QACA,CAEA,MAAAiB,EAAAZ,KAAAC,GACAtZ,MAAA,sBAAAlJ,EAAA,gBAAAmjB,GACA,GAAAA,EAAAD,EAAA,CACA,MAAAE,EAAAp1B,KAAAC,SAAA,IACAib,MAAA,aACAlJ,EACA,iBACAojB,EACA,2BACAnB,EAAA/E,wBACA,GAAAkG,EAAAnB,EAAA/E,uBAAA,CACAhU,MAAA,sBAAAlJ,GACA5R,KAAAsxB,MAAAF,EAAAwC,EACA,CACA,CACA,CACA,CACA,yBAAAqB,CAAArB,GACA,IAAA5zB,KAAAktB,aAAA,CACA,MACA,CACA,MAAAgI,EAAAl1B,KAAAktB,aAAA6D,qCACA,IAAAmE,EAAA,CACA,MACA,CACApa,MAAA,+CACAoa,EAAAhG,UACA,6BACAgG,EAAAlG,gBAEA,IAAAmG,EAAA,EACA,UAAA/D,KAAApxB,KAAAgzB,SAAA32B,SAAA,CACA,MAAA83B,EAAA/C,EAAA2B,QAAAX,mBACA,MAAAgC,EAAAhD,EAAA2B,QAAAV,kBACA,GAAA8B,EAAAC,GAAAc,EAAAlG,eAAA,CACAmG,GAAA,CACA,CACA,CACA,GAAAA,EAAAD,EAAAnG,cAAA,CACA,MACA,CAEA,UAAAnd,EAAAwf,KAAApxB,KAAAgzB,SAAAkB,UAAA,CAEA,GAAAl0B,KAAAwzB,6BACAxzB,KAAAktB,aAAA2D,wBAAA,CACA,KACA,CAEA,MAAAsD,EAAA/C,EAAA2B,QAAAX,mBACA,MAAAgC,EAAAhD,EAAA2B,QAAAV,kBACAvX,MAAA,uBAAAqZ,EAAA,aAAAC,GACA,GAAAD,EAAAC,EAAAc,EAAAlG,eAAA,CACA,QACA,CAEA,MAAAoG,EAAAhB,EAAA,KAAAA,EAAAD,GACA,GAAAiB,EAAAF,EAAAhG,UAAA,CACA,MAAA8F,EAAAp1B,KAAAC,SAAA,IACAib,MAAA,aACAlJ,EACA,iBACAojB,EACA,2BACAE,EAAApG,wBACA,GAAAkG,EAAAE,EAAApG,uBAAA,CACAhU,MAAA,sBAAAlJ,GACA5R,KAAAsxB,MAAAF,EAAAwC,EACA,CACA,CACA,CACA,CACA,KAAAtC,CAAAF,EAAAwC,GACAxC,EAAAiC,yBAAA,IAAA7yB,KACA4wB,EAAAiE,wBAAA,EACA,UAAAxC,KAAAzB,EAAAC,mBAAA,CACAwB,EAAAvB,OACA,CACA,CACA,OAAAE,CAAAJ,GACAA,EAAAiC,yBAAA,KACA,UAAAR,KAAAzB,EAAAC,mBAAA,CACAwB,EAAArB,SACA,CACA,CACA,gBAAA8D,GACA,UAAAlE,KAAApxB,KAAAgzB,SAAA32B,SAAA,CACA+0B,EAAA2B,QAAAZ,eACA,CACA,CACA,UAAAoD,CAAAC,GACA,IAAAx0B,EAAAC,EACAjB,KAAAuzB,cAAA3yB,YAAA,IAAAZ,KAAAy1B,aAAAD,IACAv0B,GAAAD,EAAAhB,KAAAuzB,eAAAnyB,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,SAAAy0B,GACA,MAAA7B,EAAA,IAAApzB,KACAsa,MAAA,0BACA9a,KAAAs1B,mBACA,IAAAt1B,KAAAktB,aAAA,CACA,MACA,CACAltB,KAAAizB,eAAAW,EACA5zB,KAAAu1B,WAAAv1B,KAAAktB,aAAAwD,iBACA1wB,KAAA2zB,oBAAAC,GACA5zB,KAAAi1B,0BAAArB,GACA,UAAAhiB,EAAAwf,KAAApxB,KAAAgzB,SAAAkB,UAAA,CACA,GAAA9C,EAAAiC,2BAAA,MACA,GAAAjC,EAAAiE,uBAAA,GACAjE,EAAAiE,wBAAA,CACA,CACA,KACA,CACA,MAAA1F,EAAA3vB,KAAAktB,aAAAyD,wBACA,MAAAf,EAAA5vB,KAAAktB,aAAA0D,uBACA,MAAA8E,EAAA,IAAAl1B,KAAA4wB,EAAAiC,yBAAAzxB,WACA8zB,EAAAx0B,gBAAAw0B,EAAAv0B,kBACAvB,KAAAF,IAAAiwB,EAAAyB,EAAAiE,uBAAAz1B,KAAAD,IAAAgwB,EAAAC,KACA,GAAA8F,EAAA,IAAAl1B,KAAA,CACAsa,MAAA,cAAAlJ,GACA5R,KAAAwxB,QAAAJ,EACA,CACA,CACA,CACA,CACA,iBAAAtD,CAAAC,EAAAC,EAAAC,GACA,KAAAD,aAAAQ,qCAAA,CACA,MACA,CACA,UAAAyF,KAAAlG,EAAA,CACA,IAAA/tB,KAAAgzB,SAAAj2B,IAAAk3B,GAAA,CACAnZ,MAAA,2BAAAS,EAAApB,kBAAA8Z,IACAj0B,KAAAgzB,SAAAx3B,IAAAy4B,EAAA,CACAlB,QAAA,IAAAjB,YACAuB,yBAAA,KACAgC,uBAAA,EACAhE,mBAAA,IAEA,CACA,CACArxB,KAAAgzB,SAAA2C,cAAA5H,GACA,MAAAiC,EAAAhC,EAAAgD,iBACAhxB,KAAAkzB,cAAApF,kBAAAC,EAAAiC,EAAA/B,GACA,GAAAD,EAAA8C,gCACA9C,EAAA+C,qCAAA,CACA,GAAA/wB,KAAAizB,eAAA,CACAnY,MAAA,2CACAja,aAAAb,KAAAuzB,eACA,MAAAqC,EAAA5H,EAAA0C,kBACA,IAAAlwB,MAAAoB,UAAA5B,KAAAizB,eAAArxB,WACA5B,KAAAu1B,WAAAK,EACA,KACA,CACA9a,MAAA,sBACA9a,KAAAizB,eAAA,IAAAzyB,KACAR,KAAAu1B,WAAAvH,EAAA0C,iBACA1wB,KAAAs1B,kBACA,CACA,KACA,CACAxa,MAAA,wCACA9a,KAAAizB,eAAA,KACApyB,aAAAb,KAAAuzB,eACA,UAAAnC,KAAApxB,KAAAgzB,SAAA32B,SAAA,CACA2D,KAAAwxB,QAAAJ,GACAA,EAAAiE,uBAAA,CACA,CACA,CACAr1B,KAAAktB,aAAAc,CACA,CACA,QAAAhD,GACAhrB,KAAAkzB,cAAAlI,UACA,CACA,YAAAqD,GACAruB,KAAAkzB,cAAA7E,cACA,CACA,OAAAhD,GACAxqB,aAAAb,KAAAuzB,eACAvzB,KAAAkzB,cAAA7H,SACA,CACA,WAAAiD,GACA,OAAAvB,CACA,EAEAzyB,EAAAi0B,0DACA,SAAAlL,QACA,GAAAqL,EAAA,EACA,EAAAD,EAAAhU,0BAAAsS,EAAAwB,6BAAAC,oCACA,CACA,CACAl0B,EAAA+oB,W,iBCpiBArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+oB,MAAA/oB,EAAA+f,iBAAA/f,EAAAu7B,sBAAAv7B,EAAAw7B,SAAAx7B,EAAAy7B,kCAAA,EACA,MAAA1a,EAAAjhB,EAAA,MACA,MAAA4W,EAAA5W,EAAA,KACA,MAAAqhB,EAAArhB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAA47B,EAAA57B,EAAA,MACA,MAAAyiB,EAAA,aACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAAC,EACA,CACA,MAAAiQ,EAAA,aAKA,MAAAkJ,EAAA,IACA,MAAAF,6BACA,WAAAj2B,CAAAo2B,GACAl2B,KAAAk2B,oBACA,CACA,mBAAArI,GACA,OAAAd,CACA,CACA,YAAAkD,GACA,OACAlD,IAAA,CACAmJ,mBAAAl2B,KAAAk2B,oBAGA,CACA,qBAAAC,GACA,OAAAn2B,KAAAk2B,kBACA,CAEA,qBAAAjF,CAAA1oB,GACA,0BAAAA,YACAA,EAAA2tB,qBAAA,YACA,UAAAlzB,MAAA,2EACA,CACA,WAAA+yB,6BAAAxtB,EAAA2tB,qBAAA,KACA,EAEA57B,EAAAy7B,0DAKA,MAAAK,gBACA,WAAAt2B,CAAA6kB,GACA3kB,KAAA2kB,YACA,CACA,IAAAmG,CAAA2H,GACA,OACAE,eAAAlX,EAAA5B,eAAA+Y,SACAjO,WAAA3kB,KAAA2kB,WACArf,OAAA,KACA+wB,cAAA,KACAvD,YAAA,KAEA,EAOA,SAAAgD,SAAAQ,GACA,MAAAva,EAAAua,EAAA34B,QACA,QAAAhC,EAAAogB,EAAAngB,OAAA,EAAAD,EAAA,EAAAA,IAAA,CACA,MAAA46B,EAAA32B,KAAA2mB,MAAA3mB,KAAAC,UAAAlE,EAAA,IACA,MAAA66B,EAAAza,EAAApgB,GACAogB,EAAApgB,GAAAogB,EAAAwa,GACAxa,EAAAwa,GAAAC,CACA,CACA,OAAAza,CACA,CACAzhB,EAAAw7B,kBAMA,SAAAW,0BAAAC,GACA,MAAA3a,EAAA,GACA,MAAA4a,EAAA,GACA,MAAAC,EAAA,GACA,MAAAC,GAAA,EAAAtb,EAAAwD,wBAAA2X,EAAA,QAAAV,EAAAc,QAAAJ,EAAA,GAAA7qB,MACA,UAAA+F,KAAA8kB,EAAA,CACA,MAAAnb,EAAAwD,wBAAAnN,KAAA,EAAAokB,EAAAc,QAAAllB,EAAA/F,MAAA,CACA8qB,EAAAp7B,KAAAqW,EACA,KACA,CACAglB,EAAAr7B,KAAAqW,EACA,CACA,CACA,MAAAmlB,EAAAF,EAAAF,EAAAC,EACA,MAAAI,EAAAH,EAAAD,EAAAD,EACA,QAAAh7B,EAAA,EAAAA,EAAAiE,KAAAD,IAAAo3B,EAAAn7B,OAAAo7B,EAAAp7B,QAAAD,IAAA,CACA,GAAAA,EAAAo7B,EAAAn7B,OAAA,CACAmgB,EAAAxgB,KAAAw7B,EAAAp7B,GACA,CACA,GAAAA,EAAAq7B,EAAAp7B,OAAA,CACAmgB,EAAAxgB,KAAAy7B,EAAAr7B,GACA,CACA,CACA,OAAAogB,CACA,CACA,MAAAkb,EAAA,qDACA,MAAApB,sBAQA,WAAA/1B,CAAA8nB,EAAA9qB,GACAkD,KAAA4nB,uBAKA5nB,KAAAgqB,SAAA,GAIAhqB,KAAAwL,aAAAwF,EAAAqB,kBAAAiT,KAKAtlB,KAAAk3B,uBAAA,EAMAl3B,KAAAm3B,YAAA,KAKAn3B,KAAA0kB,wBAAA,CAAAC,EAAAC,EAAAxS,EAAAyS,EAAAuS,KACAp3B,KAAAq3B,wBAAA1S,EAAAC,EAAAxS,EAAAglB,EAAA,EAEAp3B,KAAAs3B,+BAAA,IAAAt3B,KAAAu3B,6BACAv3B,KAAAw3B,oBAAA,MAOAx3B,KAAAy3B,2BAAA,MAKAz3B,KAAA03B,mCAAA,MAKA13B,KAAA23B,UAAA,KACA33B,KAAA43B,kBAAA,KACA53B,KAAA63B,uBAAAj3B,YAAA,WACAC,aAAAb,KAAA63B,wBACA73B,KAAA83B,mBAAAh7B,EAAAm6B,EACA,CACA,yBAAAc,GACA,OAAA/3B,KAAAgqB,SAAA5lB,OAAA4gB,KAAAgT,6BACA,CACA,0BAAAT,GACA,GAAAv3B,KAAAm3B,YAAA,CACA,GAAAn3B,KAAA83B,qBAAA93B,KAAAm3B,YAAAc,YAAA,CACAj4B,KAAAkoB,YAAAlX,EAAAqB,kBAAAsY,kBAAA,IAAAlP,EAAA1B,kBAAA,CACA1T,QAAA,qBAAArG,KAAAm3B,YAAAe,8BAEA,KACA,CACAl4B,KAAAkoB,YAAAlX,EAAAqB,kBAAAC,MAAA,IAAA8jB,gBAAAp2B,KAAAm3B,aACA,CACA,MACA,GAAAn3B,KAAAgqB,SAAApuB,SAAA,GACAoE,KAAAkoB,YAAAlX,EAAAqB,kBAAAiT,KAAA,IAAA7J,EAAA3B,YAAA9Z,MACA,KACA,CACA,GAAAA,KAAAy3B,2BAAA,CACAz3B,KAAAkoB,YAAAlX,EAAAqB,kBAAAsY,kBAAA,IAAAlP,EAAA1B,kBAAA,CAAA1T,QAAA,0CAAArG,KAAA23B,cACA,KACA,CACA33B,KAAAkoB,YAAAlX,EAAAqB,kBAAAgb,WAAA,IAAA5R,EAAA3B,YAAA9Z,MACA,CACA,CACA,CACA,mBAAAuoB,GACAvoB,KAAA03B,mCAAA,KACA13B,KAAA4nB,qBAAAW,qBACA,CACA,oCAAA4P,GACA,IAAAn4B,KAAA+3B,4BAAA,CACA,MACA,CACA,IAAA/3B,KAAA03B,mCAAA,CAOA13B,KAAAuoB,qBACA,CACA,GAAAvoB,KAAAy3B,2BAAA,CACA,MACA,CACAz3B,KAAAy3B,2BAAA,KACA,UAAA9S,gBAAA3kB,KAAAgqB,SAAA,CACArF,EAAAyT,iBACA,CACAp4B,KAAAu3B,4BACA,CACA,iBAAAc,GACA,GAAAr4B,KAAAm3B,cAAA,MAIA,MAAAA,EAAAn3B,KAAAm3B,YACAn3B,KAAAm3B,YAAA,KACAA,EAAA/1B,QACA+1B,EAAAlS,gCAAAjlB,KAAA0kB,yBACA1kB,KAAA4nB,qBAAAc,oBAAAyO,EAAAzrB,kBACA,GAAA1L,KAAA83B,mBAAA,CACAX,EAAAmB,yBAAAt4B,KAAAs3B,+BACA,CACA,CACA,CACA,uBAAAD,CAAA1S,EAAAC,EAAAxS,EAAAglB,GACA,IAAAp2B,EACA,IAAAA,EAAAhB,KAAAm3B,eAAA,MAAAn2B,SAAA,SAAAA,EAAAu3B,qBAAA5T,GAAA,CACA,GAAAvS,IAAApB,EAAAqB,kBAAAC,MAAA,CACAtS,KAAAq4B,oBACAr4B,KAAAu3B,6BACAv3B,KAAAuoB,qBACA,CACA,MACA,CACA,UAAAlkB,EAAA2gB,KAAAhlB,KAAAgqB,SAAAkK,UAAA,CACA,GAAAvP,EAAA4T,qBAAAvT,EAAAL,YAAA,CACA,GAAAvS,IAAApB,EAAAqB,kBAAAC,MAAA,CACAtS,KAAAw4B,eAAAxT,EAAAL,WACA,CACA,GAAAvS,IAAApB,EAAAqB,kBAAAsY,kBAAA,CACA3F,EAAAgT,4BAAA,KACA,GAAAZ,EAAA,CACAp3B,KAAA23B,UAAAP,CACA,CACAp3B,KAAAm4B,uCACA,GAAA9zB,IAAArE,KAAAk3B,uBAAA,CACAl3B,KAAAy4B,8BAAAp0B,EAAA,EACA,CACA,CACA2gB,EAAAL,WAAAyT,kBACA,MACA,CACA,CACA,CACA,6BAAAK,CAAAC,GACA73B,aAAAb,KAAA63B,wBACA,GAAA73B,KAAAw3B,oBAAA,CACA,MACA,CACA,UAAAnzB,EAAA2gB,KAAAhlB,KAAAgqB,SAAAkK,UAAA,CACA,GAAA7vB,GAAAq0B,EAAA,CACA,MAAAC,EAAA3T,EAAAL,WAAAtZ,uBACA,GAAAstB,IAAA3nB,EAAAqB,kBAAAiT,MACAqT,IAAA3nB,EAAAqB,kBAAAgb,WAAA,CACArtB,KAAAo4B,gBAAA/zB,GACA,MACA,CACA,CACA,CACArE,KAAAw3B,oBAAA,KACAx3B,KAAAm4B,sCACA,CAKA,eAAAC,CAAAQ,GACA,IAAA53B,EAAAC,EACAJ,aAAAb,KAAA63B,wBACA73B,KAAAk3B,uBAAA0B,EACA,GAAA54B,KAAAgqB,SAAA4O,GAAAjU,WAAAtZ,yBACA2F,EAAAqB,kBAAAiT,KAAA,CACAxK,MAAA,+CACA9a,KAAAgqB,SAAA4O,GAAAjU,WAAAuT,cACAr9B,QAAAuuB,UAAA,KACA,IAAApoB,GACAA,EAAAhB,KAAAgqB,SAAA4O,MAAA,MAAA53B,SAAA,SAAAA,EAAA2jB,WAAAyT,iBAAA,GAEA,CACAp4B,KAAA63B,wBAAA52B,GAAAD,EAAAJ,YAAA,KACAZ,KAAAy4B,8BAAAG,EAAA,KACA3C,IAAA70B,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,cAAAw3B,CAAA7T,GACA,GAAA3kB,KAAAm3B,aAAAxS,EAAA4T,qBAAAv4B,KAAAm3B,aAAA,CACA,MACA,CACArc,MAAA,gCAAA6J,EAAAuT,cACAl4B,KAAAy3B,2BAAA,MACAz3B,KAAAq4B,oBACAr4B,KAAAm3B,YAAAxS,EACAA,EAAA7iB,MACA,GAAA9B,KAAA83B,mBAAA,CACAnT,EAAAkU,sBAAA74B,KAAAs3B,+BACA,CACAt3B,KAAA4nB,qBAAAY,iBAAA7D,EAAAjZ,kBACA1L,KAAA84B,sBACAj4B,aAAAb,KAAA63B,wBACA73B,KAAAu3B,4BACA,CACA,WAAArP,CAAA9V,EAAA+V,GACArN,MAAA9J,EAAAqB,kBAAArS,KAAAwL,cACA,OACAwF,EAAAqB,kBAAAD,IACApS,KAAAwL,aAAA4G,EACApS,KAAA4nB,qBAAAM,YAAA9V,EAAA+V,EACA,CACA,mBAAA2Q,GACA,UAAA9T,KAAAhlB,KAAAgqB,SAAA,CACA,KAAAhqB,KAAAm3B,aAAAnS,EAAAL,WAAA4T,qBAAAv4B,KAAAm3B,cAAA,CAKAnS,EAAAL,WAAAM,gCAAAjlB,KAAA0kB,wBACA,CAKAM,EAAAL,WAAAvjB,QACApB,KAAA4nB,qBAAAc,oBAAA1D,EAAAL,WAAAjZ,iBACA,CACA1L,KAAAk3B,uBAAA,EACAl3B,KAAAgqB,SAAA,GACAhqB,KAAAw3B,oBAAA,MACAx3B,KAAA03B,mCAAA,KACA,CACA,oBAAAqB,CAAArC,GACA,MAAAsC,EAAAtC,EAAAz6B,KAAA2V,IAAA,CACA+S,WAAA3kB,KAAA4nB,qBAAAC,iBAAAjW,EAAA,IACAomB,4BAAA,UAKA,UAAArT,gBAAAqU,EAAA,CACArU,EAAA7iB,MACA9B,KAAA4nB,qBAAAY,iBAAA7D,EAAAjZ,iBACA,CACA1L,KAAA84B,sBACA94B,KAAAgqB,SAAAgP,EACA,UAAArU,gBAAA3kB,KAAAgqB,SAAA,CACArF,EAAAI,6BAAA/kB,KAAA0kB,yBACA,GAAAC,EAAAtZ,yBAAA2F,EAAAqB,kBAAAC,MAAA,CACAtS,KAAAw4B,eAAA7T,GACA,MACA,CACA,CACA,UAAAK,KAAAhlB,KAAAgqB,SAAA,CACA,GAAAhF,EAAAL,WAAAtZ,yBACA2F,EAAAqB,kBAAAsY,kBAAA,CACA3F,EAAAgT,4BAAA,IACA,CACA,CACAh4B,KAAAy4B,8BAAA,GACAz4B,KAAAu3B,4BACA,CACA,iBAAAzJ,CAAAC,EAAAC,GACA,KAAAA,aAAA+H,8BAAA,CACA,MACA,CAIA,GAAA/H,EAAAmI,wBAAA,CACApI,EAAA+H,SAAA/H,EACA,CACA,MAAAkL,EAAA,GAAA/0B,UAAA6pB,EAAA9xB,KAAAg4B,KAAAiF,aACA,GAAAD,EAAAr9B,SAAA,GACA,UAAAoH,MAAA,qDACA,CACA,MAAA0zB,EAAAD,0BAAAwC,GACAj5B,KAAA43B,kBAAAlB,EACA12B,KAAA+4B,qBAAArC,EACA,CACA,QAAA1L,GACA,GAAAhrB,KAAAwL,eAAAwF,EAAAqB,kBAAAiT,MAAAtlB,KAAA43B,kBAAA,CACA53B,KAAA+4B,qBAAA/4B,KAAA43B,kBACA,CACA,CACA,YAAAvJ,GAGA,CACA,OAAAhD,GACArrB,KAAA84B,sBACA94B,KAAAq4B,mBACA,CACA,WAAA/J,GACA,OAAAvB,CACA,EAEAzyB,EAAAu7B,4CACA,MAAAsD,EAAA,IAAApD,6BAAA,OAMA,MAAA1b,iBACA,WAAAva,CAAAm0B,EAAArM,EAAA9qB,GACAkD,KAAAi0B,WACAj0B,KAAAo5B,YAAApoB,EAAAqB,kBAAAiT,KACA,MAAA+T,GAAA,EAAAhe,EAAAX,iCAAAkN,EAAA,CACAM,YAAA,CAAA7C,EAAA8C,KACAnoB,KAAAo5B,YAAA/T,EACArlB,KAAAs5B,aAAAnR,EACAP,EAAAM,YAAA7C,EAAA8C,EAAA,IAGAnoB,KAAAu5B,kBAAA,IAAA1D,sBAAAwD,EAAAr8B,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAA1J,GAAA,CAAAm6B,IAAA,QACAj3B,KAAAs5B,aAAA,IAAA7d,EAAA3B,YAAA9Z,KAAAu5B,kBACA,CACA,eAAAnB,GACAp4B,KAAAu5B,kBAAAzL,kBAAA,CAAA9tB,KAAAi0B,UAAAkF,EACA,CAOA,cAAAK,CAAAC,GACAz5B,KAAAi0B,SAAAwF,EACA,GAAAz5B,KAAAo5B,cAAApoB,EAAAqB,kBAAAiT,KAAA,CACAtlB,KAAAo4B,iBACA,CACA,CACA,oBAAA/sB,GACA,OAAArL,KAAAo5B,WACA,CACA,SAAAM,GACA,OAAA15B,KAAAs5B,YACA,CACA,WAAAK,GACA,OAAA35B,KAAAi0B,QACA,CACA,QAAAjJ,GACAhrB,KAAAu5B,kBAAAvO,UACA,CACA,OAAAK,GACArrB,KAAAu5B,kBAAAlO,SACA,EAEA/wB,EAAA+f,kCACA,SAAAgJ,SACA,EAAAhI,EAAAZ,0BAAAsS,EAAA8I,sBAAAE,+BACA,EAAA1a,EAAAue,iCAAA7M,EACA,CACAzyB,EAAA+oB,W,iBC3dArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+oB,MAAA/oB,EAAAu/B,4BAAA,EACA,MAAAxe,EAAAjhB,EAAA,MACA,MAAA4W,EAAA5W,EAAA,KACA,MAAAqhB,EAAArhB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAAkhB,EAAAlhB,EAAA,MACA,MAAAyiB,EAAA,cACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAAC,EACA,CACA,MAAAiQ,EAAA,cACA,MAAA+M,8BACA,mBAAAjM,GACA,OAAAd,CACA,CACA,WAAAjtB,GAAA,CACA,YAAAmwB,GACA,OACAlD,IAAA,GAEA,CAEA,qBAAAkE,CAAA1oB,GACA,WAAAuxB,6BACA,EAEA,MAAAC,iBACA,WAAAj6B,CAAAkqB,EAAAgQ,EAAA,GACAh6B,KAAAgqB,WACAhqB,KAAAg6B,WACA,CACA,IAAAlP,CAAA2H,GACA,MAAAwH,EAAAj6B,KAAAgqB,SAAAhqB,KAAAg6B,WAAA7R,OACAnoB,KAAAg6B,WAAAh6B,KAAAg6B,UAAA,GAAAh6B,KAAAgqB,SAAApuB,OACA,OAAAq+B,EAAAnP,KAAA2H,EACA,CAMA,gBAAAyH,GACA,OAAAl6B,KAAAgqB,SAAAhqB,KAAAg6B,WAAA/F,QACA,EAEA,MAAA4F,uBACA,WAAA/5B,CAAA8nB,EAAA9qB,GACAkD,KAAA4nB,uBACA5nB,KAAAlD,UACAkD,KAAAgqB,SAAA,GACAhqB,KAAAwL,aAAAwF,EAAAqB,kBAAAiT,KACAtlB,KAAAm6B,mBAAA,KACAn6B,KAAAo6B,cAAA,MACAp6B,KAAA23B,UAAA,KACA33B,KAAAq5B,2BAAA,EAAAhe,EAAAX,iCAAAkN,EAAA,CACAM,YAAA,CAAA7C,EAAA8C,KACAnoB,KAAAq6B,yBAAA,GAGA,CACA,sBAAAC,CAAAvQ,GACA,OAAA/pB,KAAAgqB,SAAA3Z,QAAA2U,KAAA3Z,yBAAA0e,IACAnuB,MACA,CACA,uBAAAy+B,GACA,GAAAr6B,KAAAo6B,cAAA,CACA,MACA,CACA,GAAAp6B,KAAAs6B,uBAAAtpB,EAAAqB,kBAAAC,OAAA,GACA,MAAAioB,EAAAv6B,KAAAgqB,SAAA3Z,QAAA2U,KAAA3Z,yBAAA2F,EAAAqB,kBAAAC,QACA,IAAAjO,EAAA,EACA,GAAArE,KAAAm6B,qBAAA,MACA,MAAAK,EAAAx6B,KAAAm6B,mBAAAD,mBACA71B,EAAAk2B,EAAAhQ,WAAAvF,IAAA,EAAAzJ,EAAAkf,eAAAzV,EAAA2U,cAAAa,KACA,GAAAn2B,EAAA,GACAA,EAAA,CACA,CACA,CACArE,KAAAkoB,YAAAlX,EAAAqB,kBAAAC,MAAA,IAAAynB,iBAAAQ,EAAAt+B,KAAA+oB,IAAA,CACAiP,SAAAjP,EAAA2U,cACAxR,OAAAnD,EAAA0U,gBACAr1B,GACA,MACA,GAAArE,KAAAs6B,uBAAAtpB,EAAAqB,kBAAAgb,YAAA,GACArtB,KAAAkoB,YAAAlX,EAAAqB,kBAAAgb,WAAA,IAAA5R,EAAA3B,YAAA9Z,MACA,MACA,GAAAA,KAAAs6B,uBAAAtpB,EAAAqB,kBAAAsY,mBAAA,GACA3qB,KAAAkoB,YAAAlX,EAAAqB,kBAAAsY,kBAAA,IAAAlP,EAAA1B,kBAAA,CAAA1T,QAAA,0CAAArG,KAAA23B,cACA,KACA,CACA33B,KAAAkoB,YAAAlX,EAAAqB,kBAAAiT,KAAA,IAAA7J,EAAA3B,YAAA9Z,MACA,CAKA,UAAAglB,KAAAhlB,KAAAgqB,SAAA,CACA,GAAAhF,EAAA3Z,yBAAA2F,EAAAqB,kBAAAiT,KAAA,CACAN,EAAAgG,UACA,CACA,CACA,CACA,WAAA9C,CAAA9V,EAAA+V,GACArN,MAAA9J,EAAAqB,kBAAArS,KAAAwL,cACA,OACAwF,EAAAqB,kBAAAD,IACA,GAAAA,IAAApB,EAAAqB,kBAAAC,MAAA,CACAtS,KAAAm6B,mBAAAhS,CACA,KACA,CACAnoB,KAAAm6B,mBAAA,IACA,CACAn6B,KAAAwL,aAAA4G,EACApS,KAAA4nB,qBAAAM,YAAA9V,EAAA+V,EACA,CACA,mBAAA2Q,GACA,UAAA9T,KAAAhlB,KAAAgqB,SAAA,CACAhF,EAAAqG,SACA,CACA,CACA,iBAAAyC,CAAAC,EAAAC,GACAhuB,KAAA84B,sBACAhe,MAAA,4BAAAiT,EAAA9xB,IAAAsf,EAAApB,mBACAna,KAAAo6B,cAAA,KACAp6B,KAAAgqB,SAAA+D,EAAA9xB,KAAAg4B,GAAA,IAAA3Y,EAAAjB,iBAAA4Z,EAAAj0B,KAAAq5B,0BAAAr5B,KAAAlD,WACA,UAAAkoB,KAAAhlB,KAAAgqB,SAAA,CACAhF,EAAAoT,iBACA,CACAp4B,KAAAo6B,cAAA,MACAp6B,KAAAq6B,yBACA,CACA,QAAArP,GAIA,CACA,YAAAqD,GAEA,CACA,OAAAhD,GACArrB,KAAA84B,qBACA,CACA,WAAAxK,GACA,OAAAvB,CACA,EAEAzyB,EAAAu/B,8CACA,SAAAxW,SACA,EAAAhI,EAAAZ,0BAAAsS,EAAA8M,uBAAAC,8BACA,CACAx/B,EAAA+oB,W,iBCzJArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAkgB,uBAAAlgB,EAAAogC,iBAAApgC,EAAAigB,yBAAAjgB,EAAAggB,6BAAAhgB,EAAA8zB,mBAAA9zB,EAAAs/B,gCAAAt/B,EAAAmgB,yBAAAngB,EAAAogB,qCAAA,EACA,MAAAK,EAAA3gB,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KASA,SAAAsgB,gCAAA9L,EAAA+rB,GACA,IAAA35B,EAAAC,EAAAyM,EAAAC,EAAAK,EAAAC,EAAAkX,EAAAC,EAAAwV,EAAAC,EACA,OACAhT,kBAAA5mB,GAAAD,EAAA25B,EAAA9S,oBAAA,MAAA7mB,SAAA,SAAAA,EAAAmN,KAAAwsB,MAAA,MAAA15B,SAAA,EAAAA,EAAA2N,EAAAiZ,iBAAA1Z,KAAAS,GACAsZ,aAAAva,GAAAD,EAAAitB,EAAAzS,eAAA,MAAAxa,SAAA,SAAAA,EAAAS,KAAAwsB,MAAA,MAAAhtB,SAAA,EAAAA,EAAAiB,EAAAsZ,YAAA/Z,KAAAS,GACA2Z,qBAAAta,GAAAD,EAAA2sB,EAAApS,uBAAA,MAAAva,SAAA,SAAAA,EAAAG,KAAAwsB,MAAA,MAAA1sB,SAAA,EAAAA,EAAAW,EAAA2Z,oBAAApa,KAAAS,GACA4Z,kBAAApD,GAAAD,EAAAwV,EAAAnS,oBAAA,MAAArD,SAAA,SAAAA,EAAAhX,KAAAwsB,MAAA,MAAAvV,SAAA,EAAAA,EAAAxW,EAAA4Z,iBAAAra,KAAAS,GACA8Z,qBAAAmS,GAAAD,EAAAD,EAAAjS,uBAAA,MAAAkS,SAAA,SAAAA,EAAAzsB,KAAAwsB,MAAA,MAAAE,SAAA,EAAAA,EAAAjsB,EAAA8Z,oBAAAva,KAAAS,GAEA,CACAtU,EAAAogB,gEACA,MAAAogB,EAAA,GACA,IAAAC,EAAA,KACA,SAAAtgB,yBAAAugB,EAAAC,EAAAC,GACAJ,EAAAE,GAAA,CACAG,aAAAF,EACAG,oBAAAF,EAEA,CACA5gC,EAAAmgB,kDACA,SAAAmf,gCAAAoB,GACAD,EAAAC,CACA,CACA1gC,EAAAs/B,gEACA,SAAAxL,mBAAAlD,EAAAtD,EAAA9qB,GACA,MAAAk+B,EAAA9P,EAAA2C,sBACA,GAAAmN,KAAAF,EAAA,CACA,WAAAA,EAAAE,GAAAG,aAAAvT,EAAA9qB,EACA,KACA,CACA,WACA,CACA,CACAxC,EAAA8zB,sCACA,SAAA9T,6BAAA0gB,GACA,OAAAA,KAAAF,CACA,CACAxgC,EAAAggB,0DACA,SAAAC,yBAAA8gB,GACA,MAAAl4B,EAAAnG,OAAAmG,KAAAk4B,GACA,GAAAl4B,EAAAvH,SAAA,GACA,UAAAoH,MAAA,kEACA,CACA,MAAAg4B,EAAA73B,EAAA,GACA,GAAA63B,KAAAF,EAAA,CACA,IACA,OAAAA,EAAAE,GAAAI,oBAAAnK,eAAAoK,EAAAL,GACA,CACA,MAAArgC,GACA,UAAAqI,MAAA,GAAAg4B,MAAArgC,EAAAiC,UACA,CACA,KACA,CACA,UAAAoG,MAAA,2CAAAg4B,IACA,CACA,CACA1gC,EAAAigB,kDACA,SAAAmgB,mBACA,IAAAK,EAAA,CACA,UAAA/3B,MAAA,2CACA,CACA,WAAA83B,EAAAC,GAAAK,mBACA,CACA9gC,EAAAogC,kCACA,SAAAlgB,uBAAA8gB,EAAAC,EAAA,OACA,UAAArQ,KAAAoQ,EAAA,CACA,IACA,OAAA/gB,yBAAA2Q,EACA,CACA,MAAAvwB,IACA,EAAAogB,EAAA/c,KAAAiI,EAAAwQ,aAAA1b,MAAA,mCAAAJ,EAAAiC,SACA,QACA,CACA,CACA,GAAA2+B,EAAA,CACA,GAAAR,EAAA,CACA,WAAAD,EAAAC,GAAAK,mBACA,KACA,CACA,WACA,CACA,KACA,CACA,WACA,CACA,CACA9gC,EAAAkgB,6C,gBClGAxd,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA6xB,uBAAA,EACA,MAAAnb,EAAA5W,EAAA,KACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAwpB,EAAAxpB,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAAqhB,EAAArhB,EAAA,MACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAA2pB,EAAA3pB,EAAA,MACA,MAAAohC,EAAAphC,EAAA,MACA,MAAAyiB,EAAA,sBACA,MAAAsP,kBACA,WAAArsB,CAAA2O,EAAAwd,EAAAwP,EAAA5vB,EAAAb,EAAAS,EAAAygB,GACA,IAAAlrB,EAAAC,EACAjB,KAAAyO,UACAzO,KAAAisB,aACAjsB,KAAAy7B,aACAz7B,KAAA6L,OACA7L,KAAAgL,cACAhL,KAAAyL,WACAzL,KAAAksB,aACAlsB,KAAAglB,MAAA,KACAhlB,KAAA07B,YAAA,MACA17B,KAAAkF,eAAA,KACAlF,KAAA6N,iBAAA,MACA7N,KAAA27B,MAAA,MACA37B,KAAAiD,SAAA,KACAjD,KAAAyE,SAAA,KACAzE,KAAA8yB,YAAA,KACA,MAAA8I,EAAA57B,KAAAy7B,WAAA/pB,MAAA,KACA,IAAAmqB,EAAA,GAIA,GAAAD,EAAAhgC,QAAA,GACAigC,EAAAD,EAAA,EACA,CACA,MAAAhe,GAAA3c,GAAAD,GAAA,EAAAka,EAAAqD,eAAAve,KAAA6L,SAAA,MAAA7K,SAAA,SAAAA,EAAA6K,QAAA,MAAA5K,SAAA,EAAAA,EAAA,YAGAjB,KAAA87B,WAAA,WAAAle,KAAAie,GACA,CACA,KAAA/gB,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAA,IAAA7c,KAAAksB,WAAA,KAAApP,EACA,CACA,YAAAif,CAAAz2B,EAAA02B,GACA,IAAAh7B,EAAAC,EACA,IAAAjB,KAAA27B,MAAA,CACA37B,KAAA27B,MAAA,KACA37B,KAAA8a,MAAA,2BACAxV,EAAAa,KACA,aACAb,EAAAe,QACA,KACA,MAAA41B,EAAAj/B,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAlB,GAAA,CAAA02B,cACAh7B,EAAAhB,KAAAyE,YAAA,MAAAzD,SAAA,SAAAA,EAAAoE,gBAAA62B,IACAh7B,EAAAjB,KAAA8yB,eAAA,MAAA7xB,SAAA,SAAAA,EAAA7D,KAAA4C,KAAAi8B,EAAA91B,KACA,CACA,CACA,MAAAmiB,GACA,IAAAtnB,EAAAC,EACA,GAAAjB,KAAA27B,MAAA,CACA,MACA,CACA,IAAA37B,KAAAiD,SAAA,CACA,UAAAD,MAAA,6BACA,CACAhD,KAAA8a,MAAA,eACA,MAAAohB,EAAAl8B,KAAAiD,SAAAoZ,QACA,MAAA8f,EAAAn8B,KAAAyO,QAAA6Z,OAAA4T,EAAAl8B,KAAAisB,WAAAmQ,iBACA,MAAAC,EAAAF,EAAAxX,WACA,IACAwX,EAAAxX,WAAAjZ,iBAAAke,GACA,KACAuS,EAAAxX,WAAAuT,aACA,GAAAiE,EAAAxX,WACA3kB,KAAA8a,MAAA,gBACAW,EAAA5B,eAAAsiB,EAAAxJ,gBACA,gBACA0J,EACA,cACAr7B,EAAAm7B,EAAA72B,UAAA,MAAAtE,SAAA,SAAAA,EAAAmF,MACA,MACAlF,EAAAk7B,EAAA72B,UAAA,MAAArE,SAAA,SAAAA,EAAAoF,UACA,OAAA81B,EAAAxJ,gBACA,KAAAlX,EAAA5B,eAAA+Y,SACA5yB,KAAAgL,YACAtH,iBAAA,CAAAf,YAAA3C,KAAA87B,aACA3/B,MAAAmgC,IACA,IAAAt7B,EAAAC,EAAAyM,EAIA,GAAA1N,KAAA27B,MAAA,CACA37B,KAAA8a,MAAA,6DACA,MACA,CACAohB,EAAAn4B,MAAAu4B,GACA,GAAAJ,EAAAnlB,IAAA,iBAAAnb,OAAA,GACAoE,KAAA+7B,aAAA,CACA51B,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,uDACApD,SAAA,IAAAhB,EAAAiB,UACA,YACA,CACA,GAAAi5B,EAAAxX,WAAAtZ,yBACA2F,EAAAqB,kBAAAC,MAAA,CACAtS,KAAA8a,MAAA,qBACAuhB,EACA,cACArrB,EAAAqB,kBAAA8pB,EAAAxX,WAAAtZ,wBACA,sDACArL,KAAAsoB,SACA,MACA,CACA,GAAAtoB,KAAAyL,WAAAkD,SAAA,CACAutB,EAAA1gC,IAAA,kBAAAooB,EAAA1L,0BAAAlY,KAAAyL,UACA,CACA,IACAzL,KAAAglB,MAAAmX,EACAxX,WAAA4X,oBACA5wB,WAAAuwB,EAAAl8B,KAAA6L,KAAA7L,KAAAy7B,WAAA,CACA/2B,kBAAAzB,IACAjD,KAAA8a,MAAA,qBACA9a,KAAAyE,SAAAC,kBAAAzB,EAAA,EAEAgC,iBAAArI,IACAoD,KAAA8a,MAAA,oBACA9a,KAAAyE,SAAAQ,iBAAArI,EAAA,EAEAwI,gBAAAE,IACAtF,KAAA8a,MAAA,mBACA,GAAAxV,EAAAk3B,UACAhB,EAAAiB,UAAAC,uBAAA,CACA18B,KAAA+7B,aAAAz2B,EAAA,UACA,KACA,CACAtF,KAAA+7B,aAAAz2B,EAAA,YACA,IAGA,CACA,MAAAgB,GACAtG,KAAA8a,MAAA,6CACAuhB,EACA,eACA/1B,EAAA1J,SACAoD,KAAA+7B,aAAA,CACA51B,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,4CACAC,EAAA1J,QACAqG,SAAA,IAAAhB,EAAAiB,UACA,eACA,MACA,EACAjC,GAAAD,EAAAhB,KAAAisB,YAAA0Q,eAAA,MAAA17B,SAAA,SAAAA,EAAA7D,KAAA4D,IACA0M,EAAAyuB,EAAA9F,iBAAA,MAAA3oB,SAAA,SAAAA,EAAAtQ,KAAA++B,GACAn8B,KAAA8yB,YAAAqJ,EAAArJ,YACA9yB,KAAA8a,MAAA,uBAAA9a,KAAAglB,MAAA4X,gBAAA,KACA,GAAA58B,KAAA07B,YAAA,CACA17B,KAAAglB,MAAA7d,WACA,CACA,GAAAnH,KAAAkF,eAAA,CACAlF,KAAAglB,MAAAld,uBAAA9H,KAAAkF,eAAAwC,QAAA1H,KAAAkF,eAAAtI,QACA,CACA,GAAAoD,KAAA6N,iBAAA,CACA7N,KAAAglB,MAAAhd,WACA,KACA1B,IAEA,MAAAH,OAAAE,YAAA,EAAA0d,EAAAxM,uCAAAjR,EAAAH,OAAA,SAAAG,EAAAH,KAAAF,EAAAG,OAAAy2B,QAAA,mDAAAv2B,EAAA1J,WACAoD,KAAA+7B,aAAA,CACA51B,OACAE,UACApD,SAAA,IAAAhB,EAAAiB,UACA,gBAEA,MACA,KAAAuY,EAAA5B,eAAAijB,KACA,MAAA32B,OAAAE,YAAA,EAAA0d,EAAAxM,gCAAA4kB,EAAA72B,OAAAa,KAAAg2B,EAAA72B,OAAAe,SACAkM,cAAA,KACAvS,KAAA+7B,aAAA,CAAA51B,OAAAE,UAAApD,SAAAk5B,EAAA72B,OAAArC,UAAA,WAEA,MACA,KAAAwY,EAAA5B,eAAA8Q,kBACA,GAAA3qB,KAAAiD,SAAA85B,aAAA7qB,aAAA,CACAlS,KAAAyO,QAAAsc,iBAAA/qB,KACA,KACA,CACA,MAAAmG,OAAAE,YAAA,EAAA0d,EAAAxM,gCAAA4kB,EAAA72B,OAAAa,KAAAg2B,EAAA72B,OAAAe,SACAkM,cAAA,KACAvS,KAAA+7B,aAAA,CAAA51B,OAAAE,UAAApD,SAAAk5B,EAAA72B,OAAArC,UAAA,eAEA,CACA,MACA,KAAAwY,EAAA5B,eAAAmjB,MACAh9B,KAAAyO,QAAAsc,iBAAA/qB,MAEA,CACA,gBAAA2G,CAAArB,EAAAe,GACA,IAAArF,EACAhB,KAAA8a,MAAA,0BAAAxV,EAAA,cAAAe,EAAA,MACArF,EAAAhB,KAAAglB,SAAA,MAAAhkB,SAAA,SAAAA,EAAA2F,iBAAArB,EAAAe,GACArG,KAAA+7B,aAAA,CAAA51B,KAAAb,EAAAe,UAAApD,SAAA,IAAAhB,EAAAiB,UAAA,YACA,CACA,OAAA2D,GACA,IAAA7F,EAAAC,EACA,OAAAA,GAAAD,EAAAhB,KAAAglB,SAAA,MAAAhkB,SAAA,SAAAA,EAAA6F,aAAA,MAAA5F,SAAA,EAAAA,EAAAjB,KAAAyO,QAAArD,WACA,CACA,KAAA2B,CAAA9J,EAAAwB,GACAzE,KAAA8a,MAAA,gBACA9a,KAAAyE,WACAzE,KAAAiD,WACAjD,KAAAsoB,QACA,CACA,sBAAAxgB,CAAAJ,EAAA9K,GACAoD,KAAA8a,MAAA,yCAAAle,EAAAhB,QACA,GAAAoE,KAAAglB,MAAA,CACAhlB,KAAAglB,MAAAld,uBAAAJ,EAAA9K,EACA,KACA,CACAoD,KAAAkF,eAAA,CAAAwC,UAAA9K,UACA,CACA,CACA,SAAAuK,GACAnH,KAAA8a,MAAA,oBACA,GAAA9a,KAAAglB,MAAA,CACAhlB,KAAAglB,MAAA7d,WACA,KACA,CACAnH,KAAA07B,YAAA,IACA,CACA,CACA,SAAA1zB,GACAhI,KAAA8a,MAAA,oBACA,GAAA9a,KAAAglB,MAAA,CACAhlB,KAAAglB,MAAAhd,WACA,KACA,CACAhI,KAAA6N,iBAAA,IACA,CACA,CACA,cAAAiB,CAAA9D,GACA,UAAAhI,MAAA,0BACA,CACA,aAAA45B,GACA,OAAA58B,KAAAksB,UACA,EAEA5xB,EAAA6xB,mC,iBC1PA,IAAAnrB,EAAAC,EAAAyM,EAAAC,EACA3Q,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA2iC,gBAAA3iC,EAAAwgB,MAAAxgB,EAAA0D,IAAA1D,EAAA8nB,mBAAA9nB,EAAA2nB,UAAA3nB,EAAA4iC,eAAA,EACA,MAAAj3B,EAAA7L,EAAA,KACA,MAAA+iC,EAAA/iC,EAAA,MACA,MAAAgjC,EAAAhjC,EAAA,SACA,MAAAijC,EAAA,CACA/2B,MAAA,CAAA1J,KAAA0gC,KACAv/B,QAAAuI,MAAA,KAAA1J,KAAA0gC,EAAA,EAEAC,KAAA,CAAA3gC,KAAA0gC,KACAv/B,QAAAuI,MAAA,KAAA1J,KAAA0gC,EAAA,EAEAE,MAAA,CAAA5gC,KAAA0gC,KACAv/B,QAAAuI,MAAA,KAAA1J,KAAA0gC,EAAA,GAGA,IAAAG,EAAAJ,EACA,IAAAK,EAAAz3B,EAAAwQ,aAAAC,MACA,MAAAinB,GAAA18B,GAAAD,EAAAnG,QAAAC,IAAA8iC,uBAAA,MAAA58B,SAAA,EAAAA,EAAAnG,QAAAC,IAAA+iC,kBAAA,MAAA58B,SAAA,EAAAA,EAAA,GACA,OAAA08B,EAAAG,eACA,YACAJ,EAAAz3B,EAAAwQ,aAAA1b,MACA,MACA,WACA2iC,EAAAz3B,EAAAwQ,aAAAkH,KACA,MACA,YACA+f,EAAAz3B,EAAAwQ,aAAAC,MACA,MACA,WACAgnB,EAAAz3B,EAAAwQ,aAAAsnB,KACA,MACA,SAGA,MAAAb,UAAA,IACAO,EAEAnjC,EAAA4iC,oBACA,MAAAjb,UAAA9mB,IACAsiC,EAAAtiC,CAAA,EAEAb,EAAA2nB,oBACA,MAAAG,mBAAAD,IACAub,EAAAvb,CAAA,EAEA7nB,EAAA8nB,sCAEA,MAAApkB,IAAA,CAAAggC,KAAAvgC,KACA,IAAAwgC,EACA,GAAAD,GAAAN,EAAA,CACA,OAAAM,GACA,KAAA/3B,EAAAwQ,aAAA1b,MACAkjC,EAAAR,EAAAD,MACA,MACA,KAAAv3B,EAAAwQ,aAAAkH,KACAsgB,EAAAR,EAAAF,KACA,MACA,KAAAt3B,EAAAwQ,aAAAC,MACAunB,EAAAR,EAAAn3B,MACA,MAIA,IAAA23B,EAAA,CACAA,EAAAR,EAAAn3B,KACA,CACA,GAAA23B,EAAA,CACAA,EAAA9vB,KAAAsvB,EAAAQ,IAAAxgC,EACA,CACA,GAEAnD,EAAA0D,QACA,MAAAkgC,GAAAvwB,GAAAD,EAAA7S,QAAAC,IAAAqjC,mBAAA,MAAAzwB,SAAA,EAAAA,EAAA7S,QAAAC,IAAAsjC,cAAA,MAAAzwB,SAAA,EAAAA,EAAA,GACA,MAAA0wB,EAAA,IAAAvY,IACA,MAAAwY,EAAA,IAAAxY,IACA,UAAAyY,KAAAL,EAAAxsB,MAAA,MACA,GAAA6sB,EAAAC,WAAA,MACAF,EAAAl7B,IAAAm7B,EAAA1U,UAAA,GACA,KACA,CACAwU,EAAAj7B,IAAAm7B,EACA,CACA,CACA,MAAAE,EAAAJ,EAAAthC,IAAA,OACA,SAAA+d,MAAAkjB,EAAAU,EAAA5hB,GACA,GAAAmgB,gBAAAyB,GAAA,EACA,EAAApkC,EAAA0D,KAAAggC,GAAA,IAAAx9B,MAAAyY,cAAA,OAAAmkB,EAAA,IAAAD,EAAAwB,IAAA,MAAAD,EAAA,MAAA5hB,EACA,CACA,CACAxiB,EAAAwgB,YACA,SAAAmiB,gBAAAyB,GACA,OAAAJ,EAAAvhC,IAAA2hC,KAAAD,GAAAJ,EAAAthC,IAAA2hC,GACA,CACApkC,EAAA2iC,+B,iBC/FAjgC,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAumB,sBAAAvmB,EAAAwmB,2BAAA,EACA,MAAAH,EAAAvmB,EAAA,MAMA,MAAAwkC,EAAA,CACAC,MAAAle,EAAA9P,OAAA5T,UAAA2V,iBACAksB,cAAAne,EAAA9P,OAAA5T,UAAAyW,wBACAqrB,cAAApe,EAAA9P,OAAA5T,UAAAuW,wBACAwrB,KAAAre,EAAA9P,OAAA5T,UAAA2W,uBAOA,SAAAqrB,oBAAA9hC,GACA,8CAAAqZ,SAAArZ,EACA,CAeA,SAAA2jB,sBAAAoe,EAAArD,EAAAsD,GACA,IAAAA,EAAA,CACAA,EAAA,EACA,CACA,MAAAC,0BAAAze,EAAA9P,QAEA7T,OAAAmG,KAAA+7B,GAAAG,SAAA5yB,IACA,GAAAwyB,oBAAAxyB,GAAA,CACA,MACA,CACA,MAAA6yB,EAAAJ,EAAAzyB,GACA,IAAA8yB,EAEA,UAAA9yB,IAAA,UAAAA,EAAA+yB,OAAA,UACA,UAAAx8B,MAAA,mCACA,CACA,GAAAs8B,EAAAvsB,cAAA,CACA,GAAAusB,EAAAzvB,eAAA,CACA0vB,EAAA,MACA,KACA,CACAA,EAAA,eACA,CACA,KACA,CACA,GAAAD,EAAAzvB,eAAA,CACA0vB,EAAA,eACA,KACA,CACAA,EAAA,OACA,CACA,CACA,MAAAl4B,EAAAi4B,EAAApwB,iBACA,MAAAnI,EAAAu4B,EAAA/vB,oBACA,MAAAkwB,EAAAC,QAAAd,EAAAW,GAAAD,EAAA5wB,KAAArH,EAAAN,GACAq4B,kBAAAniC,UAAAwP,GAAAgzB,EAEAziC,OAAAwJ,OAAA44B,kBAAAniC,UAAAwP,GAAA6yB,GACA,GAAAA,EAAAK,eAAAV,oBAAAK,EAAAK,cAAA,CACAP,kBAAAniC,UAAAqiC,EAAAK,cACAP,kBAAAniC,UAAAwP,EACA,KAEA2yB,kBAAAQ,QAAAV,EACAE,kBAAAvD,cACA,OAAAuD,iBACA,CACA9kC,EAAAwmB,4CACA,SAAA4e,QAAAllC,EAAAkU,EAAArH,EAAAN,GAEA,mBAAAtJ,GACA,OAAAjD,EAAA4C,KAAA4C,KAAA0O,EAAArH,EAAAN,KAAAtJ,EACA,CACA,CACA,SAAAoiC,yBAAAt3B,GACA,iBAAAA,CACA,CAMA,SAAAsY,sBAAAif,GACA,MAAA/jB,EAAA,GACA,UAAAgkB,KAAAD,EAAA,CACA,GAAA9iC,OAAAC,UAAAC,eAAAE,KAAA0iC,EAAAC,GAAA,CACA,MAAAH,EAAAE,EAAAC,GACA,MAAAC,EAAAD,EAAAruB,MAAA,KACA,GAAAsuB,EAAA1jC,MAAA2jC,GAAAhB,oBAAAgB,KAAA,CACA,QACA,CACA,MAAApE,EAAAmE,IAAApkC,OAAA,GACA,IAAAskC,EAAAnkB,EACA,UAAAokB,KAAAH,EAAAriC,MAAA,OACA,IAAAuiC,EAAAC,GAAA,CACAD,EAAAC,GAAA,EACA,CACAD,IAAAC,EACA,CACA,GAAAN,yBAAAD,GAAA,CACAM,EAAArE,GAAA+D,CACA,KACA,CACAM,EAAArE,GAAA/a,sBAAA8e,EAAA/D,EAAA,GACA,CACA,CACA,CACA,OAAA9f,CACA,CACAzhB,EAAAumB,2C,gBC7HA7jB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAmvB,4BAAAnvB,EAAA8lC,0BAAA,EACA,MAAAlsB,EAAA9Z,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAAgmC,6BAAAlsB,EAAA4B,WACA,WAAAhW,CAAAhD,GACA2G,QACAzD,KAAAqgC,mBAAAp6B,EAAAoR,gCACArX,KAAAsgC,sBAAAr6B,EAAAmR,mCACA,oCAAAta,EAAA,CACAkD,KAAAqgC,mBAAAvjC,EAAA,+BACA,CACA,uCAAAA,EAAA,CACAkD,KAAAsgC,sBAAAxjC,EAAA,kCACA,CACA,CACA,iBAAAoQ,CAAAtQ,GAGA,GAAAoD,KAAAqgC,sBAAA,GACA,OAAAzjC,CACA,KACA,CACA,MAAA2jC,QAAA3jC,EACA,GAAA2jC,EAAA3jC,QAAAhB,OAAAoE,KAAAqgC,mBAAA,CACA,MACAl6B,KAAAF,EAAAG,OAAAo6B,mBACAn6B,QAAA,iCAAAk6B,EAAA3jC,QAAAhB,cAAAoE,KAAAqgC,sBACAp9B,SAAA,IAAAhB,EAAAiB,SAEA,KACA,CACA,OAAAq9B,CACA,CACA,CACA,CACA,oBAAArpB,CAAAta,GAGA,GAAAoD,KAAAsgC,yBAAA,GACA,OAAA1jC,CACA,KACA,CACA,MAAA2jC,QAAA3jC,EACA,GAAA2jC,EAAA3kC,OAAAoE,KAAAsgC,sBAAA,CACA,MACAn6B,KAAAF,EAAAG,OAAAo6B,mBACAn6B,QAAA,qCAAAk6B,EAAA3kC,cAAAoE,KAAAsgC,yBACAr9B,SAAA,IAAAhB,EAAAiB,SAEA,KACA,CACA,OAAAq9B,CACA,CACA,CACA,EAEAjmC,EAAA8lC,0CACA,MAAA3W,4BACA,WAAA3pB,CAAAhD,GACAkD,KAAAlD,SACA,CACA,YAAAqa,GACA,WAAAipB,qBAAApgC,KAAAlD,QACA,EAEAxC,EAAAmvB,uD,iBCnEAzsB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA4I,cAAA,EACA,MAAA6X,EAAA3gB,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAoS,EAAApS,EAAA,MACA,MAAAqmC,EAAA,iBACA,MAAAC,EAAA,WACA,SAAAC,WAAAxjC,GACA,OAAAsjC,EAAAG,KAAAzjC,EACA,CACA,SAAA0jC,sBAAAjiC,GACA,OAAA8hC,EAAAE,KAAAhiC,EACA,CACA,SAAAkiC,YAAA3jC,GACA,OAAAA,EAAA4jC,SAAA,OACA,CACA,SAAAC,iBAAA7jC,GACA,OAAAA,EAAAqhC,WAAA,QACA,CACA,SAAAyC,aAAA9jC,GACA,OAAAA,EAAA+jC,aACA,CACA,SAAAC,SAAAhkC,EAAAyB,GACA,IAAA+hC,WAAAxjC,GAAA,CACA,UAAA6F,MAAA,iBAAA7F,EAAA,gCACA,CACA,GAAAyB,IAAA,MAAAA,IAAA0F,UAAA,CACA,GAAAw8B,YAAA3jC,GAAA,CACA,IAAAsL,OAAA24B,SAAAxiC,GAAA,CACA,UAAAoE,MAAA,oDACA,CACA,KACA,CACA,GAAAyF,OAAA24B,SAAAxiC,GAAA,CACA,UAAAoE,MAAA,0DACA,CACA,IAAA69B,sBAAAjiC,GAAA,CACA,UAAAoE,MAAA,0BAAApE,EAAA,gCACA,CACA,CACA,CACA,CAIA,MAAAsE,SACA,WAAApD,CAAAhD,EAAA,IACAkD,KAAAqhC,aAAA,IAAAjd,IACApkB,KAAAlD,SACA,CAQA,GAAAtB,CAAA2B,EAAAyB,GACAzB,EAAA8jC,aAAA9jC,GACAgkC,SAAAhkC,EAAAyB,GACAoB,KAAAqhC,aAAA7lC,IAAA2B,EAAA,CAAAyB,GACA,CAQA,GAAAwE,CAAAjG,EAAAyB,GACAzB,EAAA8jC,aAAA9jC,GACAgkC,SAAAhkC,EAAAyB,GACA,MAAA0iC,EAAAthC,KAAAqhC,aAAAtqB,IAAA5Z,GACA,GAAAmkC,IAAAh9B,UAAA,CACAtE,KAAAqhC,aAAA7lC,IAAA2B,EAAA,CAAAyB,GACA,KACA,CACA0iC,EAAA/lC,KAAAqD,EACA,CACA,CAKA,MAAAgY,CAAAzZ,GACAA,EAAA8jC,aAAA9jC,GAEA6C,KAAAqhC,aAAAlY,OAAAhsB,EACA,CAMA,GAAA4Z,CAAA5Z,GACAA,EAAA8jC,aAAA9jC,GAEA,OAAA6C,KAAAqhC,aAAAtqB,IAAA5Z,IAAA,EACA,CAMA,MAAAokC,GACA,MAAAxlB,EAAA,GACA,UAAA5e,EAAAd,KAAA2D,KAAAqhC,aAAA,CACA,GAAAhlC,EAAAT,OAAA,GACA,MAAA4lC,EAAAnlC,EAAA,GACA0f,EAAA5e,GAAAsL,OAAA24B,SAAAI,GAAA/4B,OAAAwW,KAAAuiB,IACA,CACA,CACA,OAAAzlB,CACA,CAKA,KAAAM,GACA,MAAAolB,EAAA,IAAAv+B,SAAAlD,KAAAlD,SACA,MAAA4kC,EAAAD,EAAAJ,aACA,UAAAlkC,EAAAyB,KAAAoB,KAAAqhC,aAAA,CACA,MAAAM,EAAA/iC,EAAA3C,KAAAulC,IACA,GAAA/4B,OAAA24B,SAAAI,GAAA,CACA,OAAA/4B,OAAAwW,KAAAuiB,EACA,KACA,CACA,OAAAA,CACA,KAEAE,EAAAlmC,IAAA2B,EAAAwkC,EACA,CACA,OAAAF,CACA,CAQA,KAAA19B,CAAAE,GACA,UAAA9G,EAAAd,KAAA4H,EAAAo9B,aAAA,CACA,MAAAO,GAAA5hC,KAAAqhC,aAAAtqB,IAAA5Z,IAAA,IAAA+G,OAAA7H,GACA2D,KAAAqhC,aAAA7lC,IAAA2B,EAAAykC,EACA,CACA,CACA,UAAAC,CAAA/kC,GACAkD,KAAAlD,SACA,CACA,UAAAigC,GACA,OAAA/8B,KAAAlD,OACA,CAIA,cAAAglC,GAEA,MAAA/lB,EAAA,GACA,UAAA5e,EAAAd,KAAA2D,KAAAqhC,aAAA,CAGAtlB,EAAA5e,GAAAd,EAAAJ,IAAA8lC,YACA,CACA,OAAAhmB,CACA,CAKA,MAAAimB,GACA,MAAAjmB,EAAA,GACA,UAAA5e,EAAAd,KAAA2D,KAAAqhC,aAAA,CACAtlB,EAAA5e,GAAAd,CACA,CACA,OAAA0f,CACA,CAMA,uBAAAkmB,CAAAl/B,GACA,MAAAgZ,EAAA,IAAA7Y,SACA,UAAA/F,KAAAH,OAAAmG,KAAAJ,GAAA,CAEA,GAAA5F,EAAAqiC,OAAA,UACA,QACA,CACA,MAAAnjC,EAAA0G,EAAA5F,GACA,IACA,GAAA2jC,YAAA3jC,GAAA,CACA,GAAAO,MAAAwzB,QAAA70B,GAAA,CACAA,EAAAgjC,SAAAzgC,IACAmd,EAAA3Y,IAAAjG,EAAAsL,OAAAwW,KAAArgB,EAAA,aAEA,MACA,GAAAvC,IAAAiI,UAAA,CACA,GAAA08B,iBAAA7jC,GAAA,CACAd,EAAAqV,MAAA,KAAA2tB,SAAAmC,IACAzlB,EAAA3Y,IAAAjG,EAAAsL,OAAAwW,KAAAuiB,EAAAU,OAAA,aAEA,KACA,CACAnmB,EAAA3Y,IAAAjG,EAAAsL,OAAAwW,KAAA5iB,EAAA,UACA,CACA,CACA,KACA,CACA,GAAAqB,MAAAwzB,QAAA70B,GAAA,CACAA,EAAAgjC,SAAAzgC,IACAmd,EAAA3Y,IAAAjG,EAAAyB,EAAA,GAEA,MACA,GAAAvC,IAAAiI,UAAA,CACAyX,EAAA3Y,IAAAjG,EAAAd,EACA,CACA,CACA,CACA,MAAAiK,GACA,MAAA1J,EAAA,gCAAAO,MAAAd,OAAA,EAAAmQ,EAAA4C,iBAAA9I,8EACA,EAAAyU,EAAA/c,KAAAiI,EAAAwQ,aAAAC,MAAA9Z,EACA,CACA,CACA,OAAAmf,CACA,EAEAzhB,EAAA4I,kBACA,MAAA6+B,YAAAI,GACA15B,OAAA24B,SAAAe,KAAAjjB,SAAA,UAAAijB,C,iBCrOAnlC,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAwf,YAAAxf,EAAAyf,kBAAAzf,EAAAuf,oBAAA,EACA,MAAA5X,EAAA7H,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,IAAAyf,GACA,SAAAA,GACAA,IAAA,0BACAA,IAAA,oBACAA,IAAA,4CACAA,IAAA,iBACA,EALA,CAKAA,IAAAvf,EAAAuf,iBAAA,KAKA,MAAAE,kBACA,WAAAja,CAAAwF,GACAtF,KAAAsF,OAAAtI,OAAAwJ,OAAA,CAAAL,KAAAF,EAAAG,OAAAg8B,YAAA/7B,QAAA,4BAAApD,SAAA,IAAAhB,EAAAiB,UAAAoC,EACA,CACA,IAAAwlB,CAAA2H,GACA,OACAE,eAAA9Y,EAAA8Q,kBACAhG,WAAA,KACArf,OAAAtF,KAAAsF,OACA+wB,cAAA,KACAvD,YAAA,KAEA,EAEAx4B,EAAAyf,oCAUA,MAAAD,YAEA,WAAAha,CAAAuiC,EAAApI,GACAj6B,KAAAqiC,eACAriC,KAAAi6B,cACAj6B,KAAAsiC,eAAA,KACA,CACA,IAAAxX,CAAA2H,GACA,IAAAzyB,KAAAsiC,eAAA,CACAznC,QAAAuuB,UAAA,KACAppB,KAAAqiC,aAAArX,UAAA,IAEAhrB,KAAAsiC,eAAA,IACA,CACA,GAAAtiC,KAAAi6B,YAAA,CACA,OAAAj6B,KAAAi6B,YAAAnP,KAAA2H,EACA,KACA,CACA,OACAE,eAAA9Y,EAAAmjB,MACArY,WAAA,KACArf,OAAA,KACA+wB,cAAA,KACAvD,YAAA,KAEA,CACA,EAEAx4B,EAAAwf,uB,iBCpEA9c,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+oB,MAAA/oB,EAAAukB,kBAAA,EACA,MAAA5D,EAAA7gB,EAAA,MACA,MAAAmoC,EAAAnoC,EAAA,MACA,MAAAooC,EAAApoC,EAAA,MACA,MAAAqoC,EAAAroC,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAsoC,EAAAtoC,EAAA,KACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAA47B,EAAA57B,EAAA,MACA,MAAAghB,EAAAhhB,EAAA,MACA,MAAAyiB,EAAA,eACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA4nB,EAAAjsB,aAAA1b,MAAA8hB,EAAAC,EACA,CAIAxiB,EAAAukB,aAAA,IACA,MAAA8jB,EAAA,IACA,MAAAC,EAAAJ,EAAAK,UAAAN,EAAAO,YACA,MAAAC,EAAAP,EAAAK,UAAAN,EAAAS,QAIA,MAAAC,YACA,WAAAnjC,CAAAiL,EAAAtG,EAAAsR,GACA,IAAA/U,EAAAC,EAAAyM,EACA1N,KAAA+K,SACA/K,KAAAyE,WACAzE,KAAAkjC,qBAAA,KACAljC,KAAAmjC,kBAAA,KACAnjC,KAAAojC,mBAAA,KACApjC,KAAAqjC,oBAAA,KACArjC,KAAAsjC,yBAAA,KACAtjC,KAAAujC,kBAAA,MACAvjC,KAAAwjC,6BAAA,MACAxjC,KAAAyjC,uBAAA,KACAzjC,KAAA0jC,iBAAA,MACA5oB,MAAA,sCAAAI,EAAAP,aAAA5P,IACA,MAAAuT,GAAA,EAAApD,EAAAqD,eAAAxT,EAAA2D,MACA,GAAA4P,IAAA,MACAte,KAAA2jC,SAAA,KACA3jC,KAAA4jC,YAAA,KACA5jC,KAAA6d,KAAA,IACA,KACA,CACA,MAAAmY,EAAA6N,QAAAvlB,EAAAzS,QAAA,EAAAmqB,EAAAc,QAAAxY,EAAAzS,MAAA,CACA7L,KAAA2jC,SAAA,CACA,CACAzK,UAAA,CACA,CACArtB,KAAAyS,EAAAzS,KACAgS,MAAA7c,EAAAsd,EAAAT,QAAA,MAAA7c,SAAA,EAAAA,EAAA1G,EAAAukB,iBAKA7e,KAAA4jC,YAAA,KACA5jC,KAAA6d,KAAA,IACA,KACA,CACA7d,KAAA2jC,SAAA,KACA3jC,KAAA4jC,YAAAtlB,EAAAzS,KACA7L,KAAA6d,MAAA5c,EAAAqd,EAAAT,QAAA,MAAA5c,SAAA,EAAAA,EAAA3G,EAAAukB,YACA,CACA,CACA7e,KAAA8jC,WAAAlkC,KAAAC,SAAA,IACA,GAAAkW,EAAA,+CACA/V,KAAAyjC,uBAAA,KACA,CACAzjC,KAAA+jC,uBAAA,CACA59B,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,wCAAA6U,EAAAP,aAAA3a,KAAA+K,UACA9H,SAAA,IAAAhB,EAAAiB,UAEA,MAAA8gC,EAAA,CACA/jC,aAAA8V,EAAA,qCACA5V,SAAA4V,EAAA,kCAEA/V,KAAAikC,QAAA,IAAA7oB,EAAAhc,gBAAA,KACA,GAAAY,KAAAujC,kBAAA,CACAvjC,KAAAkkC,4BACA,IACAF,GACAhkC,KAAAikC,QAAA7iC,QACApB,KAAAmkC,6BACAz2B,EAAAqI,EAAA,qDAAArI,SAAA,EAAAA,EAAAi1B,EACA3iC,KAAAokC,oBAAAxjC,YAAA,WACAC,aAAAb,KAAAokC,oBACA,CAKA,eAAAC,GACA,GAAArkC,KAAA2jC,WAAA,MACA,IAAA3jC,KAAA0jC,iBAAA,CACA5oB,MAAA,sCAAAI,EAAAP,aAAA3a,KAAA+K,SACAwH,cAAA,KACAvS,KAAAyE,SAAA6/B,uBAAAtkC,KAAA2jC,SAAA,sBAEA3jC,KAAA0jC,iBAAA,IACA,CACA1jC,KAAAikC,QAAAziC,OACAxB,KAAAikC,QAAAxiC,QACAzB,KAAAukC,0BACA,MACA,CACA,GAAAvkC,KAAA4jC,cAAA,MACA9oB,MAAA,kCAAAI,EAAAP,aAAA3a,KAAA+K,SACAwH,cAAA,KACAvS,KAAAyE,SAAA+/B,QAAA,CACAr+B,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,kCAAA6U,EAAAP,aAAA3a,KAAA+K,UACA9H,SAAA,IAAAhB,EAAAiB,UACA,IAEAlD,KAAAukC,yBACA,KACA,CACA,GAAAvkC,KAAAkjC,uBAAA,MACA,MACA,CACApoB,MAAA,2BAAA9a,KAAA4jC,aAOA5jC,KAAAojC,mBAAA,KACA,MAAAxlB,EAAA5d,KAAA4jC,YAKA5jC,KAAAkjC,qBAAAH,EAAAnlB,EAAA,CAAA5hB,IAAA,OACAgE,KAAAkjC,qBAAA/mC,MAAAu6B,IACA,GAAA12B,KAAAkjC,uBAAA,MACA,MACA,CACAljC,KAAAkjC,qBAAA,KACAljC,KAAAikC,QAAAxiC,QACAzB,KAAAikC,QAAAziC,OACA,MAAAijC,EAAA/N,EAAAz6B,KAAAyoC,IAAA,CAAA74B,KAAA64B,EAAA9yB,QAAAiM,MAAA7d,KAAA6d,SACA7d,KAAAojC,mBAAAqB,EAAAxoC,KAAA2V,IAAA,CACAsnB,UAAA,CAAAtnB,OAEA,MAAA+yB,EAAA,IACAF,EACAxoC,KAAAyoC,KAAA74B,KAAA,IAAA64B,EAAA7mB,OACAlM,KAAA,KACA,IACAmJ,MAAA,kCACA,EAAAI,EAAAP,aAAA3a,KAAA+K,QACA,KACA45B,GACA,GAAA3kC,KAAAojC,mBAAAxnC,SAAA,GACAoE,KAAAyE,SAAA+/B,QAAAxkC,KAAA+jC,wBACA,MACA,CAKA/jC,KAAAyE,SAAA6/B,uBAAAtkC,KAAAojC,mBAAApjC,KAAAqjC,oBAAArjC,KAAAsjC,yBAAA,YACAxgC,IACA,GAAA9C,KAAAkjC,uBAAA,MACA,MACA,CACApoB,MAAA,gCACA,EAAAI,EAAAP,aAAA3a,KAAA+K,QACA,KACAjI,EAAAlG,SACAoD,KAAAkjC,qBAAA,KACAljC,KAAAukC,0BACAvkC,KAAAyE,SAAA+/B,QAAAxkC,KAAA+jC,uBAAA,IAIA,GAAA/jC,KAAAyjC,wBAAAzjC,KAAAmjC,oBAAA,MAIAnjC,KAAAmjC,kBAAAP,EAAAhlB,GACA5d,KAAAmjC,kBAAAhnC,MAAAyoC,IACA,GAAA5kC,KAAAmjC,oBAAA,MACA,MACA,CACAnjC,KAAAmjC,kBAAA,KACA,IACAnjC,KAAAqjC,qBAAA,EAAAZ,EAAAoC,+BAAAD,EAAA5kC,KAAA8jC,WACA,CACA,MAAAhhC,GACA9C,KAAAsjC,yBAAA,CACAn9B,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,4CAAAvD,EAAAlG,UACAqG,SAAA,IAAAhB,EAAAiB,SAEA,CACA,GAAAlD,KAAAojC,qBAAA,MAKApjC,KAAAyE,SAAA6/B,uBAAAtkC,KAAAojC,mBAAApjC,KAAAqjC,oBAAArjC,KAAAsjC,yBAAA,QACA,KACAxgC,OASA,CACA,CACA,CACA,wBAAAgiC,GACA,IAAA9jC,EAAAC,EACAJ,aAAAb,KAAAokC,qBACApkC,KAAAokC,qBAAAnjC,GAAAD,EAAAJ,YAAA,KACAZ,KAAAukC,0BACA,GAAAvkC,KAAAujC,kBAAA,CACAvjC,KAAAkkC,4BACA,IACAlkC,KAAAmkC,8BAAA/iC,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,GACAhB,KAAAwjC,6BAAA,IACA,CACA,uBAAAe,GACA1jC,aAAAb,KAAAokC,qBACApkC,KAAAwjC,6BAAA,KACA,CACA,0BAAAU,GACA,GAAAlkC,KAAAkjC,uBAAA,MACAljC,KAAAujC,kBAAA,MACAvjC,KAAAikC,QAAA5iC,UACArB,KAAA8kC,2BACA9kC,KAAAqkC,iBACA,CACA,CACA,gBAAAU,GAKA,GAAA/kC,KAAAkjC,uBAAA,MACA,GAAAljC,KAAAwjC,8BAAAxjC,KAAAikC,QAAApiC,YAAA,CACA,GAAA7B,KAAAwjC,6BAAA,CACA1oB,MAAA,yEACA,KACA,CACAA,MAAA,oDAAA9a,KAAAikC,QAAAliC,aAAAkX,cACA,CACAjZ,KAAAujC,kBAAA,IACA,KACA,CACAvjC,KAAAkkC,4BACA,CACA,CACA,CAMA,OAAA7Y,GACArrB,KAAAujC,kBAAA,MACAvjC,KAAAikC,QAAAxiC,QACAzB,KAAAikC,QAAAziC,OACAxB,KAAAukC,0BACAvkC,KAAAkjC,qBAAA,KACAljC,KAAAmjC,kBAAA,KACAnjC,KAAAojC,mBAAA,KACApjC,KAAAqjC,oBAAA,KACArjC,KAAAsjC,yBAAA,KACAtjC,KAAA0jC,iBAAA,KACA,CAMA,0BAAA9jB,CAAA7U,GACA,OAAAA,EAAA2D,IACA,EAMA,SAAA2U,SACA,EAAApI,EAAAJ,kBAAA,MAAAooB,cACA,EAAAhoB,EAAA+pB,uBAAA,MACA,CACA1qC,EAAA+oB,W,iBC3SArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+oB,WAAA,EACA,MAAA2S,EAAA57B,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA6gB,EAAA7gB,EAAA,MACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAyiB,EAAA,cACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAAC,EACA,CACA,MAAAmoB,EAAA,OACA,MAAAC,EAAA,OAIA,MAAArmB,EAAA,IACA,MAAAsmB,WACA,WAAArlC,CAAAiL,EAAAtG,EAAAsR,GACA,IAAA/U,EACAhB,KAAAyE,WACAzE,KAAAolC,UAAA,GACAplC,KAAAsG,MAAA,KACAtG,KAAAqlC,kBAAA,MACAvqB,MAAA,sCAAAI,EAAAP,aAAA5P,IACA,MAAAmuB,EAAA,GACA,KAAAnuB,EAAAqT,SAAA6mB,GAAAl6B,EAAAqT,SAAA8mB,GAAA,CACAllC,KAAAsG,MAAA,CACAH,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,uBAAA0E,EAAAqT,wBACAnb,SAAA,IAAAhB,EAAAiB,UAEA,MACA,CACA,MAAAoiC,EAAAv6B,EAAA2D,KAAAgD,MAAA,KACA,UAAAhD,KAAA42B,EAAA,CACA,MAAAhnB,GAAA,EAAApD,EAAAqD,eAAA7P,GACA,GAAA4P,IAAA,MACAte,KAAAsG,MAAA,CACAH,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,mBAAA0E,EAAAqT,kBAAA1P,IACAzL,SAAA,IAAAhB,EAAAiB,UAEA,MACA,CACA,GAAA6H,EAAAqT,SAAA6mB,KAAA,EAAAjP,EAAA6N,QAAAvlB,EAAAzS,OACAd,EAAAqT,SAAA8mB,KAAA,EAAAlP,EAAAc,QAAAxY,EAAAzS,MAAA,CACA7L,KAAAsG,MAAA,CACAH,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,mBAAA0E,EAAAqT,kBAAA1P,IACAzL,SAAA,IAAAhB,EAAAiB,UAEA,MACA,CACAg2B,EAAA39B,KAAA,CACAsQ,KAAAyS,EAAAzS,KACAgS,MAAA7c,EAAAsd,EAAAT,QAAA,MAAA7c,SAAA,EAAAA,EAAA6d,GAEA,CACA7e,KAAAolC,UAAAlM,EAAAj9B,KAAA2V,IAAA,CAAAsnB,UAAA,CAAAtnB,OACAkJ,MAAA,UAAA/P,EAAAqT,OAAA,iBAAA8a,EACA,CACA,gBAAA6L,GACA,IAAA/kC,KAAAqlC,kBAAA,CACArlC,KAAAqlC,kBAAA,KACAxqC,QAAAuuB,UAAA,KACA,GAAAppB,KAAAsG,MAAA,CACAtG,KAAAyE,SAAA+/B,QAAAxkC,KAAAsG,MACA,KACA,CACAtG,KAAAyE,SAAA6/B,uBAAAtkC,KAAAolC,UAAA,kBACA,IAEA,CACA,CACA,OAAA/Z,GACArrB,KAAAqlC,kBAAA,KACA,CACA,0BAAAzlB,CAAA7U,GACA,OAAAA,EAAA2D,KAAAgD,MAAA,OACA,EAEA,SAAA2R,SACA,EAAApI,EAAAJ,kBAAAoqB,EAAAE,aACA,EAAAlqB,EAAAJ,kBAAAqqB,EAAAC,WACA,CACA7qC,EAAA+oB,W,iBCvFArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+oB,WAAA,EACA,MAAApI,EAAA7gB,EAAA,MACA,MAAAmrC,YACA,WAAAzlC,CAAAiL,EAAAtG,EAAAsR,GACA/V,KAAAyE,WACAzE,KAAAqlC,kBAAA,MACArlC,KAAAolC,UAAA,GACA,IAAA12B,EACA,GAAA3D,EAAAy6B,YAAA,IACA92B,EAAA,IAAA3D,EAAA2D,IACA,KACA,CACAA,EAAA3D,EAAA2D,IACA,CACA1O,KAAAolC,UAAA,EAAAlM,UAAA,EAAAxqB,UACA,CACA,gBAAAq2B,GACA,IAAA/kC,KAAAqlC,kBAAA,CACArlC,KAAAqlC,kBAAA,KACAxqC,QAAAuuB,SAAAppB,KAAAyE,SAAA6/B,uBAAAtkC,KAAAolC,UAAA,kBACA,CACA,CACA,OAAA/Z,GAEA,CACA,0BAAAzL,CAAA7U,GACA,iBACA,EAEA,SAAAsY,SACA,EAAApI,EAAAJ,kBAAA,OAAA0qB,YACA,CACAjrC,EAAA+oB,W,iBChCArmB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAssB,oBAAAtsB,EAAAslB,oBAAAtlB,EAAAsgB,eAAAtgB,EAAA0qC,sBAAA1qC,EAAAugB,sBAAA,EACA,MAAAK,EAAA9gB,EAAA,MACA,MAAAqrC,EAAA,GACA,IAAAC,EAAA,KAQA,SAAA7qB,iBAAAuD,EAAAunB,GACAF,EAAArnB,GAAAunB,CACA,CACArrC,EAAAugB,kCAMA,SAAAmqB,sBAAA5mB,GACAsnB,EAAAtnB,CACA,CACA9jB,EAAA0qC,4CAOA,SAAApqB,eAAA7P,EAAAtG,EAAA3H,GACA,GAAAiO,EAAAqT,SAAA9Z,WAAAyG,EAAAqT,UAAAqnB,EAAA,CACA,WAAAA,EAAA16B,EAAAqT,QAAArT,EAAAtG,EAAA3H,EACA,KACA,CACA,UAAAkG,MAAA,8CAAAkY,EAAAP,aAAA5P,KACA,CACA,CACAzQ,EAAAsgB,8BAMA,SAAAgF,oBAAA7U,GACA,GAAAA,EAAAqT,SAAA9Z,WAAAyG,EAAAqT,UAAAqnB,EAAA,CACA,OAAAA,EAAA16B,EAAAqT,QAAAwB,oBAAA7U,EACA,KACA,CACA,UAAA/H,MAAA,qBAAAkY,EAAAP,aAAA5P,KACA,CACA,CACAzQ,EAAAslB,wCACA,SAAAgH,oBAAA7b,GACA,GAAAA,EAAAqT,SAAA9Z,aAAAyG,EAAAqT,UAAAqnB,GAAA,CACA,GAAAC,IAAA,MACA,OACAtnB,OAAAsnB,EACAF,UAAAlhC,UACAoK,MAAA,EAAAwM,EAAAP,aAAA5P,GAEA,KACA,CACA,WACA,CACA,CACA,OAAAA,CACA,CACAzQ,EAAAssB,uC,iBCrEA5pB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAmyB,mBAAA,EACA,MAAAxmB,EAAA7L,EAAA,KACA,MAAAwpB,EAAAxpB,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAA2pB,EAAA3pB,EAAA,MACA,MAAAyiB,EAAA,iBACA,MAAA4P,cACA,WAAA3sB,CAAA2O,EAAA7C,EAAA9O,EAAA0sB,EAAAxe,EAAAkhB,GACAlsB,KAAAyO,UACAzO,KAAA4L,SACA5L,KAAAwpB,qBACAxpB,KAAAgL,cACAhL,KAAAksB,aACAlsB,KAAAglB,MAAA,KACAhlB,KAAA07B,YAAA,MACA17B,KAAAkF,eAAA,KACAlF,KAAA6N,iBAAA,MACA7N,KAAA27B,MAAA,MACA37B,KAAA4lC,kBAAA,MACA5lC,KAAA6lC,mBAAA,MACA7lC,KAAA8lC,mBAAA,KACA9lC,KAAAiD,SAAA,KACAjD,KAAAyE,SAAA,KACAzE,KAAA+lC,eAAA,GACA/lC,KAAAgmC,cAAAplC,YAAA,WACAZ,KAAAimC,YAAA,KACAjmC,KAAAyL,SAAA3O,EAAA2O,SACAzL,KAAA6L,KAAA/O,EAAA+O,KACA,GAAA/O,EAAAgP,WAAA,CACA,GAAAhP,EAAA6K,MAAA1B,EAAAqR,UAAA4uB,aAAA,CACAppC,EAAAgP,WAAAmU,GAAA,kBACAjgB,KAAA2G,iBAAAV,EAAAG,OAAAQ,UAAA,8BAEA,CACA,GAAA9J,EAAA6K,MAAA1B,EAAAqR,UAAA6uB,SAAA,CACAnmC,KAAA8a,MAAA,qCACAhe,EAAAgP,WAAAs6B,eACApmC,KAAAyL,UAAA,EAAAmY,EAAAzL,aAAAnY,KAAAyL,SAAA3O,EAAAgP,WAAAs6B,cACA,CACA,CACApmC,KAAA8a,MAAA,WACA9a,KAAAqmC,kBACA,CACA,KAAAvrB,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAA,IAAA7c,KAAAksB,WAAA,KAAApP,EACA,CACA,gBAAAupB,GACAxlC,aAAAb,KAAAgmC,eACAhmC,KAAA8a,MAAA,gBAAA8I,EAAA5L,kBAAAhY,KAAAyL,WACA,MAAAuN,GAAA,EAAA4K,EAAA3L,oBAAAjY,KAAAyL,UACA,GAAAuN,IAAArK,SAAA,CACA3O,KAAA8a,MAAA,+BAAA9B,EAAA,MACA,MAAAstB,eAAA,KACAtmC,KAAA2G,iBAAAV,EAAAG,OAAAmgC,kBAAA,sBAEA,GAAAvtB,GAAA,GACAne,QAAAuuB,SAAAkd,eACA,KACA,CACAtmC,KAAAgmC,cAAAplC,WAAA0lC,eAAAttB,EACA,CACA,CACA,CACA,YAAA+iB,CAAAz2B,GACA,IAAAtF,KAAA27B,MAAA,CACA37B,KAAA27B,MAAA,KACA,IAAA37B,KAAAimC,YAAA,CACAjmC,KAAAimC,YAAAjmC,KAAAwpB,mBAAArS,cACA,CACAtW,aAAAb,KAAAgmC,eACA,MAAAQ,EAAAxmC,KAAAimC,YAAAjqB,gBAAA1W,GACAtF,KAAA8a,MAAA,2BACA0rB,EAAArgC,KACA,aACAqgC,EAAAngC,QACA,KACArG,KAAA+lC,eAAA1G,SAAAoH,KAAAD,KACA3rC,QAAAuuB,UAAA,KACA,IAAApoB,GACAA,EAAAhB,KAAAyE,YAAA,MAAAzD,SAAA,SAAAA,EAAAoE,gBAAAohC,EAAA,GAEA,CACA,CACA,kBAAAE,CAAAh/B,EAAA9K,GACA,IAAAoD,KAAAglB,MAAA,CACA,UAAAhiB,MAAA,qDACA,CACA,MAAAgiB,EAAAhlB,KAAAglB,MACAhlB,KAAA6lC,mBAAA,KACA7lC,KAAAimC,YAAA/4B,YAAArR,QAAAE,QAAA,CAAAa,UAAA+K,MAAAD,EAAAC,SAAAxL,MAAAwqC,IACA3mC,KAAA6lC,mBAAA,MACA7gB,EAAAld,uBAAAJ,EAAAi/B,EAAA/pC,SACA,GAAAoD,KAAA6N,iBAAA,CACAmX,EAAAhd,WACA,KACA1C,IACAtF,KAAA2G,iBAAArB,EAAAa,KAAAb,EAAAe,QAAA,GAEA,CACA,SAAAijB,GACA,GAAAtpB,KAAA27B,MAAA,CACA,MACA,CACA,IAAA37B,KAAAiD,WAAAjD,KAAAyE,SAAA,CACA,UAAAzB,MAAA,gCACA,CACA,MAAA4jC,EAAA5mC,KAAAyO,QAAA6a,UAAAtpB,KAAA4L,OAAA5L,KAAAiD,UACA,GAAA2jC,EAAA3b,OAAA,QACAjrB,KAAAyO,QAAA0c,mBAAAnrB,MACA,MACA,MACA,GAAA4mC,EAAA3b,OAAA,SACA,GAAAjrB,KAAAiD,SAAA85B,aAAA7qB,aAAA,CACAlS,KAAAyO,QAAA0c,mBAAAnrB,KACA,KACA,CACAA,KAAA+7B,aAAA6K,EAAAtgC,MACA,CACA,MACA,CAEA,MAAA4kB,EAAA0b,EAAA1b,OACA,GAAAA,EAAA5lB,SAAAW,EAAAG,OAAAmN,GAAA,CACA,MAAApN,OAAAE,YAAA,EAAA0d,EAAAxM,gCAAA2T,EAAA5lB,OAAA,kCAAAtF,KAAA4L,QACA5L,KAAA+7B,aAAA,CACA51B,OACAE,UACApD,SAAA,IAAAhB,EAAAiB,WAEA,MACA,CACA,GAAAgoB,EAAA2b,aAAA7tB,QAAA,CACA,MAAA8tB,EAAA,IAAAtmC,KACAsmC,EAAAC,WAAAD,EAAAE,aAAA9b,EAAA2b,aAAA7tB,QAAAO,SACAutB,EAAA5lC,gBAAA4lC,EAAA3lC,kBACA+pB,EAAA2b,aAAA7tB,QAAAQ,MAAA,KACAxZ,KAAAyL,UAAA,EAAAmY,EAAAzL,aAAAnY,KAAAyL,SAAAq7B,GACA9mC,KAAAqmC,kBACA,CACArmC,KAAAwpB,mBAAAjuB,KAAA2vB,EAAA+b,wBACAjnC,KAAAimC,YAAAjmC,KAAAwpB,mBAAArS,eACAnX,KAAAimC,YAAAtvB,aAAA9a,QAAAE,QAAAiE,KAAAiD,WAAA9G,MAAA+qC,IACAlnC,KAAAglB,MAAAhlB,KAAAyO,QAAA6d,gBAAApB,EAAAlrB,KAAA4L,OAAA5L,KAAA6L,KAAA7L,KAAAgL,YAAAhL,KAAAyL,UACAzL,KAAA8a,MAAA,kBAAA9a,KAAAglB,MAAA4X,gBAAA,KACA58B,KAAAglB,MAAAjY,MAAAm6B,EAAA,CACAxiC,kBAAAzB,IACAjD,KAAA8a,MAAA,qBACA9a,KAAAyE,SAAAC,kBAAA1E,KAAAimC,YAAApvB,gBAAA5T,GAAA,EAEAgC,iBAAArI,IACAoD,KAAA8a,MAAA,oBACA9a,KAAA4lC,kBAAA,KACA5lC,KAAAimC,YAAA/uB,eAAAta,GAAAT,MAAAgrC,IACAnnC,KAAA8a,MAAA,uCACA9a,KAAA4lC,kBAAA,MACA5lC,KAAAyE,SAAAQ,iBAAAkiC,GACA,GAAAnnC,KAAA8lC,mBAAA,CACA9lC,KAAA+7B,aAAA/7B,KAAA8lC,mBACA,KACAxgC,IACAtF,KAAA2G,iBAAArB,EAAAa,KAAAb,EAAAe,QAAA,GACA,EAEAjB,gBAAAE,IACAtF,KAAA8a,MAAA,mBACA,GAAA9a,KAAA4lC,kBAAA,CACA5lC,KAAA8lC,mBAAAxgC,CACA,KACA,CACAtF,KAAA+7B,aAAAz2B,EACA,KAGA,GAAAtF,KAAA07B,YAAA,CACA17B,KAAAglB,MAAA7d,WACA,CACA,GAAAnH,KAAAkF,eAAA,CACAlF,KAAA0mC,mBAAA1mC,KAAAkF,eAAAwC,QAAA1H,KAAAkF,eAAAtI,QACA,MACA,GAAAoD,KAAA6N,iBAAA,CACA7N,KAAAglB,MAAAhd,WACA,KACA1C,IACAtF,KAAA+7B,aAAAz2B,EAAA,GAEA,CACA,mBAAAikB,CAAAjkB,GACA,IAAAtE,EACA,IAAAA,EAAAhB,KAAAiD,YAAA,MAAAjC,SAAA,SAAAA,EAAA+7B,aAAA7qB,aAAA,CACAlS,KAAAyO,QAAA0c,mBAAAnrB,KACA,KACA,CACAA,KAAA+7B,aAAAz2B,EACA,CACA,CACA,gBAAAqB,CAAArB,EAAAe,GACA,IAAArF,EACAhB,KAAA8a,MAAA,0BAAAxV,EAAA,cAAAe,EAAA,MACArF,EAAAhB,KAAAglB,SAAA,MAAAhkB,SAAA,SAAAA,EAAA2F,iBAAArB,EAAAe,GACArG,KAAA+7B,aAAA,CACA51B,KAAAb,EACAe,UACApD,SAAA,IAAAhB,EAAAiB,UAEA,CACA,OAAA2D,GACA,IAAA7F,EAAAC,EACA,OAAAA,GAAAD,EAAAhB,KAAAglB,SAAA,MAAAhkB,SAAA,SAAAA,EAAA6F,aAAA,MAAA5F,SAAA,EAAAA,EAAAjB,KAAAyO,QAAArD,WACA,CACA,KAAA2B,CAAA9J,EAAAwB,GACAzE,KAAA8a,MAAA,gBACA9a,KAAAiD,WAAAoZ,QACArc,KAAAyE,WACAzE,KAAAspB,WACA,CACA,sBAAAxhB,CAAAJ,EAAA9K,GACAoD,KAAA8a,MAAA,yCAAAle,EAAAhB,QACA,GAAAoE,KAAAglB,MAAA,CACAhlB,KAAA0mC,mBAAAh/B,EAAA9K,EACA,KACA,CACAoD,KAAAkF,eAAA,CAAAwC,UAAA9K,UACA,CACA,CACA,SAAAuK,GACAnH,KAAA8a,MAAA,oBACA,GAAA9a,KAAAglB,MAAA,CACAhlB,KAAAglB,MAAA7d,WACA,KACA,CACAnH,KAAA07B,YAAA,IACA,CACA,CACA,SAAA1zB,GACAhI,KAAA8a,MAAA,oBACA,GAAA9a,KAAAglB,QAAAhlB,KAAA6lC,mBAAA,CACA7lC,KAAAglB,MAAAhd,WACA,KACA,CACAhI,KAAA6N,iBAAA,IACA,CACA,CACA,cAAAiB,CAAA9D,GACAhL,KAAAgL,YAAAhL,KAAAgL,YAAAhH,QAAAgH,EACA,CACA,gBAAA0hB,CAAA+Z,GACAzmC,KAAA+lC,eAAAxqC,KAAAkrC,EACA,CACA,aAAA7J,GACA,OAAA58B,KAAAksB,UACA,EAEA5xB,EAAAmyB,2B,iBC9PAzvB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAuuB,2BAAA,EACA,MAAAxN,EAAAjhB,EAAA,MACA,MAAAqoC,EAAAroC,EAAA,MACA,MAAA4W,EAAA5W,EAAA,KACA,MAAA6gB,EAAA7gB,EAAA,MACA,MAAAqhB,EAAArhB,EAAA,MACA,MAAAghB,EAAAhhB,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAsoC,EAAAtoC,EAAA,KACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAAohB,EAAAphB,EAAA,MACA,MAAAyiB,EAAA,0BACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA4nB,EAAAjsB,aAAA1b,MAAA8hB,EAAAC,EACA,CAKA,MAAAsqB,EAAA,CACA,qBACA,UACA,SAEA,SAAAC,gBAAAzH,EAAAh0B,EAAAi7B,EAAAS,GACA,UAAA76B,KAAAo6B,EAAAp6B,KAAA,CACA,OAAA66B,GACA,YACA,IAAA76B,EAAAmzB,UAAAnzB,EAAAb,OAAA,CACA,WACA,CACA,MACA,cACA,GAAAa,EAAAmzB,cAAAnzB,EAAAb,OAAA,CACA,WACA,CACA,MACA,yBACA,GAAAa,EAAAmzB,aAAAnzB,EAAAb,WAAA,CACA,WACA,EAEA,CACA,YACA,CACA,SAAA27B,mBAAA3H,EAAAh0B,EAAA47B,EAAAF,GACA,UAAApc,KAAAsc,EAAA,CACA,GAAAH,gBAAAzH,EAAAh0B,EAAAsf,EAAAoc,GAAA,CACA,OAAApc,CACA,CACA,CACA,WACA,CACA,SAAAuc,yBAAA3e,GACA,gBAAA4e,sBAAAjM,EAAAx4B,GACA,IAAAjC,EAAAC,EACA,MAAA0mC,EAAAlM,EAAA/pB,MAAA,KAAArB,QAAAu3B,KAAAhsC,OAAA,IACA,MAAAgkC,GAAA5+B,EAAA2mC,EAAA,YAAA3mC,SAAA,EAAAA,EAAA,GACA,MAAA4K,GAAA3K,EAAA0mC,EAAA,YAAA1mC,SAAA,EAAAA,EAAA,GACA,GAAA6nB,KAAA+d,aAAA,CAOA,UAAAS,KAAAF,EAAA,CACA,MAAAS,EAAAN,mBAAA3H,EAAAh0B,EAAAkd,EAAA+d,aAAAS,GACA,GAAAO,EAAA,CACA,OACAhB,aAAAgB,EACAzL,gBAAA,GACA92B,OAAAW,EAAAG,OAAAmN,GACA0zB,uBAAA,GAEA,CACA,CACA,CACA,OACAJ,aAAA,CAAAp6B,KAAA,IACA2vB,gBAAA,GACA92B,OAAAW,EAAAG,OAAAmN,GACA0zB,uBAAA,GAEA,CACA,CACA,MAAApe,sBAaA,WAAA/oB,CAAAiL,EAAA6c,EAAA7R,EAAAuuB,EAAAwD,GACA9nC,KAAA+K,SACA/K,KAAA4nB,uBACA5nB,KAAAskC,yBACAtkC,KAAA8nC,qBACA9nC,KAAA+nC,iBAAA/2B,EAAAqB,kBAAAiT,KACAtlB,KAAAgoC,kBAAA,IAAAvsB,EAAA3B,YAAA9Z,MAIAA,KAAAwL,aAAAwF,EAAAqB,kBAAAiT,KAMAtlB,KAAAioC,sBAAA,KAKAjoC,KAAAujC,kBAAA,MACA,GAAAxtB,EAAA,wBACA/V,KAAAkoC,sBAAA,EAAAzF,EAAA0F,uBAAAze,KAAA0e,MAAAryB,EAAA,wBACA,KACA,CACA/V,KAAAkoC,qBAAA,CACAG,oBAAA,GACAxB,aAAA,GAEA,CACA7mC,KAAAkoB,YAAAlX,EAAAqB,kBAAAiT,KAAA,IAAA7J,EAAA3B,YAAA9Z,OACAA,KAAAsoC,kBAAA,IAAA9sB,EAAAxB,yBAAA,CACA6N,iBAAAD,EAAAC,iBAAA1Z,KAAAyZ,GACAW,oBAAA,KAKA,GAAAvoB,KAAAuoC,eAAA1mC,YAAA,CACAiZ,MAAA,sDAAA9a,KAAAuoC,eAAAxmC,aAAAkX,eACAjZ,KAAAujC,kBAAA,IACA,KACA,CACAvjC,KAAA+kC,kBACA,GAEA7c,YAAA,CAAA9V,EAAA+V,KACAnoB,KAAA+nC,iBAAA31B,EACApS,KAAAgoC,kBAAA7f,EACAnoB,KAAAkoB,YAAA9V,EAAA+V,EAAA,EAEAK,iBAAAZ,EAAAY,iBAAAra,KAAAyZ,GACAc,oBAAAd,EAAAc,oBAAAva,KAAAyZ,IACA7R,GACA/V,KAAAwoC,eAAA,EAAAvtB,EAAAL,gBAAA7P,EAAA,CACAu5B,uBAAA,CAAAvW,EAAAjF,EAAA2f,EAAA9iB,EAAAsI,KACA,IAAAjtB,EACAhB,KAAAuoC,eAAA/mC,OACAxB,KAAAuoC,eAAA9mC,QACA,IAAAinC,EAAA,KAKA,GAAA5f,IAAA,MAEA,GAAA2f,IAAA,MAEAzoC,KAAAioC,sBAAA,KACAS,EAAA1oC,KAAAkoC,oBACA,KACA,CAEA,GAAAloC,KAAAioC,wBAAA,MAEAjoC,KAAA2oC,wBAAAF,EACA,KACA,CAEAC,EAAA1oC,KAAAioC,qBACA,CACA,CACA,KACA,CAEAS,EAAA5f,EACA9oB,KAAAioC,sBAAAnf,CACA,CACA,MAAA8f,GAAA5nC,EAAA0nC,IAAA,MAAAA,SAAA,SAAAA,EAAAL,uBAAA,MAAArnC,SAAA,EAAAA,EAAA,GACA,MAAAqnC,GAAA,EAAAhtB,EAAAb,wBAAAouB,EAAA,MACA,GAAAP,IAAA,MAEAroC,KAAA2oC,wBAAA,CACAxiC,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,iEACApD,SAAA,IAAAhB,EAAAiB,WAEA,MACA,CACAlD,KAAAsoC,kBAAAxa,kBAAAC,EAAAsa,EAAApa,GACA,MAAA4a,EAAAH,IAAA,MAAAA,SAAA,EAAAA,EAAA1oC,KAAAkoC,qBACAloC,KAAAskC,uBAAAuE,EAAAljB,IAAA,MAAAA,SAAA,EAAAA,EAAA8hB,yBAAAoB,GAAA,EAEArE,QAAAl+B,IACAtG,KAAA2oC,wBAAAriC,EAAA,GAEAyP,GACA,MAAAiuB,EAAA,CACA/jC,aAAA8V,EAAA,qCACA5V,SAAA4V,EAAA,kCAEA/V,KAAAuoC,eAAA,IAAAntB,EAAAhc,gBAAA,KACA,GAAAY,KAAAujC,kBAAA,CACAvjC,KAAA+kC,mBACA/kC,KAAAujC,kBAAA,KACA,KACA,CACAvjC,KAAAkoB,YAAAloB,KAAA+nC,iBAAA/nC,KAAAgoC,kBACA,IACAhE,GACAhkC,KAAAuoC,eAAAnnC,OACA,CACA,gBAAA2jC,GACA/kC,KAAAwoC,cAAAzD,mBACA,GAAA/kC,KAAAwL,eAAAwF,EAAAqB,kBAAAiT,KAAA,CAKAtlB,KAAAkoB,YAAAlX,EAAAqB,kBAAAgb,WAAArtB,KAAAgoC,kBACA,CACAhoC,KAAAuoC,eAAAlnC,SACA,CACA,WAAA6mB,CAAA7C,EAAA8C,GACArN,OAAA,EAAAI,EAAAP,aAAA3a,KAAA+K,QACA,IACAiG,EAAAqB,kBAAArS,KAAAwL,cACA,OACAwF,EAAAqB,kBAAAgT,IAEA,GAAAA,IAAArU,EAAAqB,kBAAAiT,KAAA,CACA6C,EAAA,IAAA1M,EAAA3B,YAAA9Z,KAAAmoB,EACA,CACAnoB,KAAAwL,aAAA6Z,EACArlB,KAAA4nB,qBAAAM,YAAA7C,EAAA8C,EACA,CACA,uBAAAwgB,CAAAriC,GACA,GAAAtG,KAAA+nC,mBAAA/2B,EAAAqB,kBAAAiT,KAAA,CACAtlB,KAAAkoB,YAAAlX,EAAAqB,kBAAAsY,kBAAA,IAAAlP,EAAA1B,kBAAAzT,IACAtG,KAAA8nC,mBAAAxhC,EACA,CACA,CACA,QAAA0kB,GACA,GAAAhrB,KAAAwL,eAAAwF,EAAAqB,kBAAAiT,MACAtlB,KAAAwL,eAAAwF,EAAAqB,kBAAAsY,kBAAA,CACA,GAAA3qB,KAAAuoC,eAAA1mC,YAAA,CACA7B,KAAAujC,kBAAA,IACA,KACA,CACAvjC,KAAA+kC,kBACA,CACA,CACA/kC,KAAAsoC,kBAAAtd,UACA,CACA,iBAAA8C,CAAAC,EAAAC,GACA,UAAAhrB,MAAA,2DACA,CACA,YAAAqrB,GACAruB,KAAAuoC,eAAA9mC,QACAzB,KAAAsoC,kBAAAja,cACA,CACA,OAAAhD,GACArrB,KAAAsoC,kBAAAjd,UACArrB,KAAAwoC,cAAAnd,UACArrB,KAAAuoC,eAAA9mC,QACAzB,KAAAuoC,eAAA/mC,OACAxB,KAAA+nC,iBAAA/2B,EAAAqB,kBAAAiT,KACAtlB,KAAAgoC,kBAAA,IAAAvsB,EAAA3B,YAAA9Z,MACAA,KAAAwL,aAAAwF,EAAAqB,kBAAAiT,KACAtlB,KAAAioC,sBAAA,KACAjoC,KAAAujC,kBAAA,KACA,CACA,WAAAjV,GACA,+BACA,EAEAh0B,EAAAuuB,2C,iBCjSA7rB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+xB,aAAA/xB,EAAAotB,qBAAAptB,EAAA0uB,oBAAA,EACA,MAAA/iB,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAyiB,EAAA,gBACA,MAAAmM,eACA,WAAAlpB,CAAAmpB,EAAAC,EAAA4f,GACA9oC,KAAAipB,YACAjpB,KAAAkpB,aACA,GAAA4f,EAAA,CAGA9oC,KAAA+oC,OACAD,EAAAC,QACA9f,EAAA6f,EAAA7f,UACA,KACA,CACAjpB,KAAA+oC,OAAA9f,CACA,CACA,CACA,gBAAA6C,GACA9rB,KAAA+oC,OAAAnpC,KAAAD,IAAAK,KAAA+oC,OAAA/oC,KAAAkpB,WAAAlpB,KAAAipB,UACA,CACA,aAAA8C,GACA/rB,KAAA+oC,OAAAnpC,KAAAF,IAAAM,KAAA+oC,OAAA,IACA,CACA,YAAAC,GACA,OAAAhpC,KAAA+oC,OAAA/oC,KAAAipB,UAAA,CACA,EAEA3uB,EAAA0uB,8BACA,MAAAtB,qBACA,WAAA5nB,CAAAmpC,EAAAC,GACAlpC,KAAAipC,aACAjpC,KAAAkpC,eACAlpC,KAAAmpC,eAAA,EACAnpC,KAAAopC,iBAAA,IAAAhlB,GACA,CACA,QAAAilB,CAAA3V,EAAA4V,GACA,IAAAtoC,EACA,MAAAuoC,GAAAvoC,EAAAhB,KAAAopC,iBAAAryB,IAAAuyB,MAAA,MAAAtoC,SAAA,EAAAA,EAAA,EACA,GAAAhB,KAAAkpC,aAAAK,EAAA7V,GACA1zB,KAAAipC,WAAAjpC,KAAAmpC,eAAAzV,EAAA,CACA,YACA,CACA1zB,KAAAopC,iBAAA5tC,IAAA8tC,EAAAC,EAAA7V,GACA1zB,KAAAmpC,gBAAAzV,EACA,WACA,CACA,IAAA8V,CAAA9V,EAAA4V,GACA,IAAAtoC,EACA,GAAAhB,KAAAmpC,eAAAzV,EAAA,CACA,UAAA1wB,MAAA,yCAAAsmC,WAAA5V,uBAAA1zB,KAAAmpC,iBACA,CACAnpC,KAAAmpC,gBAAAzV,EACA,MAAA6V,GAAAvoC,EAAAhB,KAAAopC,iBAAAryB,IAAAuyB,MAAA,MAAAtoC,SAAA,EAAAA,EAAA,EACA,GAAAuoC,EAAA7V,EAAA,CACA,UAAA1wB,MAAA,yCAAAsmC,WAAA5V,0BAAA6V,IACA,CACAvpC,KAAAopC,iBAAA5tC,IAAA8tC,EAAAC,EAAA7V,EACA,CACA,OAAA+V,CAAAH,GACA,IAAAtoC,EACA,MAAAuoC,GAAAvoC,EAAAhB,KAAAopC,iBAAAryB,IAAAuyB,MAAA,MAAAtoC,SAAA,EAAAA,EAAA,EACA,GAAAhB,KAAAmpC,eAAAI,EAAA,CACA,UAAAvmC,MAAA,yCAAAsmC,eAAAC,uBAAAvpC,KAAAmpC,iBACA,CACAnpC,KAAAmpC,gBAAAI,EACAvpC,KAAAopC,iBAAAjgB,OAAAmgB,EACA,EAEAhvC,EAAAotB,0CACA,MAAAgiB,EAAA,6BACA,MAAArd,aACA,WAAAvsB,CAAA2O,EAAAwd,EAAAwP,EAAA5vB,EAAAb,EAAAS,EAAAygB,EAAAyd,EAAAC,GACA5pC,KAAAyO,UACAzO,KAAAisB,aACAjsB,KAAAy7B,aACAz7B,KAAA6L,OACA7L,KAAAgL,cACAhL,KAAAyL,WACAzL,KAAAksB,aACAlsB,KAAA2pC,gBACA3pC,KAAA4pC,iBACA5pC,KAAAyE,SAAA,KACAzE,KAAA6pC,gBAAA,KACA7pC,KAAA8pC,gBAAA,GACA9pC,KAAA+pC,YAAA,GAMA/pC,KAAAgqC,kBAAA,EAOAhqC,KAAAiqC,YAAA,MACAjqC,KAAAkqC,qBAAA,MAIAlqC,KAAAmqC,SAAA,EACAnqC,KAAAoqC,aAAA,KACApqC,KAAAqqC,mBAAA,KACArqC,KAAAsqC,uBAAA,EACAtqC,KAAAuqC,oBAAA,EACA,GAAAte,EAAA4a,aAAA2D,YAAA,CACAxqC,KAAA+pB,MAAA,QACA,MAAAygB,EAAAve,EAAA4a,aAAA2D,YACAxqC,KAAAuqC,oBAAAvqC,KAAAsqC,uBAAA1iC,OAAA4iC,EAAAC,eAAA5gB,UAAA,EAAA2gB,EAAAC,eAAA7uC,OAAA,GACA,MACA,GAAAqwB,EAAA4a,aAAA6D,cAAA,CACA1qC,KAAA+pB,MAAA,SACA,KACA,CACA/pB,KAAA+pB,MAAA,kBACA,CACA,CACA,aAAA6S,GACA,OAAA58B,KAAAksB,UACA,CACA,KAAApR,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAA,IAAA7c,KAAAksB,WAAA,KAAApP,EACA,CACA,YAAA6tB,CAAAC,GACA5qC,KAAA8a,MAAA,2BACA8vB,EAAAzkC,KACA,aACAykC,EAAAvkC,QACA,KACArG,KAAA2pC,cAAAF,QAAAzpC,KAAAksB,YACAlsB,KAAAgqC,kBAAAhqC,KAAAgqC,kBAAAhqC,KAAA+pC,YAAAnuC,OACAoE,KAAA+pC,YAAA,GACAlvC,QAAAuuB,UAAA,KACA,IAAApoB,GAEAA,EAAAhB,KAAAyE,YAAA,MAAAzD,SAAA,SAAAA,EAAAoE,gBAAA,CACAe,KAAAykC,EAAAzkC,KACAE,QAAAukC,EAAAvkC,QACApD,SAAA2nC,EAAA3nC,UACA,GAEA,CACA,gBAAA0D,CAAArB,EAAAe,GACArG,KAAA8a,MAAA,0BAAAxV,EAAA,cAAAe,EAAA,KACArG,KAAA2qC,aAAA,CAAAxkC,KAAAb,EAAAe,UAAApD,SAAA,IAAAhB,EAAAiB,WACA,UAAA9F,UAAA4C,KAAA8pC,gBAAA,CACA1sC,EAAAuJ,iBAAArB,EAAAe,EACA,CACA,CACA,OAAAQ,GACA,GAAA7G,KAAAqqC,qBAAA,MACA,OAAArqC,KAAA8pC,gBAAA9pC,KAAAqqC,oBAAAjtC,KAAAyJ,SACA,KACA,CACA,eACA,CACA,CACA,cAAAgkC,CAAAC,GACA,IAAA9pC,EACA,OAAAA,EAAAhB,KAAA+pC,YAAAe,EAAA9qC,KAAAgqC,sBAAA,MAAAhpC,SAAA,EAAAA,EAAA,CACA+pC,UAAA,QACAC,UAAA,MAEA,CACA,kBAAAC,GACA,OAAAjrC,KAAAgqC,kBAAAhqC,KAAA+pC,YAAAnuC,MACA,CACA,iBAAAsvC,GACA,GAAAlrC,KAAA+pB,QAAA,aACA,MACA,CACA,MAAAohB,EAAAnrC,KAAA8pC,gBAAA9pC,KAAAqqC,oBAAAe,kBACA,QAAAN,EAAA9qC,KAAAgqC,kBAAAc,EAAAK,EAAAL,IAAA,CACA,MAAAO,EAAArrC,KAAA6qC,eAAAC,GACA,GAAAO,EAAAL,UAAA,CACAhrC,KAAA2pC,cAAAH,KAAA6B,EAAAzuC,gBAAAhB,OAAAoE,KAAAksB,WACA,CACA,CACAlsB,KAAA+pC,YAAA/pC,KAAA+pC,YAAApsC,MAAAwtC,EAAAnrC,KAAAgqC,mBACAhqC,KAAAgqC,kBAAAmB,CACA,CACA,UAAAG,CAAAjnC,GACA,GAAArE,KAAA+pB,QAAA,aACA,MACA,CACA,GAAA/pB,KAAA8pC,gBAAAzlC,GAAA0lB,QAAA,aACA,MACA,CACA/pB,KAAA8a,MAAA,oBACA9a,KAAA8pC,gBAAAzlC,GAAAjH,KAAAw/B,gBACA,cACAv4B,GACArE,KAAA+pB,MAAA,YACA/pB,KAAAqqC,mBAAAhmC,EACA,QAAA1I,EAAA,EAAAA,EAAAqE,KAAA8pC,gBAAAluC,OAAAD,IAAA,CACA,GAAAA,IAAA0I,EAAA,CACA,QACA,CACA,GAAArE,KAAA8pC,gBAAAnuC,GAAAouB,QAAA,aACA,QACA,CACA/pB,KAAA8pC,gBAAAnuC,GAAAouB,MAAA,YACA/pB,KAAA8pC,gBAAAnuC,GAAAyB,KAAAuJ,iBAAAV,EAAAG,OAAAQ,UAAA,6CACA,CACA5G,KAAAkrC,mBACA,CACA,0BAAAK,GACA,GAAAvrC,KAAA+pB,QAAA,aACA,MACA,CACA,IAAAyhB,GAAA,EACA,IAAAC,GAAA,EACA,UAAApnC,EAAAqnC,KAAA1rC,KAAA8pC,gBAAA5V,UAAA,CACA,GAAAwX,EAAA3hB,QAAA,UACA2hB,EAAAN,kBAAAI,EAAA,CACAA,EAAAE,EAAAN,kBACAK,EAAApnC,CACA,CACA,CACA,GAAAonC,KAAA,GAGAzrC,KAAA+pB,MAAA,kBACA,KACA,CACA/pB,KAAAsrC,WAAAG,EACA,CACA,CACA,kBAAAE,CAAArV,EAAAnwB,GACA,OAAAmwB,EAAAh6B,MAAAsC,OAAAuH,GACAvH,EAAAsgB,WAAAgiB,gBAAAj7B,EAAAG,OAAAD,GAAA+6B,eACA,CACA,qBAAA0K,GACA,IAAA5qC,EACA,MAAAwpC,GAAAxpC,EAAAhB,KAAAisB,cAAA,MAAAjrB,SAAA,SAAAA,EAAA6lC,aAAA2D,YACA,IAAAA,EAAA,CACA,QACA,CACA,MAAAqB,EAAAjsC,KAAAC,SAAAG,KAAAuqC,oBAAA,IACA,MAAAuB,EAAAlkC,OAAA4iC,EAAAuB,WAAAliB,UAAA,EAAA2gB,EAAAuB,WAAAnwC,OAAA,IACAoE,KAAAuqC,oBAAA3qC,KAAAF,IAAAM,KAAAuqC,oBAAAC,EAAAwB,kBAAAF,GACA,OAAAD,CACA,CACA,cAAAI,CAAAC,EAAAnsC,GACA,GAAAC,KAAA+pB,QAAA,SACAhqB,EAAA,OACA,MACA,CACA,MAAAyqC,EAAAxqC,KAAAisB,WAAA4a,aAAA2D,YACA,GAAAxqC,KAAAmqC,UAAAvqC,KAAAF,IAAA8qC,EAAA2B,YAAA,IACApsC,EAAA,OACA,MACA,CACA,IAAAqsC,EACA,GAAAF,IAAA,MACAE,EAAApsC,KAAA4rC,uBACA,MACA,GAAAM,EAAA,GACAlsC,KAAA+pB,MAAA,mBACAhqB,EAAA,OACA,MACA,KACA,CACAqsC,EAAAF,EACAlsC,KAAAuqC,oBAAAvqC,KAAAsqC,sBACA,CACA1pC,YAAA,KACA,IAAAI,EAAAC,EACA,GAAAjB,KAAA+pB,QAAA,SACAhqB,EAAA,OACA,MACA,CACA,IAAAkB,GAAAD,EAAAhB,KAAA4pC,kBAAA,MAAA5oC,SAAA,SAAAA,EAAAgoC,kBAAA,MAAA/nC,SAAA,EAAAA,EAAA,MACAlB,EAAA,MACAC,KAAAmqC,UAAA,EACAnqC,KAAAqsC,iBACA,IACAD,EACA,CACA,gBAAAE,GACA,IAAAC,EAAA,EACA,UAAAnvC,KAAA4C,KAAA8pC,gBAAA,CACA,IAAA1sC,IAAA,MAAAA,SAAA,SAAAA,EAAA2sB,SAAA,UACAwiB,GAAA,CACA,CACA,CACA,OAAAA,CACA,CACA,qBAAAC,CAAAlnC,EAAAmnC,EAAAP,GACA,IAAAlrC,EAAAC,EAAAyM,EACA,OAAA1N,KAAA+pB,OACA,gBACA,uBACA/pB,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,GACA,MACA,cACA,GAAAtF,KAAA2rC,oBAAA3qC,EAAAhB,KAAAisB,WAAA4a,aAAA6D,cAAAgC,uBAAA,MAAA1rC,SAAA,EAAAA,EAAA,GAAAsE,EAAAa,MAAA,EACAlF,EAAAjB,KAAA4pC,kBAAA,MAAA3oC,SAAA,SAAAA,EAAA8qB,gBACA,IAAAyJ,EACA,GAAA0W,IAAA,MACA1W,EAAA,CACA,MACA,GAAA0W,EAAA,GACAlsC,KAAA+pB,MAAA,mBACA/pB,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,GACA,MACA,KACA,CACAkwB,EAAA0W,CACA,CACAtrC,YAAA,KACAZ,KAAA2sC,2BAEA,GAAA3sC,KAAAssC,qBAAA,GACAtsC,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,EACA,IACAkwB,EACA,KACA,CACAx1B,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,EACA,CACA,MACA,YACA,GAAAtF,KAAA2rC,mBAAA3rC,KAAAisB,WAAA4a,aAAA2D,YAAAoC,qBAAAtnC,EAAAa,MAAA,EACAuH,EAAA1N,KAAA4pC,kBAAA,MAAAl8B,SAAA,SAAAA,EAAAqe,gBACA/rB,KAAAisC,eAAAC,GAAAW,IACA,IAAAA,EAAA,CACA7sC,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,EACA,IAEA,KACA,CACAtF,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,EACA,CACA,MAEA,CACA,WAAAwnC,CAAA7pC,GACA,MAAA8pC,EAAA9pC,EAAA8T,IAAA,0BACA,GAAAg2B,EAAAnxC,SAAA,GACA,WACA,CACA,IACA,OAAAoxC,SAAAD,EAAA,GACA,CACA,MAAApyC,GACA,QACA,CACA,CACA,iBAAAsyC,CAAA3nC,EAAAmnC,GACA,IAAAzrC,EACA,GAAAhB,KAAA8pC,gBAAA2C,GAAA1iB,QAAA,aACA,MACA,CACA/pB,KAAA8a,MAAA,SACA9a,KAAA+pB,MACA,kCACAzkB,EAAA02B,SACA,gBACAh8B,KAAA8pC,gBAAA2C,GAAArvC,KAAAw/B,gBACA,cACA58B,KAAA8pC,gBAAA2C,GAAA1iB,OACA/pB,KAAA8pC,gBAAA2C,GAAA1iB,MAAA,YACA,GAAAzkB,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,EACAvS,EAAAhB,KAAA4pC,kBAAA,MAAA5oC,SAAA,SAAAA,EAAA8qB,mBACA9rB,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,GACA,MACA,CACA,GAAAtF,KAAA+pB,QAAA,aACA/pB,KAAA2qC,aAAArlC,GACA,MACA,CACA,MAAA4mC,EAAAlsC,KAAA8sC,YAAAxnC,EAAArC,UACA,OAAAqC,EAAA02B,UACA,kBAEAh8B,KAAAqsC,kBACA,MACA,cAEA,GAAArsC,KAAAkqC,qBAAA,CACAlqC,KAAAwsC,sBAAAlnC,EAAAmnC,EAAAP,EACA,KACA,CACAlsC,KAAAkqC,qBAAA,KACAlqC,KAAAqsC,iBACA,CACA,MACA,WACArsC,KAAAsrC,WAAAmB,GACAzsC,KAAA2qC,aAAArlC,GACA,MACA,gBACAtF,KAAAwsC,sBAAAlnC,EAAAmnC,EAAAP,GACA,MAEA,CACA,wBAAAS,GACA,GAAA3sC,KAAA+pB,QAAA,WACA,MACA,CACA,IAAA/pB,KAAAisB,WAAA4a,aAAA6D,cAAA,CACA,MACA,CACA,MAAAA,EAAA1qC,KAAAisB,WAAA4a,aAAA6D,cACA,GAAA1qC,KAAAmqC,UAAAvqC,KAAAF,IAAAgrC,EAAAyB,YAAA,IACA,MACA,CACAnsC,KAAAmqC,UAAA,EACAnqC,KAAAqsC,kBACArsC,KAAAktC,wBACA,CACA,sBAAAA,GACA,IAAAlsC,EAAAC,EAAAyM,EACA,GAAA1N,KAAAoqC,aAAA,CACAvpC,aAAAb,KAAAoqC,aACA,CACA,GAAApqC,KAAA+pB,QAAA,WACA,MACA,CACA,IAAA/pB,KAAAisB,WAAA4a,aAAA6D,cAAA,CACA,MACA,CACA,MAAAA,EAAA1qC,KAAAisB,WAAA4a,aAAA6D,cACA,GAAA1qC,KAAAmqC,UAAAvqC,KAAAF,IAAAgrC,EAAAyB,YAAA,IACA,MACA,CACA,MAAAgB,GAAAnsC,EAAA0pC,EAAA0C,gBAAA,MAAApsC,SAAA,EAAAA,EAAA,KACA,MAAAqsC,EAAAzlC,OAAAulC,EAAAtjB,UAAA,EAAAsjB,EAAAvxC,OAAA,IACAoE,KAAAoqC,aAAAxpC,YAAA,KACAZ,KAAA2sC,0BAAA,GACAU,EAAA,MACA3/B,GAAAzM,EAAAjB,KAAAoqC,cAAAhpC,SAAA,MAAAsM,SAAA,SAAAA,EAAAtQ,KAAA6D,EACA,CACA,eAAAorC,GACA,MAAArnB,EAAAhlB,KAAAyO,QAAAud,wBAAAhsB,KAAAisB,WAAAjsB,KAAAy7B,WAAAz7B,KAAA6L,KAAA7L,KAAAgL,YAAAhL,KAAAyL,UACAzL,KAAA8a,MAAA,uBACAkK,EAAA4X,gBACA,iBACA58B,KAAAmqC,UACA,MAAA9lC,EAAArE,KAAA8pC,gBAAAluC,OACAoE,KAAA8pC,gBAAAvuC,KAAA,CACAwuB,MAAA,SACA3sB,KAAA4nB,EACAomB,kBAAA,IAEA,MAAAkC,EAAAttC,KAAAmqC,SAAA,EACA,MAAAN,EAAA7pC,KAAA6pC,gBAAAxtB,QACA,GAAAixB,EAAA,GACAzD,EAAAruC,IAAAkuC,EAAA,GAAA4D,IACA,CACA,IAAAC,EAAA,MACAvoB,EAAAjY,MAAA88B,EAAA,CACAnlC,kBAAAzB,IACAjD,KAAA8a,MAAA,iCAAAkK,EAAA4X,gBAAA,KACA58B,KAAAsrC,WAAAjnC,GACAkpC,EAAA,KACA,GAAAD,EAAA,GACArqC,EAAAzH,IAAAkuC,EAAA,GAAA4D,IACA,CACA,GAAAttC,KAAA8pC,gBAAAzlC,GAAA0lB,QAAA,UACA/pB,KAAAyE,SAAAC,kBAAAzB,EACA,GAEAgC,iBAAArI,IACAoD,KAAA8a,MAAA,gCAAAkK,EAAA4X,gBAAA,KACA58B,KAAAsrC,WAAAjnC,GACA,GAAArE,KAAA8pC,gBAAAzlC,GAAA0lB,QAAA,UACA/pB,KAAAyE,SAAAQ,iBAAArI,EACA,GAEAwI,gBAAAE,IACAtF,KAAA8a,MAAA,+BAAAkK,EAAA4X,gBAAA,KACA,IAAA2Q,GAAAD,EAAA,GACAhoC,EAAArC,SAAAzH,IAAAkuC,EAAA,GAAA4D,IACA,CACAttC,KAAAitC,kBAAA3nC,EAAAjB,EAAA,IAGArE,KAAAwtC,qBAAAnpC,GACA,GAAArE,KAAAiqC,YAAA,CACAjlB,EAAA7d,WACA,CACA,CACA,KAAA4F,CAAA9J,EAAAwB,GACAzE,KAAA8a,MAAA,gBACA9a,KAAAyE,WACAzE,KAAA6pC,gBAAA5mC,EACAjD,KAAAmqC,UAAA,EACAnqC,KAAAqsC,kBACArsC,KAAAktC,wBACA,CACA,yBAAAO,CAAAC,GACA,IAAA1sC,EAAAC,EACA,MAAAyqC,EAAA1rC,KAAA8pC,gBAAA4D,GACA,MAAA5C,EAAAY,EAAAN,mBACAnqC,GAAAD,EAAAhB,KAAA6qC,eAAAC,IAAA/qC,YAAA,MAAAkB,SAAA,SAAAA,EAAA7D,KAAA4D,GACAhB,KAAAkrC,oBACAQ,EAAAN,mBAAA,EACAprC,KAAAwtC,qBAAAE,EACA,CACA,oBAAAF,CAAAE,GACA,MAAAhC,EAAA1rC,KAAA8pC,gBAAA4D,GACA,GAAAhC,EAAA3hB,QAAA,aACA,MACA,CACA,GAAA/pB,KAAA6qC,eAAAa,EAAAN,mBAAA,CACA,MAAAC,EAAArrC,KAAA6qC,eAAAa,EAAAN,mBACA,OAAAC,EAAAN,WACA,cACAW,EAAAtuC,KAAA0K,uBAAA,CACA/H,SAAAuG,IAEAtG,KAAAytC,0BAAAC,EAAA,GAEArC,EAAAzuC,iBACA,MACA,iBACA8uC,EAAAN,mBAAA,EACAM,EAAAtuC,KAAA4K,YACA,MACA,YAEA,MAEA,CACA,CACA,sBAAAF,CAAAJ,EAAA9K,GACA,IAAAoE,EACAhB,KAAA8a,MAAA,yCAAAle,EAAAhB,QACA,MAAA+xC,EAAA,CACA/wC,UACA+K,MAAAD,EAAAC,OAEA,MAAAmjC,EAAA9qC,KAAAirC,qBACA,MAAAI,EAAA,CACAN,UAAA,UACAnuC,QAAA+wC,EACA3C,UAAAhrC,KAAA2pC,cAAAN,SAAAzsC,EAAAhB,OAAAoE,KAAAksB,aAEAlsB,KAAA+pC,YAAAxuC,KAAA8vC,GACA,GAAAA,EAAAL,UAAA,EACAhqC,EAAA0G,EAAA3H,YAAA,MAAAiB,SAAA,SAAAA,EAAA5D,KAAAsK,GACA,UAAA+kC,EAAArvC,KAAA4C,KAAA8pC,gBAAA5V,UAAA,CACA,GAAA92B,EAAA2sB,QAAA,UACA3sB,EAAAguC,oBAAAN,EAAA,CACA1tC,OAAA0K,uBAAA,CACA/H,SAAAuG,IAEAtG,KAAAytC,0BAAAhB,EAAA,GAEA7vC,EACA,CACA,CACA,KACA,CACAoD,KAAAurC,6BAEA,GAAAvrC,KAAAqqC,qBAAA,MACA,MACA,CACA,MAAAjtC,EAAA4C,KAAA8pC,gBAAA9pC,KAAAqqC,oBACAgB,EAAAtrC,SAAA2H,EAAA3H,SACA,GAAA3C,EAAA2sB,QAAA,UAAA3sB,EAAAguC,oBAAAN,EAAA,CACA1tC,OAAA0K,uBAAA,CACA/H,SAAAuG,IAEAtG,KAAAytC,0BAAAztC,KAAAqqC,mBAAA,GAEAztC,EACA,CACA,CACA,CACA,SAAAuK,GACAnH,KAAA8a,MAAA,oBACA9a,KAAAiqC,YAAA,KACA,UAAA2D,KAAA5tC,KAAA8pC,gBAAA,CACA,IAAA8D,IAAA,MAAAA,SAAA,SAAAA,EAAA7jB,SAAA,UACA6jB,EAAAxwC,KAAA+J,WACA,CACA,CACA,CACA,SAAAa,GACAhI,KAAA8a,MAAA,oBACA,MAAA+yB,EAAA7tC,KAAAirC,qBACAjrC,KAAA+pC,YAAAxuC,KAAA,CACAwvC,UAAA,aACAC,UAAA,QAEA,UAAA5tC,KAAA4C,KAAA8pC,gBAAA,CACA,IAAA1sC,IAAA,MAAAA,SAAA,SAAAA,EAAA2sB,SAAA,UACA3sB,EAAAguC,oBAAAyC,EAAA,CACAzwC,EAAAguC,mBAAA,EACAhuC,OAAA4K,WACA,CACA,CACA,CACA,cAAA8G,CAAAg/B,GACA,UAAA9qC,MAAA,0BACA,CACA,SAAA+qC,GACA,OAAA/tC,KAAAy7B,UACA,CACA,OAAAuS,GACA,OAAAhuC,KAAA6L,IACA,EAEAvR,EAAA+xB,yB,iBC5mBArvB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA2zC,uBAAA3zC,EAAA4zC,yBAAA5zC,EAAA6zC,yBAAA7zC,EAAA8zC,oBAAA9zC,EAAA+zC,yBAAA,EACA,MAAAtoC,EAAA3L,EAAA,MACA,MAAA4L,EAAA5L,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,SAAAi0C,oBAAA/nC,EAAAgoC,GACA,IAAAttC,EACA,MAAAsE,EAAA,CACAa,KAAAF,EAAAG,OAAAy2B,QACAx2B,QAAA,YAAAC,IAAA1J,QAAA,gBACAqG,UAAAjC,EAAAstC,IAAA,MAAAA,SAAA,EAAAA,EAAAhoC,EAAArD,YAAA,MAAAjC,SAAA,EAAAA,EAAA,MAEA,YAAAsF,UACAA,EAAAH,OAAA,UACAyB,OAAA2mC,UAAAjoC,EAAAH,MAAA,CACAb,EAAAa,KAAAG,EAAAH,KACA,eAAAG,YAAAD,UAAA,UACAf,EAAAe,QAAAC,EAAAD,OACA,CACA,CACA,OAAAf,CACA,CACAhL,EAAA+zC,wCACA,MAAAD,4BAAAroC,EAAAU,aACA,WAAA3G,CAAA4O,EAAAtR,EAAA6F,EAAAmc,GACA3b,QACAzD,KAAA0O,OACA1O,KAAA5C,OACA4C,KAAAiD,WACAjD,KAAAof,UACApf,KAAAwuC,UAAA,KACA,CACA,OAAA3nC,GACA,OAAA7G,KAAA5C,KAAAyJ,SACA,CACA,YAAA8P,CAAA83B,GACAzuC,KAAA5C,KAAAuZ,aAAA83B,EACA,CACA,WAAArI,GACA,OAAApmC,KAAA5C,KAAAgpC,aACA,CACA,OAAAsI,GACA,OAAA1uC,KAAA0O,IACA,EAEApU,EAAA8zC,wCACA,MAAAD,iCAAAnoC,EAAAc,SACA,WAAAhH,CAAA4O,EAAAtR,EAAA6F,GACAQ,MAAA,CAAAuD,WAAA,OACAhH,KAAA0O,OACA1O,KAAA5C,OACA4C,KAAAiD,WACAjD,KAAAwuC,UAAA,KACA,CACA,KAAAvnC,CAAAysB,GACA1zB,KAAA5C,KAAA+J,WACA,CACA,OAAAN,GACA,OAAA7G,KAAA5C,KAAAyJ,SACA,CACA,YAAA8P,CAAA83B,GACAzuC,KAAA5C,KAAAuZ,aAAA83B,EACA,CACA,WAAArI,GACA,OAAApmC,KAAA5C,KAAAgpC,aACA,CACA,OAAAsI,GACA,OAAA1uC,KAAA0O,IACA,EAEApU,EAAA6zC,kDACA,MAAAD,iCAAAloC,EAAAoB,SACA,WAAAtH,CAAA4O,EAAAtR,EAAA6F,EAAAmc,GACA3b,MAAA,CAAAuD,WAAA,OACAhH,KAAA0O,OACA1O,KAAA5C,OACA4C,KAAAiD,WACAjD,KAAAof,UACApf,KAAA+E,cAAA,CACAoB,KAAAF,EAAAG,OAAAmN,GACAlN,QAAA,MAEArG,KAAAwuC,UAAA,MACAxuC,KAAA2uC,iBAAA,IAAA1sC,EAAAiB,SACAlD,KAAAigB,GAAA,SAAAnd,IACA9C,KAAA+E,cAAAspC,oBAAAvrC,GACA9C,KAAAkgB,KAAA,GAEA,CACA,OAAArZ,GACA,OAAA7G,KAAA5C,KAAAyJ,SACA,CACA,YAAA8P,CAAA83B,GACAzuC,KAAA5C,KAAAuZ,aAAA83B,EACA,CACA,WAAArI,GACA,OAAApmC,KAAA5C,KAAAgpC,aACA,CACA,OAAAsI,GACA,OAAA1uC,KAAA0O,IACA,CACA,MAAApH,CAAAC,EAAAC,EAEAzH,GACAC,KAAA5C,KAAA8P,YAAA3F,EAAAxH,EACA,CACA,MAAAgI,CAAAhI,GACA,IAAAiB,EACAhB,KAAA5C,KAAAwxC,WAAA5xC,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAxG,KAAA+E,eAAA,CAAA9B,UAAAjC,EAAAhB,KAAA+E,cAAA9B,YAAA,MAAAjC,SAAA,EAAAA,EAAAhB,KAAA2uC,oBACA5uC,EAAA,KACA,CAEA,GAAAmgB,CAAAjd,GACA,GAAAA,EAAA,CACAjD,KAAA2uC,iBAAA1rC,CACA,CACA,OAAAQ,MAAAyc,KACA,EAEA5lB,EAAA4zC,kDACA,MAAAD,+BAAAjoC,EAAAiC,OACA,WAAAnI,CAAA4O,EAAAtR,EAAA6F,GACAQ,MAAA,CAAAuD,WAAA,OACAhH,KAAA0O,OACA1O,KAAA5C,OACA4C,KAAAiD,WACAjD,KAAA+E,cAAA,CACAoB,KAAAF,EAAAG,OAAAmN,GACAlN,QAAA,MAEArG,KAAAwuC,UAAA,MACAxuC,KAAA2uC,iBAAA,IAAA1sC,EAAAiB,SACAlD,KAAAigB,GAAA,SAAAnd,IACA9C,KAAA+E,cAAAspC,oBAAAvrC,GACA9C,KAAAkgB,KAAA,GAEA,CACA,OAAArZ,GACA,OAAA7G,KAAA5C,KAAAyJ,SACA,CACA,YAAA8P,CAAA83B,GACAzuC,KAAA5C,KAAAuZ,aAAA83B,EACA,CACA,WAAArI,GACA,OAAApmC,KAAA5C,KAAAgpC,aACA,CACA,OAAAsI,GACA,OAAA1uC,KAAA0O,IACA,CACA,KAAAzH,CAAAysB,GACA1zB,KAAA5C,KAAA+J,WACA,CACA,MAAAG,CAAAC,EAAAC,EAEAzH,GACAC,KAAA5C,KAAA8P,YAAA3F,EAAAxH,EACA,CACA,MAAAgI,CAAAhI,GACA,IAAAiB,EACAhB,KAAA5C,KAAAwxC,WAAA5xC,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAxG,KAAA+E,eAAA,CAAA9B,UAAAjC,EAAAhB,KAAA+E,cAAA9B,YAAA,MAAAjC,SAAA,EAAAA,EAAAhB,KAAA2uC,oBACA5uC,EAAA,KACA,CAEA,GAAAmgB,CAAAjd,GACA,GAAAA,EAAA,CACAjD,KAAA2uC,iBAAA1rC,CACA,CACA,OAAAQ,MAAAyc,KACA,EAEA5lB,EAAA2zC,6C,iBC3KAjxC,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA4mB,uBAAA,EACA,MAAA7Y,EAAAjO,EAAA,MACA,MAAA8mB,kBACA,qBAAAvX,GACA,WAAAklC,yBACA,CACA,gBAAAhmC,CAAAC,EAAAgmC,EAAAC,EAAA,OACA,IAAA/tC,EACA,GAAA8H,IAAA,OAAAL,OAAA24B,SAAAt4B,GAAA,CACA,UAAAJ,UAAA,qCACA,CACA,IAAAhL,MAAAwzB,QAAA4d,GAAA,CACA,UAAApmC,UAAA,gCACA,CACA,UAAAqmC,IAAA,WACA,UAAArmC,UAAA,2CACA,CACA,MAAAY,EAAA,GACA,MAAAnM,EAAA,GACA,QAAAxB,EAAA,EAAAA,EAAAmzC,EAAAlzC,OAAAD,IAAA,CACA,MAAAqzC,EAAAF,EAAAnzC,GACA,GAAAqzC,IAAA,aAAAA,IAAA,UACA,UAAAtmC,UAAA,eAAA/M,uBACA,CACA,IAAA8M,OAAA24B,SAAA4N,EAAAC,aAAA,CACA,UAAAvmC,UAAA,eAAA/M,kCACA,CACA,IAAA8M,OAAA24B,SAAA4N,EAAAE,YAAA,CACA,UAAAxmC,UAAA,eAAA/M,iCACA,CACA2N,EAAA/N,KAAAyzC,EAAAE,YACA/xC,EAAA5B,KAAAyzC,EAAAC,YACA,CACA,WAAAE,wBAAA,CACA/lC,IAAApI,EAAA8H,IAAA,MAAAA,SAAA,EAAAA,GAAA,EAAAT,EAAAgB,0BAAA,MAAArI,SAAA,EAAAA,EAAAsD,UACAgF,OACAnM,MACAiyC,YAAAL,EACAxlC,QAAAlB,EAAAmB,eAEA,EAEAlP,EAAA4mB,oCACA,MAAA2tB,kCAAA3tB,kBACA,SAAApX,GACA,YACA,CACA,YAAAulC,GACA,WACA,CACA,OAAAlrC,CAAAF,GACA,OAAAA,aAAA4qC,yBACA,EAEA,MAAAM,gCAAAjuB,kBACA,WAAAphB,CAAAhD,GACA2G,QACAzD,KAAAlD,SACA,CACA,SAAAgN,GACA,WACA,CACA,YAAAulC,GACA,OAAArvC,KAAAlD,OACA,CAOA,OAAAqH,CAAAF,GACA,GAAAjE,OAAAiE,EAAA,CACA,WACA,CACA,KAAAA,aAAAkrC,yBAAA,CACA,YACA,CAEA,GAAA1mC,OAAA24B,SAAAphC,KAAAlD,QAAAsM,KAAAX,OAAA24B,SAAAn9B,EAAAnH,QAAAsM,IAAA,CACA,IAAApJ,KAAAlD,QAAAsM,GAAAkmC,OAAArrC,EAAAnH,QAAAsM,IAAA,CACA,YACA,CACA,KACA,CACA,GAAApJ,KAAAlD,QAAAsM,KAAAnF,EAAAnH,QAAAsM,GAAA,CACA,YACA,CACA,CAEA,GAAA1L,MAAAwzB,QAAAlxB,KAAAlD,QAAAwM,OAAA5L,MAAAwzB,QAAAjtB,EAAAnH,QAAAwM,MAAA,CACA,GAAAtJ,KAAAlD,QAAAwM,KAAA1N,SAAAqI,EAAAnH,QAAAwM,KAAA1N,OAAA,CACA,YACA,CACA,QAAAD,EAAA,EAAAA,EAAAqE,KAAAlD,QAAAwM,KAAA1N,OAAAD,IAAA,CACA,MAAA4zC,EAAAvvC,KAAAlD,QAAAwM,KAAA3N,GACA,MAAA6zC,EAAAvrC,EAAAnH,QAAAwM,KAAA3N,GACA,GAAA8M,OAAA24B,SAAAmO,IAAA9mC,OAAA24B,SAAAoO,GAAA,CACA,IAAAD,EAAAD,OAAAE,GAAA,CACA,YACA,CACA,KACA,CACA,GAAAD,IAAAC,EAAA,CACA,YACA,CACA,CACA,CACA,KACA,CACA,GAAAxvC,KAAAlD,QAAAwM,OAAArF,EAAAnH,QAAAwM,KAAA,CACA,YACA,CACA,CAEA,GAAA5L,MAAAwzB,QAAAlxB,KAAAlD,QAAAK,MAAAO,MAAAwzB,QAAAjtB,EAAAnH,QAAAK,KAAA,CACA,GAAA6C,KAAAlD,QAAAK,IAAAvB,SAAAqI,EAAAnH,QAAAK,IAAAvB,OAAA,CACA,YACA,CACA,QAAAD,EAAA,EAAAA,EAAAqE,KAAAlD,QAAAK,IAAAvB,OAAAD,IAAA,CACA,MAAA8zC,EAAAzvC,KAAAlD,QAAAK,IAAAxB,GACA,MAAA+zC,EAAAzrC,EAAAnH,QAAAK,IAAAxB,GACA,GAAA8M,OAAA24B,SAAAqO,IAAAhnC,OAAA24B,SAAAsO,GAAA,CACA,IAAAD,EAAAH,OAAAI,GAAA,CACA,YACA,CACA,KACA,CACA,GAAAD,IAAAC,EAAA,CACA,YACA,CACA,CACA,CACA,KACA,CACA,GAAA1vC,KAAAlD,QAAAK,MAAA8G,EAAAnH,QAAAK,IAAA,CACA,YACA,CACA,CAEA,GAAA6C,KAAAlD,QAAAsyC,cAAAnrC,EAAAnH,QAAAsyC,YAAA,CACA,YACA,CAGA,WACA,E,gBCnJApyC,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAq1C,0BAAAr1C,EAAAs1C,2BAAAt1C,EAAAsoB,uBAAAtoB,EAAAqoB,iBAAAroB,EAAAu1C,6BAAAv1C,EAAAooB,2BAAA,EACA,MAAAzgB,EAAA7H,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAohC,EAAAphC,EAAA,MACA,MAAAoS,EAAApS,EAAA,MACA,MAAA4Z,EAAA5Z,EAAA,MACA,MAAA01C,EAAA11C,EAAA,MACA,MAAA21C,EAAA31C,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAsb,GAAA,EAAAo6B,EAAAjN,WAAA7uB,EAAA0B,OACA,MAAAH,GAAA,EAAAu6B,EAAAjN,WAAA7uB,EAAAuB,SACA,MAAAsH,EAAA,cACA,SAAA/B,MAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAAC,EACA,CACA,MAAA4F,sBACA,WAAA5iB,GACAE,KAAAiD,SAAAqB,UACAtE,KAAApD,QAAA0H,UACAtE,KAAAgI,UAAA1D,UACAtE,KAAA0G,OAAApC,SACA,CACA,qBAAAqI,CAAAjI,GACA1E,KAAAiD,SAAAyB,EACA,OAAA1E,IACA,CACA,oBAAA4M,CAAA3H,GACAjF,KAAApD,QAAAqI,EACA,OAAAjF,IACA,CACA,sBAAAgwC,CAAAC,GACAjwC,KAAAgI,UAAAioC,EACA,OAAAjwC,IACA,CACA,YAAAkwC,CAAAC,GACAnwC,KAAA0G,OAAAypC,EACA,OAAAnwC,IACA,CACA,KAAA8M,GACA,OACApI,kBAAA1E,KAAAiD,SACAgC,iBAAAjF,KAAApD,QACAqzC,mBAAAjwC,KAAAgI,UACAmoC,SAAAnwC,KAAA0G,OAEA,EAEApM,EAAAooB,4CACA,SAAAmtB,6BAAAprC,GACA,OAAAA,EAAAC,oBAAAJ,WAAAG,EAAAC,kBAAA9I,SAAA,CACA,CACAtB,EAAAu1C,0DACA,MAAAO,+BACA,WAAAtwC,CAAA2E,EAAAE,GACA3E,KAAAyE,WACAzE,KAAA2E,eAIA3E,KAAAwuC,UAAA,MACAxuC,KAAA4E,mBAAA,MACA5E,KAAA6E,kBAAA,MACA7E,KAAAkF,eAAA,KACAlF,KAAA8E,kBAAA,MACA9E,KAAAqwC,oBAAA,KACA,CACA,qBAAArrC,GACA,GAAAhF,KAAA6E,kBAAA,CACA7E,KAAA2E,aAAAM,iBAAAjF,KAAAkF,gBACAlF,KAAAkF,eAAA,KACAlF,KAAA6E,kBAAA,KACA,CACA,CACA,uBAAAiJ,GACA,GAAA9N,KAAAqwC,oBAAA,CACArwC,KAAA2E,aAAAsrC,qBACAjwC,KAAAqwC,oBAAA,KACA,CACA,CACA,iBAAA3rC,CAAAzB,GACA,GAAAjD,KAAAwuC,UAAA,CACA,MACA,CACAxuC,KAAA4E,mBAAA,KACA5E,KAAAyE,SAAAC,kBAAAzB,GAAAqtC,IACAtwC,KAAA4E,mBAAA,MACA,GAAA5E,KAAAwuC,UAAA,CACA,MACA,CACAxuC,KAAA2E,aAAAD,kBAAA4rC,GACAtwC,KAAAgF,wBACAhF,KAAA8N,yBAAA,GAEA,CACA,gBAAA7I,CAAArI,GACA,GAAAoD,KAAAwuC,UAAA,CACA,MACA,CACAxuC,KAAA8E,kBAAA,KACA9E,KAAAyE,SAAAQ,iBAAArI,GAAAyI,IACArF,KAAA8E,kBAAA,MACA,GAAA9E,KAAAwuC,UAAA,CACA,MACA,CACA,GAAAxuC,KAAA4E,mBAAA,CACA5E,KAAAkF,eAAAG,EACArF,KAAA6E,kBAAA,IACA,KACA,CACA7E,KAAA2E,aAAAM,iBAAAI,GACArF,KAAA8N,yBACA,IAEA,CACA,kBAAAmiC,GACA,GAAAjwC,KAAAwuC,UAAA,CACA,MACA,CACAxuC,KAAAyE,SAAAwrC,oBAAA,KACA,GAAAjwC,KAAAwuC,UAAA,CACA,MACA,CACA,GAAAxuC,KAAA4E,oBAAA5E,KAAA8E,kBAAA,CACA9E,KAAAqwC,oBAAA,IACA,KACA,CACArwC,KAAA2E,aAAAsrC,oBACA,IAEA,CACA,QAAAE,GACAnwC,KAAAwuC,UAAA,KACAxuC,KAAAyE,SAAA0rC,WACAnwC,KAAA2E,aAAAwrC,UACA,EAEA,MAAAxtB,iBACA,WAAA7iB,GACAE,KAAA+M,MAAAzI,UACAtE,KAAAiD,SAAAqB,UACAtE,KAAApD,QAAA0H,UACAtE,KAAAsF,OAAAhB,SACA,CACA,SAAA0I,CAAAD,GACA/M,KAAA+M,QACA,OAAA/M,IACA,CACA,gBAAAuwC,CAAA55B,GACA3W,KAAAiD,SAAA0T,EACA,OAAA3W,IACA,CACA,eAAAiN,CAAAC,GACAlN,KAAApD,QAAAsQ,EACA,OAAAlN,IACA,CACA,cAAAwwC,CAAA5B,GACA5uC,KAAAsF,OAAAspC,EACA,OAAA5uC,IACA,CACA,KAAA8M,GACA,OACAC,MAAA/M,KAAA+M,MACA4J,aAAA3W,KAAAiD,SACAiK,YAAAlN,KAAApD,QACAgyC,WAAA5uC,KAAAsF,OAEA,EAEAhL,EAAAqoB,kCACA,MAAA8tB,EAAA,CACA/rC,kBAAA,CAAAzB,EAAAqK,KACAA,EAAArK,EAAA,EAEAgC,iBAAA,CAAArI,EAAA0Q,KACAA,EAAA1Q,EAAA,EAEAqzC,mBAAA3iC,IACAA,GAAA,EAEA6iC,SAAA,QAEA,MAAAO,EAAA,CACA3jC,MAAAO,IACAA,GAAA,EAEAqJ,aAAA,CAAA1T,EAAAqK,KACAA,EAAArK,EAAA,EAEAiK,YAAA,CAAAtQ,EAAA0Q,KACAA,EAAA1Q,EAAA,EAEAgyC,WAAA,CAAAtpC,EAAAgI,KACAA,EAAAhI,EAAA,GAGA,MAAAsd,uBACA,WAAA9iB,CAAA0N,EAAAmjC,GACA3wC,KAAAwN,WACAxN,KAAA4E,mBAAA,MACA5E,KAAA8E,kBAAA,MACA9E,KAAAkF,eAAA,KACAlF,KAAA4wC,uBAAA,KACA5wC,KAAA+E,cAAA,KACA/E,KAAA2wC,UAAA3zC,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAkqC,GAAAC,EACA,CACA,qBAAA3rC,GACA,GAAAhF,KAAA4wC,uBAAA,CACA5wC,KAAAwN,SAAAN,YAAAlN,KAAAkF,eAAAlF,KAAA4wC,wBACA5wC,KAAAkF,eAAA,KACAlF,KAAA4wC,uBAAA,IACA,CACA,CACA,oBAAAzrC,GACA,GAAAnF,KAAA+E,cAAA,CACA/E,KAAAwN,SAAAohC,WAAA5uC,KAAA+E,eACA/E,KAAA+E,cAAA,IACA,CACA,CACA,KAAAgI,CAAAtI,GACAzE,KAAA2wC,UAAA5jC,OAAA8jC,IACA,MAAAC,EAAA9zC,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAiqC,GAAAI,GACA,MAAAxiC,EAAA,IAAA+hC,+BAAAU,EAAArsC,GACAzE,KAAAwN,SAAAT,MAAAsB,EAAA,GAEA,CACA,YAAAsI,CAAA1T,GACAjD,KAAA4E,mBAAA,KACA5E,KAAA2wC,UAAAh6B,aAAA1T,GAAAqtC,IACAtwC,KAAA4E,mBAAA,MACA5E,KAAAwN,SAAAmJ,aAAA25B,GACAtwC,KAAAgF,wBACAhF,KAAAmF,sBAAA,GAEA,CACA,WAAA+H,CAAAtQ,EAAAmD,GACAC,KAAA8E,kBAAA,KACA9E,KAAA2wC,UAAAzjC,YAAAtQ,GAAAm0C,IACA/wC,KAAA8E,kBAAA,MACA,GAAA9E,KAAA4E,mBAAA,CACA5E,KAAAkF,eAAA6rC,EACA/wC,KAAA4wC,uBAAA7wC,CACA,KACA,CACAC,KAAAwN,SAAAN,YAAA6jC,EAAAhxC,EACA,IAEA,CACA,UAAA6uC,CAAAtpC,GACAtF,KAAA2wC,UAAA/B,WAAAtpC,GAAA0rC,IACA,GAAAhxC,KAAA4E,oBAAA5E,KAAA8E,kBAAA,CACA9E,KAAA+E,cAAAisC,CACA,KACA,CACAhxC,KAAAwN,SAAAohC,WAAAoC,EACA,IAEA,CACA,SAAA7pC,GACAnH,KAAAwN,SAAArG,WACA,CACA,OAAAN,GACA,OAAA7G,KAAAwN,SAAA3G,SACA,CACA,WAAAu/B,GACA,OAAApmC,KAAAwN,SAAA44B,aACA,EAEA9rC,EAAAsoB,8CACA,MAAAquB,EAAA,uBACA,MAAAC,EAAA,gBACA,MAAAC,EAAA,eACA,MAAAC,EAAA,cACA,MAAAC,EAAA,eACA,MAAAC,EAAA,yBACA,MAAAC,EAAA,CACAC,EAAA,KACAC,EAAA,IACAC,EAAA,IACAC,EAAA,EACAC,EAAA,KACAC,EAAA,MAEA,MAAAC,EAAA,CAGAb,IAAA,wBACAC,IAAA,YAEA,MAAAa,EAAA,CACA,CAAAvW,EAAAiB,UAAAuV,qBAAAxW,EAAAiB,UAAAwV,eACA,CAAAzW,EAAAiB,UAAAyV,2BAAA,0BAEA,MAAAC,EAAA,CACAC,gBAAA,MAEA,MAAAxC,2BACA,WAAA9vC,CAAA6T,EAAA5Q,EAAAsvC,EAAAC,EAAAx1C,GACAkD,KAAA2T,SACA3T,KAAAqyC,mBACAryC,KAAAsyC,UACAtyC,KAAAyE,SAAA,KACAzE,KAAAgmC,cAAA,KACAhmC,KAAAyL,SAAAkD,SACA3O,KAAAqgC,mBAAAp6B,EAAAoR,gCACArX,KAAAsgC,sBAAAr6B,EAAAmR,mCACApX,KAAAwuC,UAAA,MACAxuC,KAAAuyC,aAAA,MACAvyC,KAAAwyC,aAAA,MACAxyC,KAAAyyC,eAAA,MACAzyC,KAAA0yC,iBAAA,WACA1yC,KAAA2yC,QAAA,IAAA5C,EAAA6C,cACA5yC,KAAA6yC,UAAA,GACA7yC,KAAA8yC,cAAA,MACA9yC,KAAA+yC,kBAAA,MACA/yC,KAAAgzC,YAAA,MACAhzC,KAAA2T,OAAA0L,KAAA,SAAAvc,IAAA,IAOA9C,KAAA2T,OAAA0L,KAAA,cACA,IAAAre,EACA8Z,MAAA,uBACA9Z,EAAAhB,KAAAsyC,WAAA,MAAAtxC,SAAA,SAAAA,EAAA0N,MACA,+BACA1O,KAAA2T,OAAA6oB,SACA,GAAAx8B,KAAAqyC,mBAAAryC,KAAAgzC,YAAA,CACAhzC,KAAAgzC,YAAA,KACAhzC,KAAAqyC,iBAAAY,YAAA,OACAjzC,KAAAqyC,iBAAAxmB,UAAA,CACA1lB,KAAAF,EAAAG,OAAAQ,UACAP,QAAA,sCACApD,SAAA,MAEA,CACAjD,KAAAkzC,gBAAA,IAEAlzC,KAAA2T,OAAAsM,GAAA,QAAAjL,IACAhV,KAAAmzC,gBAAAn+B,EAAA,IAEAhV,KAAA2T,OAAAy/B,QACApzC,KAAA2T,OAAAsM,GAAA,YACAjgB,KAAAqzC,gBAAA,IAEA,oCAAAv2C,EAAA,CACAkD,KAAAqgC,mBAAAvjC,EAAA,+BACA,CACA,uCAAAA,EAAA,CACAkD,KAAAsgC,sBAAAxjC,EAAA,kCACA,CACA,MAAAmG,EAAAhB,EAAAiB,SAAA++B,iBAAAl/B,GACA,GAAAoR,EAAA8oB,gBAAApgB,GAAA,CACA/B,MAAA,cACA9a,KAAAsyC,QAAA5jC,KACA,qBACAgb,KAAAC,UAAA1mB,EAAA++B,UACA,CACA,MAAAsR,EAAArwC,EAAA8T,IAAAs6B,GACA,GAAAiC,EAAA13C,OAAA,GACAoE,KAAAuzC,oBAAAD,EAAA,GACA,CACA,MAAAE,EAAAvwC,EAAA8T,IAAAm6B,GACA,GAAAsC,EAAA53C,OAAA,GACAoE,KAAA0yC,iBAAAc,EAAA,EACA,CAEAvwC,EAAA2T,OAAAy6B,GACApuC,EAAA2T,OAAAs6B,GACAjuC,EAAA2T,OAAAq6B,GACAhuC,EAAA2T,OAAA4kB,EAAAiB,UAAAgX,8BACAxwC,EAAA2T,OAAA4kB,EAAAiB,UAAAiX,iBACAzwC,EAAA2T,OAAA4kB,EAAAiB,UAAAyV,2BACAlyC,KAAAiD,UACA,CACA,mBAAAswC,CAAAD,GACA,MAAAK,EAAAL,EAAAp0B,WAAAy0B,MAAArC,GACA,GAAAqC,IAAA,MACA,MAAAruC,EAAA,CACAa,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,WAAAgrC,YAAAiC,KACArwC,SAAA,MAGApI,QAAAuuB,UAAA,KACAppB,KAAA4uC,WAAAtpC,EAAA,IAEA,MACA,CACA,MAAA0T,GAAA26B,EAAA,GAAApC,EAAAoC,EAAA,MACA,MAAAjyC,EAAA,IAAAlB,KACAR,KAAAyL,SAAA/J,EAAAR,gBAAAQ,EAAAP,kBAAA6X,GACAhZ,KAAAgmC,cAAAplC,YAAA,KACA,MAAA0E,EAAA,CACAa,KAAAF,EAAAG,OAAAmgC,kBACAlgC,QAAA,oBACApD,SAAA,MAEAjD,KAAA4uC,WAAAtpC,EAAA,GACA0T,EACA,CACA,cAAA46B,GAGA,IAAA5zC,KAAAwuC,YAAAxuC,KAAA2T,OAAAkgC,WAAA7zC,KAAA2T,OAAAmgC,QAAA,CACA9zC,KAAAkzC,iBACAlzC,KAAAwuC,UAAA,IACA,CACA,OAAAxuC,KAAAwuC,SACA,CACA,cAAA0E,GACA,GAAAlzC,KAAAyyC,eAAA,CACA,MACA,CACAzyC,KAAAyyC,eAAA,KACAzyC,KAAAwuC,UAAA,KACA3zC,QAAAuuB,UAAA,KACA,IAAApoB,GACAA,EAAAhB,KAAAyE,YAAA,MAAAzD,SAAA,SAAAA,EAAAmvC,UAAA,IAEA,GAAAnwC,KAAAgmC,cAAA,CACAnlC,aAAAb,KAAAgmC,cACA,CAEAhmC,KAAA2T,OAAAogC,QACA,CAMA,iBAAAC,GACA,IAAAh0C,KAAAuyC,aAAA,CACAvyC,KAAA2W,aAAA,IAAA1U,EAAAiB,SACA,CACA,CAMA,gBAAA+wC,CAAAr1C,GACA,MAAA4V,EAAAxU,KAAAsyC,QAAAjrC,UAAAzI,GACA,MAAAs1C,EAAA1/B,EAAA0/B,WACA,MAAAx/B,EAAAjM,OAAAkM,YAAAu/B,EAAA,GAGAx/B,EAAAE,WAAA,KACAF,EAAAG,cAAAq/B,EAAA,GACA1/B,EAAAM,KAAAJ,EAAA,GACA,OAAAA,CACA,CACA,iBAAAS,CAAAvY,EAAA4K,GACA,OAAAA,GACA,cACA,OAAA+N,EAAA3Y,EAAAu3C,SAAA,IACA,WACA,OAAAz+B,EAAA9Y,EAAAu3C,SAAA,IACA,eACA,OAAAv3C,EAAAu3C,SAAA,GACA,QACA,OAAAt4C,QAAA+G,OAAA,CACAuD,KAAAF,EAAAG,OAAAguC,cACA/tC,QAAA,0DAAAmB,OAGA,CACA,4BAAA6sC,CAAAC,GACA,GAAAA,EAAArpB,OAAA,cACA,UAAAjoB,MAAA,6BAAAsxC,EAAArpB,OACA,CACA,MAAAhW,EAAAq/B,EAAAC,kBAAAr/B,UAAA,OACA,MAAAs/B,EAAAv/B,EAAAjV,KAAA0yC,iBAAA,WACA,MAAA+B,QAAAz0C,KAAAmV,kBAAAm/B,EAAAC,kBAAAC,GACA,IACAF,EAAAI,cAAA10C,KAAAsyC,QAAAvrC,YAAA0tC,EACA,CACA,MAAA3xC,GACA9C,KAAA4uC,WAAA,CACAzoC,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,gCAAAvD,EAAAlG,YAEA,MACA,CACA03C,EAAArpB,KAAA,WACAjrB,KAAA20C,sBACA,CACA,oBAAAA,GACA,GAAA30C,KAAAyE,UAAAzE,KAAA8yC,eAAA9yC,KAAA6yC,UAAAj3C,OAAA,GAAAoE,KAAA6yC,UAAA,GAAA5nB,OAAA,cACAjrB,KAAA8yC,cAAA,MACA,MAAA8B,EAAA50C,KAAA6yC,UAAAgC,QACA,GAAAD,EAAA3pB,OAAA,YACAjrB,KAAAyE,SAAAQ,iBAAA2vC,EAAAF,cACA,KACA,CAEA10C,KAAAyE,SAAAwrC,oBACA,CACA,CACA,CACA,eAAAkD,CAAAn+B,GACA,IAAAhU,EACA,GAAAhB,KAAA4zC,iBAAA,CACA,MACA,CACA94B,MAAA,cAAA9a,KAAAsyC,QAAA5jC,KAAA,gCAAAsG,EAAApZ,QACA,MAAAk5C,EAAA90C,KAAA2yC,QAAAl2C,MAAAuY,GACA,UAAA+/B,KAAAD,EAAA,CACA90C,KAAA2T,OAAAy/B,QACA,GAAApzC,KAAAsgC,yBAAA,GAAAyU,EAAAn5C,OAAA,EAAAoE,KAAAsgC,sBAAA,CACAtgC,KAAA4uC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAo6B,mBACAn6B,QAAA,qCAAA0uC,EAAAn5C,OAAA,SAAAoE,KAAAsgC,yBACAr9B,SAAA,OAEA,MACA,CACA,MAAAqxC,EAAA,CACArpB,KAAA,aACAspB,kBAAAQ,EACAL,cAAA,MAEA10C,KAAA6yC,UAAAt3C,KAAA+4C,GACAt0C,KAAAq0C,uBAAAC,IACAtzC,EAAAhB,KAAAqyC,oBAAA,MAAArxC,SAAA,SAAAA,EAAAg0C,oBACA,CACA,CACA,cAAA3B,GACArzC,KAAA6yC,UAAAt3C,KAAA,CACA0vB,KAAA,aACAspB,kBAAA,KACAG,cAAA,OAEA10C,KAAA+yC,kBAAA,KACA/yC,KAAA20C,sBACA,CACA,KAAA5nC,CAAAtI,GACAqW,MAAA,cAAA9a,KAAAsyC,QAAA5jC,KAAA,iBACA,GAAA1O,KAAA4zC,iBAAA,CACA,MACA,CACA5zC,KAAAyE,WACAA,EAAAC,kBAAA1E,KAAAiD,SACA,CACA,YAAA0T,CAAA1T,GACA,GAAAjD,KAAA4zC,iBAAA,CACA,MACA,CACA,GAAA5zC,KAAAuyC,aAAA,CACA,MACA,CACAvyC,KAAAuyC,aAAA,KACA,MAAA92C,EAAAwH,IAAA6+B,iBAAA,KACA,MAAA/+B,EAAA/F,OAAAwJ,OAAAxJ,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAurC,GAAAD,GAAAr2C,GACAuE,KAAA2T,OAAAshC,QAAAlyC,EAAAovC,EACA,CACA,WAAAjlC,CAAAtQ,EAAAmD,GACA,GAAAC,KAAA4zC,iBAAA,CACA,MACA,CACA,IAAAsB,EACA,IACAA,EAAAl1C,KAAAi0C,iBAAAr3C,EACA,CACA,MAAAjC,GACAqF,KAAA4uC,WAAA,CACAzoC,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,kCAAAmG,EAAA4C,iBAAAzU,KACAsI,SAAA,OAEA,MACA,CACA,GAAAjD,KAAAqgC,sBAAA,GACA6U,EAAAt5C,OAAA,EAAAoE,KAAAqgC,mBAAA,CACArgC,KAAA4uC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAo6B,mBACAn6B,QAAA,iCAAA6uC,EAAAt5C,cAAAoE,KAAAqgC,sBACAp9B,SAAA,OAEA,MACA,CACAjD,KAAAg0C,oBACAl5B,MAAA,cAAA9a,KAAAsyC,QAAA5jC,KAAA,4BAAAwmC,EAAAt5C,QACAoE,KAAA2T,OAAAlX,MAAAy4C,GAAA5uC,IACA,IAAAtF,EACA,GAAAsF,EAAA,CACAtG,KAAA4uC,WAAA,CACAzoC,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,6BAAAmG,EAAA4C,iBAAA9I,KACArD,SAAA,OAEA,MACA,EACAjC,EAAAhB,KAAAqyC,oBAAA,MAAArxC,SAAA,SAAAA,EAAAm0C,iBACAp1C,GAAA,GAEA,CACA,UAAA6uC,CAAAtpC,GACA,IAAAtE,EAAAC,EACA,GAAAjB,KAAA4zC,iBAAA,CACA,MACA,CACA5zC,KAAAkzC,iBACAp4B,MAAA,uBACA9Z,EAAAhB,KAAAsyC,WAAA,MAAAtxC,SAAA,SAAAA,EAAA0N,MACA,4BACAzI,EAAAG,OAAAd,EAAAa,MACA,aACAb,EAAAe,SACA,GAAArG,KAAA2T,OAAAyhC,YAAA,CACA,IAAAp1C,KAAAwyC,aAAA,CACAxyC,KAAAwyC,aAAA,KACAxyC,KAAA2T,OAAA0L,KAAA,qBACA,IAAAre,EACA,GAAAhB,KAAAqyC,mBAAAryC,KAAAgzC,YAAA,CACAhzC,KAAAgzC,YAAA,KACAhzC,KAAAqyC,iBAAAY,YAAA,MACAjzC,KAAAqyC,iBAAAxmB,UAAAvmB,EACA,CACA,MAAA+vC,EAAAr4C,OAAAwJ,OAAA,CAAA4qC,IAAA9rC,EAAAa,KAAAgrC,IAAAmE,UAAAhwC,EAAAe,WAAArF,EAAAsE,EAAArC,YAAA,MAAAjC,SAAA,SAAAA,EAAA8gC,kBACA9hC,KAAA2T,OAAA4hC,aAAAF,EAAA,IAEAr1C,KAAA2T,OAAAuM,KACA,CACA,KACA,CACA,GAAAlgB,KAAAqyC,mBAAAryC,KAAAgzC,YAAA,CACAhzC,KAAAgzC,YAAA,KACAhzC,KAAAqyC,iBAAAY,YAAA,MACAjzC,KAAAqyC,iBAAAxmB,UAAAvmB,EACA,CAEA,MAAA+vC,EAAAr4C,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,CAAA4qC,IAAA9rC,EAAAa,KAAAgrC,IAAAmE,UAAAhwC,EAAAe,UAAA0rC,IAAA9wC,EAAAqE,EAAArC,YAAA,MAAAhC,SAAA,SAAAA,EAAA6gC,kBACA9hC,KAAA2T,OAAAshC,QAAAI,EAAA,CAAAG,UAAA,MACA,CACA,CACA,SAAAruC,GACA2T,MAAA,cAAA9a,KAAAsyC,QAAA5jC,KAAA,qBACA,GAAA1O,KAAA4zC,iBAAA,CACA,MACA,CACA5zC,KAAA8yC,cAAA,KACA,GAAA9yC,KAAA6yC,UAAAj3C,SAAA,GACA,IAAAoE,KAAA+yC,kBAAA,CACA/yC,KAAA2T,OAAAogC,QACA,CACA,KACA,CACA/zC,KAAA20C,sBACA,CACA,CACA,OAAA9tC,GACA,IAAA7F,EACA,MAAAue,GAAAve,EAAAhB,KAAA2T,OAAA8hC,WAAA,MAAAz0C,SAAA,SAAAA,EAAAue,OACA,GAAAA,IAAA,MAAAA,SAAA,SAAAA,EAAAm2B,cAAA,CACA,GAAAn2B,EAAAo2B,WAAA,CACA,SAAAp2B,EAAAm2B,iBAAAn2B,EAAAo2B,YACA,KACA,CACA,OAAAp2B,EAAAm2B,aACA,CACA,KACA,CACA,eACA,CACA,CACA,WAAAtP,GACA,OAAApmC,KAAAyL,QACA,EAEAnR,EAAAs1C,sDACA,SAAAD,0BAAAx/B,EAAAwD,EAAA5Q,EAAAsvC,EAAAC,EAAAx1C,GACA,MAAAkS,EAAA,CACAN,KAAA4jC,EAAA5jC,KACAqE,cAAAu/B,EAAArnB,OAAA,gBAAAqnB,EAAArnB,OAAA,OACApb,eAAAyiC,EAAArnB,OAAA,gBAAAqnB,EAAArnB,OAAA,OACA2qB,mBAAAtD,EAAAvrC,YACA8uC,kBAAAvD,EAAAjrC,WAEA,MAAAyuC,EAAA,IAAAlG,2BAAAj8B,EAAA5Q,EAAAsvC,EAAAC,EAAAx1C,GACA,OAAAqT,EAAAmR,QAAA,CAAAlkB,EAAAkT,IACAA,EAAAtB,EAAA5R,IACA04C,EACA,CACAx7C,EAAAq1C,mD,uBC9qBA,IAAAoG,EAAA/1C,WAAA+1C,mBAAA,SAAAC,EAAAC,EAAAr3C,GACA,IAAAs3C,EAAAv5C,UAAAf,OAAA,EACA,QAAAD,EAAA,EAAAA,EAAAs6C,EAAAr6C,OAAAD,IAAA,CACAiD,EAAAs3C,EAAAD,EAAAt6C,GAAAyB,KAAA44C,EAAAp3C,GAAAq3C,EAAAt6C,GAAAyB,KAAA44C,EACA,CACA,OAAAE,EAAAt3C,OAAA,CACA,EACA,IAAAu3C,EAAAn2C,WAAAm2C,cAAA,SAAAC,EAAAC,EAAAC,EAAAC,EAAAN,EAAAO,GACA,SAAAC,OAAAC,GAAA,GAAAA,SAAA,UAAAA,IAAA,qBAAAhuC,UAAA,4BAAAguC,CAAA,CACA,IAAAC,EAAAJ,EAAAI,KAAAx5C,EAAAw5C,IAAA,eAAAA,IAAA,uBACA,IAAA5rC,GAAAsrC,GAAAD,EAAAG,EAAA,UAAAH,IAAAn5C,UAAA,KACA,IAAA25C,EAAAP,IAAAtrC,EAAA/N,OAAA65C,yBAAA9rC,EAAAwrC,EAAA9pC,MAAA,IACA,IAAAqqC,EAAAC,EAAA,MACA,QAAAp7C,EAAA26C,EAAA16C,OAAA,EAAAD,GAAA,EAAAA,IAAA,CACA,IAAA+L,EAAA,GACA,QAAAsvC,KAAAT,EAAA7uC,EAAAsvC,OAAA,YAAAT,EAAAS,GACA,QAAAA,KAAAT,EAAAU,OAAAvvC,EAAAuvC,OAAAD,GAAAT,EAAAU,OAAAD,GACAtvC,EAAAwvC,eAAA,SAAAR,GAAA,GAAAK,EAAA,UAAAruC,UAAA,0DAAA8tC,EAAAj7C,KAAAk7C,OAAAC,GAAA,QACA,IAAA36B,GAAA,EAAAu6B,EAAA36C,IAAAg7C,IAAA,YAAA5/B,IAAA6/B,EAAA7/B,IAAAvb,IAAAo7C,EAAAp7C,KAAAo7C,EAAAz5C,GAAAuK,GACA,GAAAivC,IAAA,YACA,GAAA56B,SAAA,WACA,GAAAA,IAAA,aAAAA,IAAA,mBAAArT,UAAA,mBACA,GAAAouC,EAAAL,OAAA16B,EAAAhF,KAAA6/B,EAAA7/B,IAAA+/B,EACA,GAAAA,EAAAL,OAAA16B,EAAAvgB,KAAAo7C,EAAAp7C,IAAAs7C,EACA,GAAAA,EAAAL,OAAA16B,EAAAo7B,MAAAlB,EAAAh6B,QAAA66B,EACA,MACA,GAAAA,EAAAL,OAAA16B,GAAA,CACA,GAAA46B,IAAA,QAAAV,EAAAh6B,QAAA66B,QACAF,EAAAz5C,GAAA25C,CACA,CACA,CACA,GAAA/rC,EAAA/N,OAAA2B,eAAAoM,EAAAwrC,EAAA9pC,KAAAmqC,GACAG,EAAA,IACA,EACA/5C,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA0mB,YAAA,EACA,MAAAwa,EAAAphC,EAAA,MACA,MAAAooC,EAAApoC,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAg9C,EAAAh9C,EAAA,MACA,MAAA6mB,EAAA7mB,EAAA,MACA,MAAA6gB,EAAA7gB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAAkoB,EAAAloB,EAAA,MACA,MAAAqoB,EAAAroB,EAAA,KACA,MAAAi9C,IAAA,OACA,MAAAC,IAAA,OACA,MAAAC,EAAA,IACA,MAAAC,qBAAAhc,EAAAiB,UACA,MAAA5f,EAAA,SACA,SAAA46B,OAAA,CAMA,SAAAC,UAAA96C,GACA,gBAAAmO,EAAArD,GACA,OAAA86B,EAAAkV,UAAA3sC,EAAAnO,EACA,CACA,CACA,SAAA+6C,+BAAAlc,GACA,OACAt1B,KAAAF,EAAAG,OAAAguC,cACA/tC,QAAA,4CAAAo1B,IAEA,CACA,SAAAmc,kBAAAC,EAAApc,GACA,MAAAqc,EAAAH,+BAAAlc,GACA,OAAAoc,GACA,YACA,OAAAz6C,EAAA2C,KACAA,EAAA+3C,EAAA,OAEA,mBACA,OAAA16C,EAAA2C,KACAA,EAAA+3C,EAAA,OAEA,mBACA,OAAA16C,IACAA,EAAAkW,KAAA,QAAAwkC,EAAA,EAEA,WACA,OAAA16C,IACAA,EAAAkW,KAAA,QAAAwkC,EAAA,EAEA,QACA,UAAA90C,MAAA,uBAAA60C,KAEA,CACA,IAAA72B,EAAA,MACA,IAAAhgB,EACA,IAAA+2C,EAAA,GACA,IAAAC,EACA,OAAAh3C,EAAA,MAAAggB,OACA,WAAAlhB,CAAAhD,GACA,IAAAmE,EAAAyM,EAAAC,EAAAK,EAAAC,EACAjO,KAAAi4C,YAAAlC,EAAA/1C,KAAA+3C,GAAA,IAAA3zB,KACApkB,KAAAk4C,aAAA,IAAA9zB,IACApkB,KAAAm4C,SAAA,IAAA/zB,IACApkB,KAAAo4C,SAAA,IAAAh0B,IAKApkB,KAAAq4C,QAAA,MACAr4C,KAAAs4C,SAAA,MACAt4C,KAAAu4C,oBAAA,OAEAv4C,KAAAimB,gBAAA,KACAjmB,KAAA+mB,cAAA,IAAAzE,EAAA0E,cACAhnB,KAAAkmB,YAAA,IAAA5D,EAAA6D,oBACAnmB,KAAAw4C,wBAAA,IAAAl2B,EAAA+D,wBACArmB,KAAAy4C,uBAAA,IAAAn2B,EAAA+D,wBACArmB,KAAAlD,YAAA,MAAAA,SAAA,EAAAA,EAAA,GACA,GAAAkD,KAAAlD,QAAA,6BACAkD,KAAAimB,gBAAA,KACA,CACAjmB,KAAAinB,aAAA,EAAA3E,EAAAo2B,yBAAA,IAAA14C,KAAAmnB,mBAAAnnB,KAAAimB,iBACA,GAAAjmB,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,2BACA,CACApnB,KAAA24C,oBACA13C,EAAAjB,KAAAlD,QAAA,uCAAAmE,SAAA,EAAAA,EAAAo2C,EACAr3C,KAAA44C,yBACAlrC,EAAA1N,KAAAlD,QAAA,6CAAA4Q,SAAA,EAAAA,EAAA2pC,EACAr3C,KAAA64C,iBACAlrC,EAAA3N,KAAAlD,QAAA,mCAAA6Q,SAAA,EAAAA,EAAA2pC,EACAt3C,KAAA84C,oBACA9qC,EAAAhO,KAAAlD,QAAA,sCAAAkR,SAAA,EAAAA,EAAAupC,EACAv3C,KAAA+4C,oBAAA,CACAC,yBAAApxC,OAAA4e,kBAEA,oCAAAxmB,KAAAlD,QAAA,CACAkD,KAAA+4C,oBAAAE,iBACAj5C,KAAAlD,QAAA,+BACA,KACA,CAKAkD,KAAA+4C,oBAAAE,iBAAArxC,OAAA4e,gBACA,CACA,mCAAAxmB,KAAAlD,QAAA,CACAkD,KAAA+4C,oBAAAG,SAAA,CACAC,qBAAAn5C,KAAAlD,QAAA,+BAEA,CACAkD,KAAAmQ,cAAAlC,EAAAjO,KAAAlD,QAAAqT,gBAAA,MAAAlC,SAAA,EAAAA,EAAA,GACAjO,KAAA8a,MAAA,qBACA,CACA,eAAAqM,GACA,OACArM,MAAA9a,KAAA+mB,cACAb,YAAAlmB,KAAAkmB,YACAkzB,iBAAAp5C,KAAAw4C,wBAAAvuB,gBACAovB,gBAAAr5C,KAAAy4C,uBAAAxuB,gBAEA,CACA,4BAAAqvB,CAAA7D,GACA,WACA,IAAAx0C,EAAAyM,EAAAC,EACA,MAAA4rC,EAAAv5C,KAAAo4C,SAAArhC,IAAA0+B,GACA,MAAA+D,EAAA/D,EAAAl2B,OACA,MAAAm2B,EAAA8D,EAAA9D,eACA,EAAAn6B,EAAAk+B,2BAAAD,EAAA9D,cAAA8D,EAAA7D,YACA,KACA,MAAA+D,EAAAF,EAAAE,cACA,EAAAn+B,EAAAk+B,2BAAAD,EAAAE,aAAAF,EAAAG,WACA,KACA,IAAAC,EACA,GAAAnE,EAAAoE,UAAA,CACA,MAAAC,EAAAN,EACA,MAAAO,EAAAD,EAAAE,YACA,MAAAC,EAAAH,EAAAI,iBACA,MAAAC,EAAAL,EAAAM,qBACAR,EAAA,CACAS,yBAAAp5C,EAAA84C,EAAAO,gBAAA,MAAAr5C,SAAA,EAAAA,EAAA,KACAs5C,qBAAAR,EAAAO,aACA,KACAP,EAAAttC,KACA+tC,iBAAAP,GAAA,QAAAA,IAAAQ,IAAA,KACAC,kBAAAP,GAAA,QAAAA,EACAA,EAAAM,IACA,KAEA,KACA,CACAb,EAAA,IACA,CACA,MAAAe,EAAA,CACAjF,gBACAgE,eACAkB,SAAAhB,EACAiB,WAAA,KACAC,eAAAvB,EAAAwB,cAAAC,aACAC,iBAAA1B,EAAAwB,cAAAG,eACAC,cAAA5B,EAAAwB,cAAAK,YACAC,aAAA9B,EAAA8B,aACAC,iBAAA/B,EAAA+B,iBACAC,eAAA,EACAC,gCAAA,KACAC,iCAAAlC,EAAAwB,cAAAW,yBACAC,yBAAApC,EAAAoC,yBACAC,6BAAArC,EAAAqC,6BACAC,wBAAAnuC,EAAA+nC,EAAA1rB,MAAA+xB,mBAAA,MAAApuC,SAAA,EAAAA,EAAA,KACAquC,yBAAApuC,EAAA8nC,EAAA1rB,MAAAiyB,oBAAA,MAAAruC,SAAA,EAAAA,EAAA,MAEA,OAAAgtC,CAAA,CAEA,CACA,KAAA7/B,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAA,IAAA7c,KAAAinB,YAAA2C,GAAA,KAAA9M,EACA,CACA,eAAAm/B,GACA,UAAAj5C,MAAA,4CACA,CACA,UAAA7D,CAAAygC,EAAAsc,GACA,GAAAtc,IAAA,aACAA,IAAA,UACAsc,IAAA,aACAA,IAAA,UACA,UAAAl5C,MAAA,iDACA,CACA,MAAAm5C,EAAAn/C,OAAAmG,KAAAy8B,GACA,GAAAuc,EAAAvgD,SAAA,GACA,UAAAoH,MAAA,0CACA,CACAm5C,EAAA9c,SAAA5yB,IACA,MAAA6yB,EAAAM,EAAAnzB,GACA,IAAA8yB,EACA,GAAAD,EAAAvsB,cAAA,CACA,GAAAusB,EAAAzvB,eAAA,CACA0vB,EAAA,MACA,KACA,CACAA,EAAA,cACA,CACA,KACA,CACA,GAAAD,EAAAzvB,eAAA,CACA0vB,EAAA,cACA,KACA,CACAA,EAAA,OACA,CACA,CACA,IAAA6c,EAAAF,EAAAzvC,GACA,IAAA4vC,EACA,GAAAD,IAAA93C,kBAAAg7B,EAAAK,eAAA,UACAyc,EAAAF,EAAA5c,EAAAK,aACA,CACA,GAAAyc,IAAA93C,UAAA,CACA+3C,EAAAD,EAAAjuC,KAAA+tC,EACA,KACA,CACAG,EAAAzE,kBAAArY,EAAA9yB,EACA,CACA,MAAAmlB,EAAA5xB,KAAAs8C,SAAAhd,EAAA5wB,KAAA2tC,EAAA/c,EAAAuW,kBAAAvW,EAAAsW,mBAAArW,GACA,GAAA3N,IAAA,OACA,UAAA5uB,MAAA,sBAAAs8B,EAAA5wB,yBACA,IAEA,CACA,aAAA6tC,CAAA3c,GACA,GAAAA,IAAA,aAAAA,IAAA,UACA,UAAA58B,MAAA,8CACA,CACA,MAAAm5C,EAAAn/C,OAAAmG,KAAAy8B,GACAuc,EAAA9c,SAAA5yB,IACA,MAAA6yB,EAAAM,EAAAnzB,GACAzM,KAAAw8C,WAAAld,EAAA5wB,KAAA,GAEA,CACA,IAAAP,CAAA0P,EAAAra,GACA,UAAAR,MAAA,2CACA,CACA,0BAAAy5C,CAAAC,GACA,SAAAp6B,EAAAq6B,yBAAA,EAAAphC,EAAAnB,2BAAAsiC,IAAA,KACA,CACAhD,aAAAgD,EACAhH,cAAA,KACAkF,SAAA,KACAC,WAAA,KACAC,eAAA,EACAG,iBAAA,EACAE,cAAA,EACAE,aAAA,EACAC,iBAAA,EACAC,eAAA,EACAC,gCAAA,KACAC,iCAAA,KACAE,yBAAA,KACAC,6BAAA,KACAC,uBAAA,KACAE,wBAAA,QAEA/7C,KAAAimB,gBACA,CACA,iBAAA22B,CAAA5xC,GACA,IAAA6xC,EACA,GAAA7xC,EAAAlB,YAAA,CACA,MAAAgzC,EAAA9/C,OAAAwJ,OAAAxG,KAAA+4C,oBAAA/tC,EAAAqkC,gBACAyN,EAAAC,YACA/8C,KAAAlD,QAAA,kCACA+/C,EAAArhB,EAAAwhB,mBAAAF,GACAD,EAAA58B,GAAA,oBAAAV,IAGAA,EAAAU,GAAA,SAAAtlB,IACAqF,KAAA8a,MAAA,iDAAAngB,EAAAiC,QAAA,GACA,GAEA,KACA,CACAigD,EAAArhB,EAAAyhB,aAAAj9C,KAAA+4C,oBACA,CACA8D,EAAAj8C,WAAA,EAAA62C,MACAz3C,KAAAk9C,eAAAL,GACA,OAAAA,CACA,CACA,cAAAM,CAAAvrC,EAAAwrC,GACAp9C,KAAA8a,MAAA,yBAAAS,EAAAnB,2BAAAxI,IACA,MAAAirC,EAAA78C,KAAA48C,kBAAAQ,EAAApyC,aACA,WAAAnP,SAAA,CAAAE,EAAA6G,KACA,MAAA4hC,QAAA1hC,IACA9C,KAAA8a,MAAA,mBACA,EAAAS,EAAAnB,2BAAAxI,GACA,eACA9O,EAAAlG,SACAb,EAAA,CACA8hB,KAAA,SAAAjM,IAAAiM,KAAA,EACAvX,MAAAxD,EAAAlG,SACA,EAEAigD,EAAAx9B,KAAA,QAAAmlB,SACAqY,EAAAQ,OAAAzrC,GAAA,KACA,MAAA8qC,EAAAG,EAAAjrC,UACA,IAAA0rC,EACA,UAAAZ,IAAA,UACAY,EAAA,CACA5uC,KAAAguC,EAEA,KACA,CACAY,EAAA,CACAzxC,KAAA6wC,EAAA9qC,QACAiM,KAAA6+B,EAAA7+B,KAEA,CACA,MAAAoJ,EAAAjnB,KAAAy8C,2BAAAa,GACA,GAAAt9C,KAAAimB,gBAAA,CACAjmB,KAAAw4C,wBAAA/vB,SAAAxB,EACA,CACAjnB,KAAAk4C,aAAA18C,IAAAqhD,EAAA,CACA51B,cACAmxB,SAAA,IAAAtyB,MAEAs3B,EAAAG,iBAAAn6C,IAAAy5C,GACA78C,KAAA8a,MAAA,uBACA,EAAAS,EAAAnB,2BAAAkjC,IACAvhD,EAAA,CACA8hB,KAAA,SAAAy/B,EACAA,EAAAz/B,KACA,IAEAg/B,EAAAW,eAAA,QAAAhZ,QAAA,GACA,GAEA,CACA,mBAAAiZ,CAAA/mB,EAAA0mB,GACA,GAAA1mB,EAAA96B,SAAA,GACA,OACA2wC,MAAA,EACA1uB,KAAA,EACA6/B,OAAA,GAEA,CACA,MAAAniC,EAAAwD,wBAAA2X,EAAA,KAAAA,EAAA,GAAA7Y,OAAA,GAGA,MAAA8/B,QAAA39C,KAAAm9C,eAAAzmB,EAAA,GAAA0mB,GACA,GAAAO,EAAAr3C,MAAA,CAGA,MAAAs3C,QAAA59C,KAAAy9C,cAAA/mB,EAAA/4B,MAAA,GAAAy/C,GACA,OAAApgD,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAo3C,GAAA,CAAAF,OAAA,CAAAC,EAAAr3C,SAAAs3C,EAAAF,SACA,KACA,CACA,MAAAG,EAAAnnB,EAAA/4B,MAAA,GAAA1B,KAAA2V,IAAA,EAAA2J,EAAAwD,wBAAAnN,GAAA,CAAA/F,KAAA+F,EAAA/F,KAAAgS,KAAA8/B,EAAA9/B,MAAAjM,IACA,MAAAgsC,QAAA/hD,QAAAG,IAAA6hD,EAAA5hD,KAAA2V,GAAA5R,KAAAm9C,eAAAvrC,EAAAwrC,MACA,MAAAU,EAAA,CAAAH,KAAAC,GACA,OACArR,MAAAuR,EAAAztC,QAAA0L,KAAAzV,QAAAhC,YAAA1I,OACAiiB,KAAA8/B,EAAA9/B,KACA6/B,OAAAI,EAAAztC,QAAA0L,KAAAzV,QAAArK,KAAA8f,KAAAzV,QAEA,CACA,KACA,CACA,MAAAw3C,QAAAjiD,QAAAG,IAAA06B,EAAAz6B,KAAA2V,GAAA5R,KAAAm9C,eAAAvrC,EAAAwrC,MACA,OACA7Q,MAAAuR,EAAAztC,QAAA0L,KAAAzV,QAAAhC,YAAA1I,OACAiiB,KAAAigC,EAAA,GAAAjgC,KACA6/B,OAAAI,EAAAztC,QAAA0L,KAAAzV,QAAArK,KAAA8f,KAAAzV,QAEA,CACA,CACA,qBAAAy3C,CAAArnB,EAAA0mB,GACA,IAAAY,EACA,IACAA,QAAAh+C,KAAAy9C,cAAA/mB,EAAA0mB,EACA,CACA,MAAA92C,GACA,MAAAA,CACA,CACA,GAAA03C,EAAAzR,MAAA,GACA,GAAAyR,EAAAzR,MAAA7V,EAAA96B,OAAA,CACAuY,EAAAnW,IAAAiI,EAAAwQ,aAAAkH,KAAA,gBAAAqgC,EAAAzR,sCAAA7V,EAAA96B,kBACA,CACA,OAAAoiD,EAAAngC,IACA,KACA,CACA,MAAAogC,EAAA,iCAAAvnB,EAAA96B,kBACAuY,EAAAnW,IAAAiI,EAAAwQ,aAAAC,MAAAunC,GACA,UAAAj7C,MAAA,GAAAi7C,cAAAD,EAAAN,OAAA/rC,KAAA,QACA,CACA,CACA,WAAAusC,CAAArgC,GACA,WAAAhiB,SAAA,CAAAE,EAAA6G,KACA,MAAAu7C,EAAA,CACA7Z,uBAAA,CAAAvW,EAAAjF,EAAA2f,KAEA0V,EAAA7Z,uBAAA,OACA,MAAA5N,EAAA,GAAAxyB,UAAA6pB,EAAA9xB,KAAAg4B,KAAAiF,aACA,GAAAxC,EAAA96B,SAAA,GACAgH,EAAA,IAAAI,MAAA,kCAAA6a,MACA,MACA,CACA9hB,EAAA26B,EAAA,EAEA8N,QAAAl+B,IACA1D,EAAA,IAAAI,MAAAsD,EAAAD,SAAA,GAGA,MAAA+3C,GAAA,EAAAnjC,EAAAL,gBAAAiD,EAAAsgC,EAAAn+C,KAAAlD,SACAshD,EAAArZ,kBAAA,GAEA,CACA,cAAAsZ,CAAAxgC,EAAAu/B,GACA,MAAA1mB,QAAA12B,KAAAk+C,YAAArgC,GACA,GAAAu/B,EAAA5O,UAAA,CACAxuC,KAAAs+C,eAAAlB,GACA,UAAAp6C,MAAA,+CACA,CACA,MAAAu7C,QAAAv+C,KAAA+9C,gBAAArnB,EAAA0mB,GACA,GAAAA,EAAA5O,UAAA,CACAxuC,KAAAs+C,eAAAlB,GACA,UAAAp6C,MAAA,+CACA,CACA,OAAAu7C,CACA,CACA,aAAAC,CAAA3gC,GACA,MAAA4gC,GAAA,EAAAvjC,EAAAyD,UAAAd,GACA,GAAA4gC,IAAA,MACA,UAAAz7C,MAAA,yBAAA6a,KACA,CACA,MAAA6gC,GAAA,EAAAzjC,EAAA2L,qBAAA63B,GACA,GAAAC,IAAA,MACA,UAAA17C,MAAA,4CAAA6a,KACA,CACA,OAAA6gC,CACA,CACA,SAAAC,CAAA9gC,EAAAra,EAAAzD,GACA,GAAAC,KAAAs4C,SAAA,CACA,UAAAt1C,MAAA,kCACA,CACA,UAAA6a,IAAA,UACA,UAAAnV,UAAA,wBACA,CACA,GAAAlF,IAAA,QAAAA,aAAAyd,EAAAC,mBAAA,CACA,UAAAxY,UAAA,2CACA,CACA,UAAA3I,IAAA,YACA,UAAA2I,UAAA,8BACA,CACA1I,KAAA8a,MAAA,kBAAA+C,GACA,MAAA6gC,EAAA1+C,KAAAw+C,cAAA3gC,GACA,MAAA+gC,iBAAA,CAAAt4C,EAAAuX,KACAhjB,QAAAuuB,UAAA,IAAArpB,EAAAuG,EAAAuX,IAAA,EAIA,IAAAu/B,EAAAp9C,KAAAi4C,WAAAlhC,KAAA,EAAAmE,EAAAP,aAAA+jC,IACA,GAAAtB,EAAA,CACA,IAAA55C,EAAAW,QAAAi5C,EAAApyC,aAAA,CACA4zC,iBAAA,IAAA57C,MAAA,GAAA6a,iDAAA,GACA,MACA,CAGAu/B,EAAA5O,UAAA,MACA,GAAA4O,EAAAyB,kBAAA,CACAzB,EAAAyB,kBAAA1iD,MAAA2iD,GAAA/+C,EAAA,KAAA++C,KAAAx4C,GAAAvG,EAAAuG,EAAA,IACA,KACA,CACAs4C,iBAAA,KAAAxB,EAAAmB,WACA,CACA,MACA,CACAnB,EAAA,CACA2B,QAAA,EAAA7jC,EAAAP,aAAA+jC,GACAM,YAAAN,EACAG,kBAAA,KACArQ,UAAA,MACA+P,WAAA,EACAvzC,YAAAxH,EACA+5C,iBAAA,IAAAz3B,KAEA,MAAAm5B,GAAA,EAAA/jC,EAAAqD,eAAAmgC,EAAAhwC,MACA,MAAAmwC,EAAA7+C,KAAAq+C,SAAAK,EAAAtB,GACAA,EAAAyB,oBAIA,IAAAI,IAAA,MAAAA,SAAA,SAAAA,EAAAphC,QAAA,GACAghC,EAAA1iD,MAAA2iD,IACA,MAAAI,EAAA,CACA9gC,OAAAsgC,EAAAtgC,OACAonB,UAAAkZ,EAAAlZ,UACA92B,MAAA,EAAAwM,EAAAikC,iBAAA,CAAAtzC,KAAAozC,EAAApzC,KAAAgS,KAAAihC,KAEA1B,EAAA2B,QAAA,EAAA7jC,EAAAP,aAAAukC,GACA9B,EAAAyB,kBAAA,KACAzB,EAAAmB,WAAAO,EACA9+C,KAAAi4C,WAAAz8C,IAAA4hD,EAAA2B,OAAA3B,GACAr9C,EAAA,KAAA++C,EAAA,IACAx4C,IACAvG,EAAAuG,EAAA,KAEA,KACA,CACAtG,KAAAi4C,WAAAz8C,IAAA4hD,EAAA2B,OAAA3B,GACAyB,EAAA1iD,MAAA2iD,IACA1B,EAAAyB,kBAAA,KACAzB,EAAAmB,WAAAO,EACA/+C,EAAA,KAAA++C,EAAA,IACAx4C,IACAvG,EAAAuG,EAAA,KAEA,CACA,CACA,WAAA84C,CAAAlgD,EAAAa,GACAC,KAAA8a,MAAA,+BAAA4O,KAAAC,UAAAzqB,EAAA0S,YACA,MAAAytC,EAAAr/C,KAAAk4C,aAAAnhC,IAAA7X,GACAA,EAAAiM,OAAA,KACA,GAAAnL,KAAAimB,iBAAAo5B,EAAA,CACAr/C,KAAAw4C,wBAAA7vB,WAAA02B,EAAAp4B,cACA,EAAA3E,EAAAsK,uBAAAyyB,EAAAp4B,YACA,CACAjnB,KAAAk4C,aAAA/uB,OAAAjqB,GACAa,IAAA,MAAAA,SAAA,SAAAA,GAAA,GAEA,CACA,YAAAu/C,CAAA7J,EAAA11C,GACA,IAAAkB,EACAjB,KAAA8a,MAAA,kCAAA7Z,EAAAw0C,EAAAl2B,UAAA,MAAAte,SAAA,SAAAA,EAAAy0C,gBACA,MAAA6D,EAAAv5C,KAAAo4C,SAAArhC,IAAA0+B,GACA,MAAA8J,cAAA,KACA,GAAAv/C,KAAAimB,iBAAAszB,EAAA,CACAv5C,KAAAy4C,uBAAA9vB,WAAA4wB,EAAAz3C,MACA,EAAAwgB,EAAAsK,uBAAA2sB,EAAAz3C,IACA,CACA9B,KAAAo4C,SAAAjvB,OAAAssB,GACA11C,IAAA,MAAAA,SAAA,SAAAA,GAAA,EAEA,GAAA01C,EAAA3B,OAAA,CACAj5C,QAAAuuB,SAAAm2B,cACA,KACA,CACA9J,EAAAtqC,MAAAo0C,cACA,CACA,CACA,cAAAjB,CAAAlB,GACA,UAAAl+C,KAAAk+C,EAAAG,iBAAA,CACA,MAAA8B,EAAAr/C,KAAAk4C,aAAAnhC,IAAA7X,GACAc,KAAAo/C,YAAAlgD,GAAA,KACAk+C,EAAAG,iBAAAp0B,OAAAjqB,EAAA,IAEA,GAAAmgD,EAAA,CACA,UAAA5J,KAAA4J,EAAAjH,SAAA,CACAp4C,KAAAs/C,aAAA7J,EACA,CACA,CACA,CACAz1C,KAAAi4C,WAAA9uB,OAAAi0B,EAAA2B,OACA,CAQA,MAAAS,CAAA3hC,GACA7d,KAAA8a,MAAA,eAAA+C,GACA,MAAA6gC,EAAA1+C,KAAAw+C,cAAA3gC,GACA,MAAAohC,GAAA,EAAA/jC,EAAAqD,eAAAmgC,EAAAhwC,MACA,IAAAuwC,IAAA,MAAAA,SAAA,SAAAA,EAAAphC,QAAA,GACA,UAAA7a,MAAA,uBACA,CACA,MAAAo6C,EAAAp9C,KAAAi4C,WAAAlhC,KAAA,EAAAmE,EAAAP,aAAA+jC,IACA,GAAAtB,EAAA,CACAp9C,KAAA8a,MAAA,aAAAsiC,EAAA2B,OAAA,2BAAA7jC,EAAAP,aAAAyiC,EAAA4B,cAGA,GAAA5B,EAAAyB,kBAAA,CACAzB,EAAA5O,UAAA,IACA,KACA,CACAxuC,KAAAs+C,eAAAlB,EACA,CACA,CACA,CAYA,KAAAqC,CAAA5hC,EAAA6hC,GACA,IAAAz+C,EAAAyM,EACA1N,KAAA8a,MAAA,cAAA+C,EAAA,gBAAA6hC,GACA,MAAAhB,EAAA1+C,KAAAw+C,cAAA3gC,GACA,MAAAohC,GAAA,EAAA/jC,EAAAqD,eAAAmgC,EAAAhwC,MACA,IAAAuwC,IAAA,MAAAA,SAAA,SAAAA,EAAAphC,QAAA,GACA,UAAA7a,MAAA,sBACA,CACA,MAAAo6C,EAAAp9C,KAAAi4C,WAAAlhC,KAAA,EAAAmE,EAAAP,aAAA+jC,IACA,IAAAtB,EAAA,CACA,MACA,CACA,MAAAuC,EAAA,IAAA75B,IACA,UAAA+2B,KAAAO,EAAAG,iBAAA,CACA,MAAAqC,EAAA5/C,KAAAk4C,aAAAnhC,IAAA8lC,GACA,IAAA+C,EAAA,CACA,QACA,CACA,UAAAnK,KAAAmK,EAAAxH,SAAA,CACAuH,EAAAv8C,IAAAqyC,GACAz1C,KAAAs/C,aAAA7J,GAAA,KACAkK,EAAAx2B,OAAAssB,EAAA,GAEA,CACA,EAGA/nC,GAAAzM,EAAAL,YAAA,KACA,UAAA60C,KAAAkK,EAAA,CACAlK,EAAApqB,QAAAmQ,EAAAiB,UAAAojB,eACA,IACAH,IAAAt+C,SAAA,MAAAsM,SAAA,SAAAA,EAAAtQ,KAAA6D,EACA,CACA,aAAA6+C,GACA,UAAA1C,KAAAp9C,KAAAi4C,WAAA57C,SAAA,CACA+gD,EAAA5O,UAAA,IACA,CACAxuC,KAAAi4C,WAAA8H,QAEA,UAAA7gD,KAAAc,KAAAk4C,aAAA/0C,OAAA,CACAnD,KAAAo/C,YAAAlgD,EACA,CAGAc,KAAAo4C,SAAA/Y,SAAA,CAAA2gB,EAAAvK,KACAz1C,KAAAs/C,aAAA7J,GAIAA,EAAApqB,QAAAmQ,EAAAiB,UAAAojB,eAAA,IAEA7/C,KAAAo4C,SAAA2H,QACA,GAAA//C,KAAAimB,gBAAA,EACA,EAAA3D,EAAAsK,uBAAA5sB,KAAAinB,YACA,CACAjnB,KAAAs4C,SAAA,IACA,CACA,QAAAgE,CAAA7vC,EAAA6lC,EAAAjrC,EAAAN,EAAAkkB,GACA,GAAAjrB,KAAAm4C,SAAAp7C,IAAA0P,GAAA,CACA,YACA,CACAzM,KAAAm4C,SAAA38C,IAAAiR,EAAA,CACAwzC,KAAA3N,EACAjrC,YACAN,cACAkkB,OACAvc,KAAAjC,IAEA,WACA,CACA,UAAA+vC,CAAA/vC,GACA,OAAAzM,KAAAm4C,SAAAhvB,OAAA1c,EACA,CAIA,KAAAM,GACA,GAAA/M,KAAAk4C,aAAAxkB,OAAA,GACA,IAAA1zB,KAAAk4C,aAAA/0C,QAAAiB,OAAAlF,MAAAghD,YAAA,CACA,UAAAl9C,MAAA,yCACA,CACA,GAAAhD,KAAAq4C,UAAA,MACA,UAAAr1C,MAAA,4BACA,CACAhD,KAAAq4C,QAAA,IACA,CACA,WAAA8H,CAAApgD,GACA,IAAAkB,EACA,MAAAm/C,gBAAA95C,IACA,GAAAtG,KAAAimB,gBAAA,EACA,EAAA3D,EAAAsK,uBAAA5sB,KAAAinB,YACA,CACAlnB,EAAAuG,EAAA,EAEA,IAAA+5C,EAAA,EACA,SAAAC,gBACAD,IACA,GAAAA,IAAA,GACAD,iBACA,CACA,CACApgD,KAAAs4C,SAAA,KACA,UAAAp5C,KAAAc,KAAAk4C,aAAA/0C,OAAA,CACAk9C,IACA,MAAAE,EAAAvgD,KAAAk4C,aAAAnhC,IAAA7X,GAAA+nB,YAAAxa,KACAzM,KAAA8a,MAAA,sBAAAylC,EAAA,aACAvgD,KAAAo/C,YAAAlgD,GAAA,KACAc,KAAA8a,MAAA,UAAAylC,EAAA,qBACAD,eAAA,GAEA,CACA,UAAA7K,KAAAz1C,KAAAo4C,SAAAj1C,OAAA,CACAk9C,IACA,MAAAG,GAAAv/C,EAAAw0C,EAAAl2B,UAAA,MAAAte,SAAA,SAAAA,EAAAy0C,cACA11C,KAAA8a,MAAA,uBAAA0lC,EAAA,aACAxgD,KAAAs/C,aAAA7J,GAAA,KACAz1C,KAAA8a,MAAA,WAAA0lC,EAAA,qBACAF,eAAA,GAEA,CACA,GAAAD,IAAA,GACAD,iBACA,CACA,CACA,YAAAK,GACA,UAAAz9C,MAAA,sBACA,CAMA,cAAA0I,GACA,OAAA1L,KAAAinB,WACA,CACA,kBAAAy5B,CAAA/sC,EAAA5Q,GACA,MAAA49C,EAAA59C,EAAAy4B,EAAAiB,UAAAyV,2BACA,UAAAyO,IAAA,WACAA,EAAAniB,WAAA,qBACA7qB,EAAAshC,QAAA,CACA,CAAAzZ,EAAAiB,UAAAuV,qBAAAxW,EAAAiB,UAAAmkB,oCACA,CAAApL,UAAA,OACA,YACA,CACA,WACA,CACA,gBAAAqL,CAAAnyC,GACA1O,KAAA8a,MAAA,2BACApM,EACA,eACA1O,KAAAu4C,qBACA,MAAAjG,EAAAtyC,KAAAm4C,SAAAphC,IAAArI,GACA,GAAA4jC,IAAAhuC,UAAA,CACAtE,KAAA8a,MAAA,oCACApM,EACA,mCACA,WACA,CACA,OAAA4jC,CACA,CACA,iBAAAwO,CAAAh+C,EAAA6Q,EAAAotC,EAAA,MACA,IAAA9/C,EAAAyM,EACA,MAAA2nC,EAAAr4C,OAAAwJ,OAAA,gBAAAvF,EAAA6B,EAAAqD,QAAA,MAAAlF,SAAA,EAAAA,EAAAgF,EAAAG,OAAA+I,SAAA,eAAArM,EAAAuD,QAAA,CAAAm1B,EAAAiB,UAAAuV,qBAAAxW,EAAAiB,UAAAwV,eAAA,CAAAzW,EAAAiB,UAAAyV,2BAAA,2BAAAxkC,EAAA5K,EAAAG,YAAA,MAAAyK,SAAA,SAAAA,EAAAo0B,kBACAnuB,EAAAshC,QAAAI,EAAA,CAAAG,UAAA,OACA,GAAAx1C,KAAAimB,gBAAA,CACAjmB,KAAAkmB,YAAA6F,gBACAg1B,IAAA,MAAAA,SAAA,SAAAA,EAAAhG,cAAAhvB,eACA,CACA,CACA,gBAAAi1B,CAAArtC,EAAA5Q,GACA,MAAAg+C,EAAA/gD,KAAAo4C,SAAArhC,IAAApD,EAAA8hC,SACAz1C,KAAAkmB,YAAA0F,iBACAm1B,IAAA,MAAAA,SAAA,SAAAA,EAAAhG,cAAAnvB,iBACA,IAAA5rB,KAAA0gD,mBAAA/sC,EAAA5Q,GAAA,CACA/C,KAAAkmB,YAAA6F,gBACAg1B,IAAA,MAAAA,SAAA,SAAAA,EAAAhG,cAAAhvB,gBACA,MACA,CACA,MAAArd,EAAA3L,EAAAy0C,GACA,MAAAlF,EAAAtyC,KAAA6gD,iBAAAnyC,GACA,IAAA4jC,EAAA,CACAtyC,KAAA8gD,kBAAAnJ,+BAAAjpC,GAAAiF,EAAAotC,GACA,MACA,CACA,IAAA1O,EAAA,CACA8C,eAAA,KACA,GAAA4L,EAAA,CACAA,EAAA1F,cAAA,EACA0F,EAAApF,yBAAA,IAAAn7C,IACA,GAEAw0C,mBAAA,KACA,GAAA+L,EAAA,CACAA,EAAAzF,kBAAA,EACAyF,EAAAnF,6BAAA,IAAAp7C,IACA,GAEAqrB,UAAAvmB,IACA,GAAAA,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACAvT,KAAAkmB,YAAA4F,kBACA,KACA,CACA9rB,KAAAkmB,YAAA6F,eACA,GAEAknB,YAAArhB,IACA,GAAAmvB,EAAA,CACA,GAAAnvB,EAAA,CACAmvB,EAAAhG,cAAAjvB,kBACA,KACA,CACAi1B,EAAAhG,cAAAhvB,eACA,CACA,IAGA,MAAA3uB,GAAA,EAAAqlB,EAAAktB,2BAAA3vC,KAAAmQ,aAAAwD,EAAA5Q,EAAAsvC,EAAAC,EAAAtyC,KAAAlD,SACA,IAAAkD,KAAAihD,mBAAA7jD,EAAAk1C,GAAA,CACAtyC,KAAAkmB,YAAA6F,gBACAg1B,IAAA,MAAAA,SAAA,SAAAA,EAAAhG,cAAAhvB,gBACA3uB,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,yBAAAisC,EAAArnB,QAEA,CACA,CACA,cAAAi2B,CAAAvtC,EAAA5Q,GACA,GAAA/C,KAAA0gD,mBAAA/sC,EAAA5Q,KAAA,MACA,MACA,CACA,MAAA2L,EAAA3L,EAAAy0C,GACA,MAAAlF,EAAAtyC,KAAA6gD,iBAAAnyC,GACA,IAAA4jC,EAAA,CACAtyC,KAAA8gD,kBAAAnJ,+BAAAjpC,GAAAiF,EAAA,MACA,MACA,CACA,MAAAvW,GAAA,EAAAqlB,EAAAktB,2BAAA3vC,KAAAmQ,aAAAwD,EAAA5Q,EAAA,KAAAuvC,EAAAtyC,KAAAlD,SACA,IAAAkD,KAAAihD,mBAAA7jD,EAAAk1C,GAAA,CACAl1C,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAA+I,SACA9I,QAAA,yBAAAisC,EAAArnB,QAEA,CACA,CACA,kBAAAg2B,CAAA7jD,EAAAk1C,GACA,MAAArnB,QAAAqnB,EACA,GAAArnB,IAAA,SACAk2B,YAAA/jD,EAAAk1C,EACA,MACA,GAAArnB,IAAA,gBACAm2B,sBAAAhkD,EAAAk1C,EACA,MACA,GAAArnB,IAAA,gBACAo2B,sBAAAjkD,EAAAk1C,EACA,MACA,GAAArnB,IAAA,QACAq2B,oBAAAlkD,EAAAk1C,EACA,KACA,CACA,YACA,CACA,WACA,CACA,cAAA4K,CAAAL,GACA,GAAAA,IAAA,MACA,MACA,CACA,MAAA0E,EAAA1E,EAAAjrC,UACA,IAAA2mC,EAAA,OACA,GAAAgJ,EAAA,CACA,UAAAA,IAAA,UACAhJ,EAAAgJ,CACA,KACA,CACAhJ,EAAAgJ,EAAA3vC,QAAA,IAAA2vC,EAAA1jC,IACA,CACA,CACA7d,KAAAu4C,sBACA,MAAAjG,EAAAtyC,KAAAimB,gBACAjmB,KAAAghD,iBACAhhD,KAAAkhD,eACArE,EAAA58B,GAAA,SAAAqyB,EAAAnkC,KAAAnO,OACA68C,EAAA58B,GAAA,WAAAw1B,IACA,IAAAx0C,EAAAyM,EAAAC,EAAAK,EAAAC,EAAAkX,EACA,MAAA8B,GAAA,EAAA3E,EAAAq6B,yBAAA17C,EAAAw0C,EAAAl2B,OAAAm2B,iBAAA,MAAAz0C,SAAA,EAAAA,EAAA,UAAAjB,KAAAs5C,6BAAA7D,GAAAz1C,KAAAimB,iBACA,MAAA86B,EAAA,CACAj/C,IAAAmlB,EACA8zB,cAAA,IAAAz4B,EAAA6D,oBACAk1B,aAAA,EACAC,iBAAA,EACAK,yBAAA,KACAC,6BAAA,OAEAluC,EAAA1N,KAAAk4C,aAAAnhC,IAAA8lC,MAAA,MAAAnvC,SAAA,SAAAA,EAAA0qC,SAAAh1C,IAAAqyC,GACAz1C,KAAAo4C,SAAA58C,IAAAi6C,EAAAsL,GACA,MAAAS,EAAA/L,EAAAl2B,OAAAm2B,cACA,GAAA11C,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,8CAAAo6B,GACAxhD,KAAAy4C,uBAAAhwB,SAAAxB,EACA,CACA,IAAAw6B,EAAA,KACA,IAAAC,EAAA,KACA,IAAAC,EAAA,MACA,GAAA3hD,KAAA24C,qBAAAtB,EAAA,CAEA,MAAA91C,EAAAvB,KAAA24C,mBAAA,GACA,MAAAv4C,EAAAR,KAAAC,SAAA0B,EAAA,EAAAA,EACAkgD,GAAAzzC,GAAAL,EAAA/M,YAAA,KACA,IAAAK,EAAAyM,EACAi0C,EAAA,KACA,GAAA3hD,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,2DAAAo6B,EACA,CACA,IACA/L,EAAAmM,OAAApmB,EAAAiB,UAAAolB,mBAAA,OAAAp5C,OAAAwW,KAAA,WACA,CACA,MAAAtkB,GAEA86C,EAAApqB,UACA,MACA,CACAoqB,EAAAtqC,QAGA,GAAAnL,KAAA44C,0BAAAvB,EAAA,CACAqK,GAAAh0C,GAAAzM,EAAAL,YAAA,KACA60C,EAAApqB,SAAA,GACArrB,KAAA44C,0BAAAx3C,SAAA,MAAAsM,SAAA,SAAAA,EAAAtQ,KAAA6D,EACA,IACAjB,KAAA24C,mBAAAv4C,IAAAgB,SAAA,MAAA4M,SAAA,SAAAA,EAAA5Q,KAAAuQ,EACA,CACA,MAAAm0C,GAAA38B,GAAAlX,EAAA6Y,aAAA,KACA,IAAA7lB,EAAAyM,EACA,MAAAq0C,GAAAr0C,GAAAzM,EAAAL,YAAA,KACA+gD,EAAA,KACA,GAAA3hD,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,0DAAAo6B,EACA,CACA/L,EAAAtqC,OAAA,GACAnL,KAAA84C,qBAAA13C,SAAA,MAAAsM,SAAA,SAAAA,EAAAtQ,KAAA6D,GACA,IACAw0C,EAAAuM,MAAA,CAAAl/C,EAAA2W,EAAAwoC,KACAphD,aAAAkhD,EAAA,GAEA,CACA,MAAApnD,GAEA86C,EAAApqB,SACA,IACArrB,KAAA64C,kBAAAz3C,SAAA,MAAA+jB,SAAA,SAAAA,EAAA/nB,KAAA6Q,GACAwnC,EAAAx1B,GAAA,cACA,IAAAhf,EACA,GAAAjB,KAAAimB,gBAAA,CACA,IAAA07B,EAAA,CACA3hD,KAAA+mB,cAAAK,SAAA,0CAAAo6B,EACA,CACAxhD,KAAAy4C,uBAAA9vB,WAAA1B,IACA,EAAA3E,EAAAsK,uBAAA3F,EACA,CACA,GAAAw6B,EAAA,CACA5gD,aAAA4gD,EACA,CACA,GAAAC,EAAA,CACA7gD,aAAA6gD,EACA,CACA,GAAAI,EAAA,CACAjhD,aAAAihD,EACA,EACA7gD,EAAAjB,KAAAk4C,aAAAnhC,IAAA8lC,MAAA,MAAA57C,SAAA,SAAAA,EAAAm3C,SAAAjvB,OAAAssB,GACAz1C,KAAAo4C,SAAAjvB,OAAAssB,EAAA,GACA,GAEA,GAEA,MACA,MAAAyM,SAAA/wC,SAAA,YAAAA,OAAAlO,SAAAjG,OAAAzC,OAAA,aACAy9C,EAAA,CAAAN,UAAA,sEACAvB,EAAAn1C,EAAA,KAAAg3C,EAAA,CAAArB,KAAA,SAAAlqC,KAAA,QAAA01C,OAAA,MAAAC,QAAA,MAAAnL,OAAA,CAAAl6C,IAAAwL,GAAA,UAAAA,EAAAwO,IAAAxO,KAAAwE,OAAA9J,SAAAi/C,GAAA,KAAAnK,GACA,GAAAmK,EAAAllD,OAAA2B,eAAAqC,EAAAmQ,OAAAlO,SAAA,CAAA+X,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,KAAA1jD,MAAAsjD,GACA,EALA,GAMAlhD,CACA,EA/5BA,GAg6BA1G,EAAA0mB,SACAtlB,eAAAylD,YAAA/jD,EAAAk1C,GACA,IAAA3+B,EACA,SAAAshC,QAAAnyC,EAAAlE,EAAA2jD,EAAA56C,GACA,GAAA7E,EAAA,CACA1F,EAAAwxC,YAAA,EAAAwI,EAAA/I,qBAAAvrC,EAAAy/C,IACA,MACA,CACAnlD,EAAA8P,YAAAtO,GAAA,KACAxB,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAmN,GACAlN,QAAA,KACApD,SAAAs/C,IAAA,MAAAA,SAAA,EAAAA,EAAA,MACA,GAEA,CACA,IAAAC,EACA,IAAAC,EAAA,KACArlD,EAAA2P,MAAA,CACA,iBAAArI,CAAAzB,GACAu/C,EAAAv/C,EACA7F,EAAA+J,WACA,EACA,gBAAAlC,CAAArI,GACA,GAAA6lD,EAAA,CACArlD,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAguC,cACA/tC,QAAA,iEAAAisC,EAAA5jC,OACAzL,SAAA,OAEA,MACA,CACAw/C,EAAA7lD,EACAQ,EAAA+J,WACA,EACA,kBAAA8oC,GACA,IAAAwS,EAAA,CACArlD,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAguC,cACA/tC,QAAA,2DAAAisC,EAAA5jC,OACAzL,SAAA,OAEA,MACA,CACA0Q,EAAA,IAAAyjC,EAAAlJ,yBAAAoE,EAAA5jC,KAAAtR,EAAAolD,EAAAC,GACA,IACAnQ,EAAA2N,KAAAtsC,EAAAshC,QACA,CACA,MAAAnyC,GACA1F,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAy2B,QACAx2B,QAAA,qCAAAvD,EAAAlG,UACAqG,SAAA,MAEA,CACA,EACA,QAAAktC,GACA,GAAAx8B,EAAA,CACAA,EAAA66B,UAAA,KACA76B,EAAAL,KAAA,wBACA,CACA,GAEA,CACA,SAAA8tC,sBAAAhkD,EAAAk1C,GACA,IAAA3+B,EACA,SAAAshC,QAAAnyC,EAAAlE,EAAA2jD,EAAA56C,GACA,GAAA7E,EAAA,CACA1F,EAAAwxC,YAAA,EAAAwI,EAAA/I,qBAAAvrC,EAAAy/C,IACA,MACA,CACAnlD,EAAA8P,YAAAtO,GAAA,KACAxB,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAmN,GACAlN,QAAA,KACApD,SAAAs/C,IAAA,MAAAA,SAAA,EAAAA,EAAA,MACA,GAEA,CACAnlD,EAAA2P,MAAA,CACA,iBAAArI,CAAAzB,GACA0Q,EAAA,IAAAyjC,EAAAnJ,uBAAAqE,EAAA5jC,KAAAtR,EAAA6F,GACA,IACAqvC,EAAA2N,KAAAtsC,EAAAshC,QACA,CACA,MAAAnyC,GACA1F,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAy2B,QACAx2B,QAAA,qCAAAvD,EAAAlG,UACAqG,SAAA,MAEA,CACA,EACA,gBAAAgC,CAAArI,GACA+W,EAAApY,KAAAqB,EACA,EACA,kBAAAqzC,GACAt8B,EAAApY,KAAA,KACA,EACA,QAAA40C,GACA,GAAAx8B,EAAA,CACAA,EAAA66B,UAAA,KACA76B,EAAAL,KAAA,yBACAK,EAAA0X,SACA,CACA,GAEA,CACA,SAAAg2B,sBAAAjkD,EAAAk1C,GACA,IAAA3+B,EACA,IAAA6uC,EACA,IAAAC,EAAA,KACArlD,EAAA2P,MAAA,CACA,iBAAArI,CAAAzB,GACAu/C,EAAAv/C,EACA7F,EAAA+J,WACA,EACA,gBAAAlC,CAAArI,GACA,GAAA6lD,EAAA,CACArlD,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAguC,cACA/tC,QAAA,iEAAAisC,EAAA5jC,OACAzL,SAAA,OAEA,MACA,CACAw/C,EAAA7lD,EACAQ,EAAA+J,WACA,EACA,kBAAA8oC,GACA,IAAAwS,EAAA,CACArlD,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAguC,cACA/tC,QAAA,2DAAAisC,EAAA5jC,OACAzL,SAAA,OAEA,MACA,CACA0Q,EAAA,IAAAyjC,EAAAlJ,yBAAAoE,EAAA5jC,KAAAtR,EAAAolD,EAAAC,GACA,IACAnQ,EAAA2N,KAAAtsC,EACA,CACA,MAAA7Q,GACA1F,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAy2B,QACAx2B,QAAA,qCAAAvD,EAAAlG,UACAqG,SAAA,MAEA,CACA,EACA,QAAAktC,GACA,GAAAx8B,EAAA,CACAA,EAAA66B,UAAA,KACA76B,EAAAL,KAAA,yBACAK,EAAA0X,SACA,CACA,GAEA,CACA,SAAAi2B,oBAAAlkD,EAAAk1C,GACA,IAAA3+B,EACAvW,EAAA2P,MAAA,CACA,iBAAArI,CAAAzB,GACA0Q,EAAA,IAAAyjC,EAAAnJ,uBAAAqE,EAAA5jC,KAAAtR,EAAA6F,GACA,IACAqvC,EAAA2N,KAAAtsC,EACA,CACA,MAAA7Q,GACA1F,EAAAwxC,WAAA,CACAzoC,KAAAF,EAAAG,OAAAy2B,QACAx2B,QAAA,qCAAAvD,EAAAlG,UACAqG,SAAA,MAEA,CACA,EACA,gBAAAgC,CAAArI,GACA+W,EAAApY,KAAAqB,EACA,EACA,kBAAAqzC,GACAt8B,EAAApY,KAAA,KACA,EACA,QAAA40C,GACA,GAAAx8B,EAAA,CACAA,EAAA66B,UAAA,KACA76B,EAAAL,KAAA,yBACAK,EAAA0X,SACA,CACA,GAEA,C,iBCzrCAruB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAuqC,8BAAAvqC,EAAA6tC,sBAAA7tC,EAAAooD,6BAAA,EAUA,MAAAC,EAAAvoD,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KAKA,MAAAwoD,EAAA,qBAKA,MAAAC,EAAA,OACA,SAAAC,aAAAv6C,GAEA,eAAAA,KAAAq3B,UAAA,IACA,UAAAr3B,EAAAq3B,UAAA,UACA,UAAA58B,MAAA,iFAAAuF,EAAAq3B,UACA,CACA,cAAAr3B,KAAAqD,SAAA,IACA,UAAArD,EAAAqD,SAAA,UACA,UAAA5I,MAAA,gFAAAuF,EAAAq3B,UACA,CACA,OACAA,QAAAr3B,EAAAq3B,QACAh0B,OAAArD,EAAAqD,OAEA,KACA,CACA,OACAg0B,QAAAr3B,EAAAq3B,QAEA,CACA,KACA,CACA,cAAAr3B,KAAAqD,SAAAtH,UAAA,CACA,UAAAtB,MAAA,qEACA,CACA,QACA,CACA,CACA,SAAA+/C,oBAAAx6C,GACA,qBAAAA,KACAX,OAAA2mC,UAAAhmC,EAAA4jC,cACA5jC,EAAA4jC,YAAA,GACA,UAAAnpC,MAAA,gFACA,CACA,wBAAAuF,WACAA,EAAAkiC,iBAAA,WACAmY,EAAAhiB,KAAAr4B,EAAAkiC,gBAAA,CACA,UAAAznC,MAAA,qHACA,CACA,oBAAAuF,WACAA,EAAAwjC,aAAA,WACA6W,EAAAhiB,KAAAr4B,EAAAwjC,YAAA,CACA,UAAA/oC,MAAA,iHACA,CACA,2BAAAuF,WACAA,EAAAyjC,oBAAA,UACAzjC,EAAAyjC,mBAAA,GACA,UAAAhpC,MAAA,wFACA,CACA,8BAAAuF,GAAA7K,MAAAwzB,QAAA3oB,EAAAqkC,uBAAA,CACA,UAAA5pC,MAAA,uEACA,CACA,GAAAuF,EAAAqkC,qBAAAhxC,SAAA,GACA,UAAAoH,MAAA,6EACA,CACA,UAAApE,KAAA2J,EAAAqkC,qBAAA,CACA,UAAAhuC,IAAA,UACA,IAAA5B,OAAAX,OAAA4J,EAAAG,QAAAoQ,SAAA5X,GAAA,CACA,UAAAoE,MAAA,0FACA,CACA,MACA,UAAApE,IAAA,UACA,IAAA5B,OAAAX,OAAA4J,EAAAG,QAAAoQ,SAAA5X,EAAAk/B,eAAA,CACA,UAAA96B,MAAA,wFACA,CACA,KACA,CACA,UAAAA,MAAA,4FACA,CACA,CACA,OACAmpC,YAAA5jC,EAAA4jC,YACA1B,eAAAliC,EAAAkiC,eACAsB,WAAAxjC,EAAAwjC,WACAC,kBAAAzjC,EAAAyjC,kBACAY,qBAAArkC,EAAAqkC,qBAEA,CACA,SAAAoW,sBAAAz6C,GACA,qBAAAA,KACAX,OAAA2mC,UAAAhmC,EAAA4jC,cACA5jC,EAAA4jC,YAAA,GACA,UAAAnpC,MAAA,kFACA,CACA,oBAAAuF,WACAA,EAAA6kC,eAAA,WACAwV,EAAAhiB,KAAAr4B,EAAA6kC,eAAA,CACA,UAAApqC,MAAA,qHACA,CACA,2BAAAuF,GAAA7K,MAAAwzB,QAAA3oB,EAAAmkC,qBAAA,CACA,UAAA9tC,KAAA2J,EAAAmkC,oBAAA,CACA,UAAA9tC,IAAA,UACA,IAAA5B,OAAAX,OAAA4J,EAAAG,QAAAoQ,SAAA5X,GAAA,CACA,UAAAoE,MAAA,0FACA,CACA,MACA,UAAApE,IAAA,UACA,IAAA5B,OAAAX,OAAA4J,EAAAG,QAAAoQ,SAAA5X,EAAAk/B,eAAA,CACA,UAAA96B,MAAA,wFACA,CACA,KACA,CACA,UAAAA,MAAA,4FACA,CACA,CACA,CACA,MAAA+Y,EAAA,CACAowB,YAAA5jC,EAAA4jC,aAEA,GAAA5jC,EAAA6kC,aAAA,CACArxB,EAAAqxB,aAAA7kC,EAAA6kC,YACA,CACA,GAAA7kC,EAAAmkC,oBAAA,CACA3wB,EAAA2wB,oBAAAnkC,EAAAmkC,mBACA,CACA,OAAA3wB,CACA,CACA,SAAAknC,qBAAA16C,GACA,IAAAvH,EACA,MAAA+a,EAAA,CACAtP,KAAA,IAEA,cAAAlE,KAAA7K,MAAAwzB,QAAA3oB,EAAAkE,MAAA,CACA,UAAAzJ,MAAA,4CACA,CACA,UAAAyJ,KAAAlE,EAAAkE,KAAA,CACAsP,EAAAtP,KAAAlR,KAAAunD,aAAAr2C,GACA,CACA,oBAAAlE,EAAA,CACA,UAAAA,EAAA2J,eAAA,WACA,UAAAlP,MAAA,8CACA,CACA+Y,EAAA7J,aAAA3J,EAAA2J,YACA,CACA,eAAA3J,EAAA,CACA,UAAAA,EAAAyQ,UAAA,UACA,iBAAAzQ,EAAAyQ,mBACAzQ,EAAAyQ,QAAAO,UAAA,WACA,UAAAvW,MAAA,iDACA,CACA,eAAAuF,EAAAyQ,mBACAzQ,EAAAyQ,QAAAQ,QAAA,WACA,UAAAxW,MAAA,+CACA,CACA+Y,EAAA/C,QAAAzQ,EAAAyQ,OACA,MACA,UAAAzQ,EAAAyQ,UAAA,UACA4pC,EAAAhiB,KAAAr4B,EAAAyQ,SAAA,CACA,MAAAkqC,EAAA36C,EAAAyQ,QACA6Q,UAAA,EAAAthB,EAAAyQ,QAAApd,OAAA,GACA8V,MAAA,KACAqK,EAAA/C,QAAA,CACAO,QAAA2pC,EAAA,KACA1pC,QAAAxY,EAAAkiD,EAAA,YAAAliD,SAAA,EAAAA,EAAA,KAEA,KACA,CACA,UAAAgC,MAAA,yCACA,CACA,CACA,uBAAAuF,EAAA,CACA,UAAAA,EAAA46C,kBAAA,UACA,UAAAngD,MAAA,iDACA,CACA+Y,EAAAonC,gBAAA56C,EAAA46C,eACA,CACA,wBAAA56C,EAAA,CACA,UAAAA,EAAA66C,mBAAA,UACA,UAAApgD,MAAA,iDACA,CACA+Y,EAAAqnC,iBAAA76C,EAAA66C,gBACA,CACA,mBAAA76C,EAAA,CACA,qBAAAA,EAAA,CACA,UAAAvF,MAAA,gFACA,KACA,CACA+Y,EAAAyuB,YAAAuY,oBAAAx6C,EAAAiiC,YACA,CACA,MACA,qBAAAjiC,EAAA,CACAwT,EAAA2uB,cAAAsY,sBAAAz6C,EAAAmiC,cACA,CACA,OAAA3uB,CACA,CACA,SAAA2mC,wBAAAn6C,GACA,mBAAAA,WACAA,EAAA0gB,YAAA,UACA1gB,EAAA0gB,WAAA,GACA1gB,EAAA0gB,UAAA,KACA,UAAAjmB,MAAA,mEACA,CACA,oBAAAuF,WACAA,EAAA2gB,aAAA,UACA3gB,EAAA2gB,YAAA,GACA,UAAAlmB,MAAA,sEACA,CACA,OACAimB,WAAA1gB,EAAA0gB,UAAAo6B,QAAA,GACAn6B,YAAA3gB,EAAA2gB,WAAAm6B,QAAA,GAEA,CACA/oD,EAAAooD,gDACA,SAAAY,4BAAA/6C,GACA,YAAAA,IAAA,UAAAA,IAAA,OACA,UAAAvF,MAAA,uDAAAuF,IACA,CACA,MAAApF,EAAAnG,OAAAmG,KAAAoF,GACA,GAAApF,EAAAvH,OAAA,GACA,UAAAoH,MAAA,yDAAAG,IACA,CACA,GAAAA,EAAAvH,SAAA,GACA,UAAAoH,MAAA,mEACA,CACA,OACA,CAAAG,EAAA,IAAAoF,EAAApF,EAAA,IAEA,CACA,SAAAglC,sBAAA5/B,GACA,MAAAwT,EAAA,CACAssB,oBAAA,GACAxB,aAAA,IAEA,2BAAAt+B,EAAA,CACA,UAAAA,EAAAg7C,sBAAA,UACAxnC,EAAAwnC,oBAAAh7C,EAAAg7C,mBACA,KACA,CACA,UAAAvgD,MAAA,sDACA,CACA,CACA,2BAAAuF,EAAA,CACA,GAAA7K,MAAAwzB,QAAA3oB,EAAA8/B,qBAAA,CACA,UAAAnd,KAAA3iB,EAAA8/B,oBAAA,CACAtsB,EAAAssB,oBAAA9sC,KAAA+nD,4BAAAp4B,GACA,CACA,KACA,CACA,UAAAloB,MAAA,sDACA,CACA,CACA,oBAAAuF,EAAA,CACA,GAAA7K,MAAAwzB,QAAA3oB,EAAAs+B,cAAA,CACA,UAAAA,KAAAt+B,EAAAs+B,aAAA,CACA9qB,EAAA8qB,aAAAtrC,KAAA0nD,qBAAApc,GACA,CACA,CACA,CACA,uBAAAt+B,EAAA,CACAwT,EAAAgN,gBAAA25B,wBAAAn6C,EAAAwgB,gBACA,CAEA,MAAAy6B,EAAA,GACA,UAAA3c,KAAA9qB,EAAA8qB,aAAA,CACA,UAAAp6B,KAAAo6B,EAAAp6B,KAAA,CACA,UAAAg3C,KAAAD,EAAA,CACA,GAAA/2C,EAAAmzB,UAAA6jB,EAAA7jB,SACAnzB,EAAAb,SAAA63C,EAAA73C,OAAA,CACA,UAAA5I,MAAA,0CAAAyJ,EAAAmzB,WAAAnzB,EAAAb,SACA,CACA,CACA43C,EAAAjoD,KAAAkR,EACA,CACA,CACA,OAAAsP,CACA,CACAzhB,EAAA6tC,4CACA,SAAAub,qBAAAn7C,GACA,uBAAAA,GAAA,CACA,UAAAvF,MAAA,wDACA,CACA,MAAA+Y,EAAA,CACA+M,cAAAqf,sBAAA5/B,EAAAugB,gBAEA,sBAAAvgB,EAAA,CACA,GAAA7K,MAAAwzB,QAAA3oB,EAAAo7C,gBAAA,CACA5nC,EAAA4nC,eAAA,GACA,UAAAC,KAAAr7C,EAAAo7C,eAAA,CACA,UAAAC,IAAA,UACA7nC,EAAA4nC,eAAApoD,KAAAqoD,EACA,KACA,CACA,UAAA5gD,MAAA,wDACA,CACA,CACA,KACA,CACA,UAAAA,MAAA,wDACA,CACA,CACA,sBAAAuF,EAAA,CACA,GAAA7K,MAAAwzB,QAAA3oB,EAAAs7C,gBAAA,CACA9nC,EAAA8nC,eAAA,GACA,UAAAD,KAAAr7C,EAAAs7C,eAAA,CACA,UAAAD,IAAA,UACA7nC,EAAA8nC,eAAAtoD,KAAAqoD,EACA,KACA,CACA,UAAA5gD,MAAA,wDACA,CACA,CACA,KACA,CACA,UAAAA,MAAA,wDACA,CACA,CACA,kBAAAuF,EAAA,CACA,UAAAA,EAAAu7B,aAAA,UACA,GAAAv7B,EAAAu7B,YACAv7B,EAAAu7B,YAAA,KACA/nB,EAAA+nB,WAAAv7B,EAAAu7B,UACA,KACA,CACA,UAAA9gC,MAAA,oDACA,CACA,CAEA,MAAA8gD,EAAA,CACA,iBACA,aACA,iBACA,iBAEA,UAAAC,KAAAx7C,EAAA,CACA,IAAAu7C,EAAAttC,SAAAutC,GAAA,CACA,UAAA/gD,MAAA,mDAAA+gD,IACA,CACA,CACA,OAAAhoC,CACA,CACA,SAAAioC,8BAAAz7C,EAAAu7B,GACA,IAAApmC,MAAAwzB,QAAA3oB,GAAA,CACA,UAAAvF,MAAA,8BACA,CACA,UAAAkoB,KAAA3iB,EAAA,CACA,MAAA07C,EAAAP,qBAAAx4B,GAGA,UAAA+4B,EAAAngB,aAAA,UACAA,EAAAmgB,EAAAngB,WAAA,CACA,QACA,CACA,GAAApmC,MAAAwzB,QAAA+yB,EAAAJ,gBAAA,CACA,IAAAK,EAAA,MACA,UAAAtmC,KAAAqmC,EAAAJ,eAAA,CACA,GAAAjmC,IAAA+kC,EAAA/kC,WAAA,CACAsmC,EAAA,IACA,CACA,CACA,IAAAA,EAAA,CACA,QACA,CACA,CACA,GAAAxmD,MAAAwzB,QAAA+yB,EAAAN,gBAAA,CACA,IAAAQ,EAAA,MACA,UAAAC,KAAAH,EAAAN,eAAA,CACA,GAAAS,IAAAvB,EAAA,CACAsB,EAAA,IACA,CACA,CACA,IAAAA,EAAA,CACA,QACA,CACA,CACA,OAAAF,EAAAn7B,aACA,CACA,UAAA9lB,MAAA,mCACA,CAUA,SAAA6hC,8BAAAD,EAAAd,GACA,UAAAugB,KAAAzf,EAAA,CACA,GAAAyf,EAAAzoD,OAAA,GAAAyoD,EAAA,GAAA7lB,WAAA,iBAGA,MAAA8lB,EAAAD,EAAA1yC,KAAA,IAAAkY,UAAA,eAAAjuB,QACA,MAAA2oD,EAAA76B,KAAA0e,MAAAkc,GACA,OAAAN,8BAAAO,EAAAzgB,EACA,CACA,CACA,WACA,CACAxpC,EAAAuqC,2D,eC5ZA7nC,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA8mB,mBAAA,EAIA,MAAAA,cACA,WAAAthB,GACAE,KAAAmG,KAAA,KACAnG,KAAAqG,QAAA,KACArG,KAAAiD,SAAA,IACA,CAIA,QAAAuhD,CAAAr+C,GACAnG,KAAAmG,OACA,OAAAnG,IACA,CAIA,WAAAykD,CAAAp+C,GACArG,KAAAqG,UACA,OAAArG,IACA,CAIA,YAAA0kD,CAAAzhD,GACAjD,KAAAiD,WACA,OAAAjD,IACA,CAIA,KAAA8M,GACA,MAAAxH,EAAA,GACA,GAAAtF,KAAAmG,OAAA,MACAb,EAAAa,KAAAnG,KAAAmG,IACA,CACA,GAAAnG,KAAAqG,UAAA,MACAf,EAAAe,QAAArG,KAAAqG,OACA,CACA,GAAArG,KAAAiD,WAAA,MACAqC,EAAArC,SAAAjD,KAAAiD,QACA,CACA,OAAAqC,CACA,EAEAhL,EAAA8mB,2B,eCjDApkB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAs4C,mBAAA,EACA,IAAA+R,GACA,SAAAA,GACAA,IAAA,wBACAA,IAAA,kCACAA,IAAA,uCACA,EAJA,CAIAA,MAAA,KACA,MAAA/R,cACA,WAAA9yC,GACAE,KAAA4kD,UAAAD,EAAAE,QACA7kD,KAAA8kD,iBAAAr8C,OAAAs8C,MAAA,GACA/kD,KAAAglD,gBAAAv8C,OAAAs8C,MAAA,GACA/kD,KAAAilD,kBAAA,EACAjlD,KAAAklD,gBAAA,EACAllD,KAAAmlD,mBAAA,GACAnlD,KAAAolD,qBAAA,CACA,CACA,KAAA3oD,CAAAuY,GACA,IAAAqwC,EAAA,EACA,IAAAC,EACA,MAAAvpC,EAAA,GACA,MAAAspC,EAAArwC,EAAApZ,OAAA,CACA,OAAAoE,KAAA4kD,WACA,KAAAD,EAAAE,QACA7kD,KAAA8kD,iBAAA9vC,EAAArX,MAAA0nD,IAAA,GACAA,GAAA,EACArlD,KAAA4kD,UAAAD,EAAAY,aACAvlD,KAAAglD,gBAAAQ,KAAA,GACAxlD,KAAAilD,kBAAA,EACAjlD,KAAAklD,gBAAA,EACAllD,KAAAolD,qBAAA,EACAplD,KAAAmlD,mBAAA,GACA,MACA,KAAAR,EAAAY,aACAD,EAAA1lD,KAAAF,IAAAsV,EAAApZ,OAAAypD,EAAArlD,KAAAilD,mBACAjwC,EAAAF,KAAA9U,KAAAglD,gBAAA,EAAAhlD,KAAAilD,kBAAAI,IAAAC,GACAtlD,KAAAilD,mBAAAK,EACAD,GAAAC,EAEA,GAAAtlD,KAAAilD,oBAAA,GACAjlD,KAAAklD,gBAAAllD,KAAAglD,gBAAAS,aAAA,GACAzlD,KAAAolD,qBAAAplD,KAAAklD,gBACA,GAAAllD,KAAAolD,qBAAA,GACAplD,KAAA4kD,UAAAD,EAAAe,eACA,KACA,CACA,MAAA9oD,EAAA6L,OAAAvE,OAAA,CAAAlE,KAAA8kD,iBAAA9kD,KAAAglD,iBAAA,GACAhlD,KAAA4kD,UAAAD,EAAAE,QACA9oC,EAAAxgB,KAAAqB,EACA,CACA,CACA,MACA,KAAA+nD,EAAAe,gBACAJ,EAAA1lD,KAAAF,IAAAsV,EAAApZ,OAAAypD,EAAArlD,KAAAolD,sBACAplD,KAAAmlD,mBAAA5pD,KAAAyZ,EAAArX,MAAA0nD,IAAAC,IACAtlD,KAAAolD,sBAAAE,EACAD,GAAAC,EAEA,GAAAtlD,KAAAolD,uBAAA,GAEA,MAAAO,EAAA,CACA3lD,KAAA8kD,iBACA9kD,KAAAglD,iBACA9gD,OAAAlE,KAAAmlD,oBACA,MAAAS,EAAAn9C,OAAAvE,OAAAyhD,EAAA3lD,KAAAklD,gBAAA,GACAllD,KAAA4kD,UAAAD,EAAAE,QACA9oC,EAAAxgB,KAAAqqD,EACA,CACA,MACA,QACA,UAAA5iD,MAAA,yBAEA,CACA,OAAA+Y,CACA,EAEAzhB,EAAAs4C,2B,iBC7EA51C,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA2f,YAAA3f,EAAA4f,mBAAA5f,EAAA6f,iBAAA7f,EAAAmgC,cAAAngC,EAAAm/C,0BAAAn/C,EAAA8f,0BAAA9f,EAAAurD,uBAAAvrD,EAAAykB,4BAAA,EACA,MAAAiX,EAAA57B,EAAA,MACA,SAAA2kB,uBAAAnN,GACA,eAAAA,CACA,CACAtX,EAAAykB,8CACA,SAAA8mC,uBAAAC,EAAAC,GACA,IAAAD,IAAAC,EAAA,CACA,WACA,CACA,IAAAD,IAAAC,EAAA,CACA,YACA,CACA,GAAAhnC,uBAAA+mC,GAAA,CACA,OAAA/mC,uBAAAgnC,IACAD,EAAAj6C,OAAAk6C,EAAAl6C,MACAi6C,EAAAjoC,OAAAkoC,EAAAloC,IACA,KACA,CACA,OAAAkB,uBAAAgnC,IAAAD,EAAAp3C,OAAAq3C,EAAAr3C,IACA,CACA,CACApU,EAAAurD,8CACA,SAAAzrC,0BAAAxI,GACA,GAAAmN,uBAAAnN,GAAA,CACA,OAAAA,EAAA/F,KAAA,IAAA+F,EAAAiM,IACA,KACA,CACA,OAAAjM,EAAAlD,IACA,CACA,CACApU,EAAA8f,oDACA,MAAAyE,EAAA,IACA,SAAA46B,0BAAAuM,EAAAnoC,GACA,MAAAmY,EAAAiwB,MAAAD,GAAA,CACA,OACAn6C,KAAAm6C,EACAnoC,SAAA,MAAAA,SAAA,EAAAA,EAAAgB,EAEA,KACA,CACA,OACAnQ,KAAAs3C,EAEA,CACA,CACA1rD,EAAAm/C,oDACA,SAAAhf,cAAAyrB,EAAAC,GACA,GAAAD,EAAAhtB,UAAAt9B,SAAAuqD,EAAAjtB,UAAAt9B,OAAA,CACA,YACA,CACA,QAAAD,EAAA,EAAAA,EAAAuqD,EAAAhtB,UAAAt9B,OAAAD,IAAA,CACA,IAAAkqD,uBAAAK,EAAAhtB,UAAAv9B,GAAAwqD,EAAAjtB,UAAAv9B,IAAA,CACA,YACA,CACA,CACA,WACA,CACArB,EAAAmgC,4BACA,SAAAtgB,iBAAA8Z,GACA,UAAAA,EAAAiF,UAAAj9B,IAAAme,2BAAAzI,KAAA,SACA,CACArX,EAAA6f,kCACA,SAAAD,mBAAA+Z,EAAAmyB,GACA,UAAAx0C,KAAAqiB,EAAAiF,UAAA,CACA,GAAA2sB,uBAAAj0C,EAAAw0C,GAAA,CACA,WACA,CACA,CACA,YACA,CACA9rD,EAAA4f,sCACA,SAAAmsC,uBAAAH,EAAAC,GACA,GAAAD,EAAAhtB,UAAAt9B,SAAAuqD,EAAAjtB,UAAAt9B,OAAA,CACA,YACA,CACA,UAAAkqD,KAAAI,EAAAhtB,UAAA,CACA,IAAAotB,EAAA,MACA,UAAAP,KAAAI,EAAAjtB,UAAA,CACA,GAAA2sB,uBAAAC,EAAAC,GAAA,CACAO,EAAA,KACA,KACA,CACA,CACA,IAAAA,EAAA,CACA,YACA,CACA,CACA,WACA,CACA,MAAArsC,YACA,WAAAna,GACAE,KAAA/D,IAAA,IAAA6pB,GACA,CACA,QAAA4N,GACA,OAAA1zB,KAAA/D,IAAAy3B,IACA,CACA,uBAAAN,CAAAxhB,GACA,UAAA20C,KAAAvmD,KAAA/D,IAAA,CACA,GAAAie,mBAAAqsC,EAAAppD,IAAAyU,GAAA,CACA,OAAA20C,EAAA3nD,KACA,CACA,CACA,OAAA0F,SACA,CAKA,aAAAqxB,CAAAyP,GACA,MAAAohB,EAAA,GACA,UAAAD,KAAAvmD,KAAA/D,IAAA,CACA,IAAAwqD,EAAA,MACA,UAAAxyB,KAAAmR,EAAA,CACA,GAAAihB,uBAAApyB,EAAAsyB,EAAAppD,KAAA,CACAspD,EAAA,IACA,CACA,CACA,IAAAA,EAAA,CACAD,EAAAjrD,KAAAgrD,EAAA3nD,OACAoB,KAAA/D,IAAAktB,OAAAo9B,EACA,CACA,CACA,OAAAC,CACA,CACA,GAAAzvC,CAAAkd,GACA,UAAAsyB,KAAAvmD,KAAA/D,IAAA,CACA,GAAAoqD,uBAAApyB,EAAAsyB,EAAAppD,KAAA,CACA,OAAAopD,EAAA3nD,KACA,CACA,CACA,OAAA0F,SACA,CACA,GAAA9I,CAAAy4B,EAAA7C,GACA,UAAAm1B,KAAAvmD,KAAA/D,IAAA,CACA,GAAAoqD,uBAAApyB,EAAAsyB,EAAAppD,KAAA,CACAopD,EAAA3nD,MAAAwyB,EACA,MACA,CACA,CACApxB,KAAA/D,IAAAmH,IAAA,CAAAjG,IAAA82B,EAAAr1B,MAAAwyB,GACA,CACA,OAAA6C,GACA,UAAAsyB,KAAAvmD,KAAA/D,IAAA,CACA,GAAAoqD,uBAAApyB,EAAAsyB,EAAAppD,KAAA,CACA6C,KAAA/D,IAAAktB,OAAAo9B,GACA,MACA,CACA,CACA,CACA,GAAAxpD,CAAAk3B,GACA,UAAAsyB,KAAAvmD,KAAA/D,IAAA,CACA,GAAAoqD,uBAAApyB,EAAAsyB,EAAAppD,KAAA,CACA,WACA,CACA,CACA,YACA,CACA,KAAA4iD,GACA//C,KAAA/D,IAAA8jD,OACA,CACA,KAAA58C,GACA,UAAAojD,KAAAvmD,KAAA/D,IAAA,OACAsqD,EAAAppD,GACA,CACA,CACA,OAAAd,GACA,UAAAkqD,KAAAvmD,KAAA/D,IAAA,OACAsqD,EAAA3nD,KACA,CACA,CACA,QAAAs1B,GACA,UAAAqyB,KAAAvmD,KAAA/D,IAAA,MACA,CAAAsqD,EAAAppD,IAAAopD,EAAA3nD,MACA,CACA,EAEAtE,EAAA2f,uB,iBClLAjd,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAosD,yBAAA,EACA,MAAAlrB,EAAAphC,EAAA,MACA,MAAAuoD,EAAAvoD,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA6H,EAAA7H,EAAA,MACA,MAAA21C,EAAA31C,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAAsoC,EAAAtoC,EAAA,KACA,MAAAyiB,EAAA,kBAOA,SAAA8pC,mBAAAC,GACA,UAAAn6C,EAAAo6C,KAAA7pD,OAAAk3B,QAAAyuB,EAAAlmB,UAAAmqB,OAAA,CACA,GAAAC,IAAAD,EAAA,CACA,OAAAn6C,CACA,CACA,CACA,8BAAAm6C,CACA,CACA,MAAAF,oBACA,WAAA5mD,CAAAgnD,EAAAzU,EAAA5tC,EAAAsiD,EAAAzd,GACAtpC,KAAA8mD,cACA9mD,KAAAqyC,mBACAryC,KAAAyE,WACAzE,KAAA+mD,YACA/mD,KAAAspC,SACAtpC,KAAA2yC,QAAA,IAAA5C,EAAA6C,cACA5yC,KAAAgnD,oBAAA,MACAhnD,KAAAinD,cAAA,MACAjnD,KAAAknD,QAAA,MAKAlnD,KAAAmnD,YAAA,MACAnnD,KAAAonD,aAAA,MACApnD,KAAAqnD,qBAAA,GAEArnD,KAAAsnD,iBAAArhD,EAAAG,OAAAy2B,QAEA78B,KAAAi8B,YAAA,KACAj8B,KAAAunD,cAAA,KACAT,EAAA7mC,GAAA,aAAAld,EAAA4E,KACA,IAAA6/C,EAAA,GACA,UAAAC,KAAAzqD,OAAAmG,KAAAJ,GAAA,CACAykD,GAAA,OAAAC,EAAA,KAAA1kD,EAAA0kD,GAAA,IACA,CACAznD,KAAA8a,MAAA,6BAAA0sC,GACA,OAAAzkD,EAAA,YAEA,SACA/C,KAAAsnD,iBAAArhD,EAAAG,OAAA+I,SACA,MACA,SACAnP,KAAAsnD,iBAAArhD,EAAAG,OAAAshD,gBACA,MACA,SACA1nD,KAAAsnD,iBAAArhD,EAAAG,OAAAuhD,kBACA,MACA,SACA3nD,KAAAsnD,iBAAArhD,EAAAG,OAAAguC,cACA,MACA,SACA,SACA,SACA,SACAp0C,KAAAsnD,iBAAArhD,EAAAG,OAAAg8B,YACA,MACA,QACApiC,KAAAsnD,iBAAArhD,EAAAG,OAAAy2B,QAEA,GAAAl1B,EAAA6zB,EAAAiB,UAAAmrB,wBAAA,CACA5nD,KAAA6nD,eAAA9kD,EACA,KACA,CACA,IAAAE,EACA,IACAA,EAAAhB,EAAAiB,SAAA++B,iBAAAl/B,EACA,CACA,MAAAuD,GACAtG,KAAA8nD,QAAA,CACA3hD,KAAAF,EAAAG,OAAAy2B,QACAx2B,QAAAC,EAAA1J,QACAqG,SAAA,IAAAhB,EAAAiB,WAEA,MACA,CACAlD,KAAAyE,SAAAC,kBAAAzB,EACA,KAEA6jD,EAAA7mC,GAAA,YAAAld,IACA/C,KAAA6nD,eAAA9kD,EAAA,IAEA+jD,EAAA7mC,GAAA,QAAAjL,IAGA,GAAAhV,KAAAonD,aAAA,CACA,MACA,CACApnD,KAAA8a,MAAA,uCAAA9F,EAAApZ,QACA,MAAAiC,EAAAmC,KAAA2yC,QAAAl2C,MAAAuY,GACA,UAAApY,KAAAiB,EAAA,CACAmC,KAAA8a,MAAA,4BAAAle,EAAAhB,QACAoE,KAAAqyC,iBAAA2C,qBACAh1C,KAAA+nD,QAAAnrD,EACA,KAEAkqD,EAAA7mC,GAAA,YACAjgB,KAAAmnD,YAAA,KACAnnD,KAAAgoD,mBAAA,IAEAlB,EAAA7mC,GAAA,cAIAplB,QAAAuuB,UAAA,KACA,IAAApoB,EACAhB,KAAA8a,MAAA,kCAAAgsC,EAAAtqB,SAKA,KAAAx7B,EAAAhB,KAAAi8B,eAAA,MAAAj7B,SAAA,SAAAA,EAAAmF,QAAAF,EAAAG,OAAAmN,GAAA,CACA,MACA,CACA,IAAApN,EACA,IAAAE,EAAA,GACA,OAAAygD,EAAAtqB,SACA,KAAAhB,EAAAiB,UAAAolB,iBAIA,GAAA7hD,KAAAi8B,cAAA,MACA,MACA,CACA91B,EAAAF,EAAAG,OAAA+I,SACA9I,EAAA,iCAAAygD,EAAAtqB,UACA,MACA,KAAAhB,EAAAiB,UAAAC,uBACAv2B,EAAAF,EAAAG,OAAAg8B,YACA/7B,EAAA,2BACA,MACA,KAAAm1B,EAAAiB,UAAAojB,eACA15C,EAAAF,EAAAG,OAAAQ,UACAP,EAAA,iBACA,MACA,KAAAm1B,EAAAiB,UAAAwrB,0BACA9hD,EAAAF,EAAAG,OAAAo6B,mBACAn6B,EAAA,+CACA,MACA,KAAAm1B,EAAAiB,UAAAyrB,4BACA/hD,EAAAF,EAAAG,OAAAuhD,kBACAthD,EAAA,6BACA,MACA,KAAAm1B,EAAAiB,UAAA0rB,uBACAhiD,EAAAF,EAAAG,OAAA+I,SACA,GAAAnP,KAAAunD,gBAAA,MAMAlhD,EAAA,iCAAAygD,EAAAtqB,iCACA,KACA,CACA,GAAAx8B,KAAAunD,cAAAphD,OAAA,cACAnG,KAAAunD,cAAAphD,OAAA,aACAA,EAAAF,EAAAG,OAAAg8B,YACA/7B,EAAArG,KAAAunD,cAAA3qD,OACA,KACA,CAKAyJ,EAAA,iCAAAygD,EAAAtqB,+CAAAx8B,KAAAunD,cAAA3qD,SACA,CACA,CACA,MACA,QACAuJ,EAAAF,EAAAG,OAAA+I,SACA9I,EAAA,iCAAAygD,EAAAtqB,UAMAx8B,KAAA8nD,QAAA,CACA3hD,OACAE,UACApD,SAAA,IAAAhB,EAAAiB,SACAs5B,QAAAsqB,EAAAtqB,SACA,GACA,IAEAsqB,EAAA7mC,GAAA,SAAAnd,IAQA,GAAAA,EAAAqD,OAAA,0BACAnG,KAAA8a,MAAA,6BACAhY,EAAAlG,QACA,SACAkG,EAAAqD,KACA,UACAwgD,mBAAA7jD,EAAA8jD,OACA,YACA9jD,EAAAslD,SACApoD,KAAAunD,cAAAzkD,CACA,CACA9C,KAAAqyC,iBAAAY,YAAA,SAEA,CACA,YAAAoV,GACAroD,KAAA8nD,QAAA,CACA3hD,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,qBACApD,SAAA,IAAAhB,EAAAiB,UAEA,CACA,YAAA64B,GAEA,IAAA/7B,KAAAonD,aAAA,CACApnD,KAAAonD,aAAA,KACApnD,KAAA8a,MAAA,2BACA9a,KAAAi8B,YAAA91B,KACA,aACAnG,KAAAi8B,YAAA51B,QACA,KACArG,KAAAqyC,iBAAAxmB,UAAA7rB,KAAAi8B,aAOAphC,QAAAuuB,UAAA,KACAppB,KAAAyE,SAAAW,gBAAApF,KAAAi8B,YAAA,IAMAj8B,KAAA8mD,YAAA/S,QACA,CACA,CACA,KAAAj5B,CAAAgC,GACA3I,EAAA2G,MAAA4nB,EAAAjsB,aAAA1b,MAAA8hB,EAAA,IAAA7c,KAAAspC,OAAA,KAAAxsB,EACA,CAMA,OAAAgrC,CAAAxiD,GAGA,GAAAtF,KAAAi8B,cAAA,MAAAj8B,KAAAi8B,YAAA91B,OAAAF,EAAAG,OAAAmN,GAAA,CACAvT,KAAAi8B,YAAA32B,EACAtF,KAAAgoD,mBACA,CACAhoD,KAAAsoD,oBACA,CACA,iBAAAN,GACA,GAAAhoD,KAAAi8B,cAAA,MAIA,GAAAj8B,KAAAi8B,YAAA91B,OAAAF,EAAAG,OAAAmN,IACAvT,KAAAmnD,aACAnnD,KAAAqnD,qBAAAzrD,SAAA,IACAoE,KAAAgnD,sBACAhnD,KAAAinD,cAAA,CACAjnD,KAAA+7B,cACA,CACA,CACA,CACA,IAAAxgC,CAAAqB,GACAoD,KAAA8a,MAAA,wCACAle,aAAA6L,OAAA7L,EAAAhB,OAAA,OACAoE,KAAAknD,QAAA,MACAlnD,KAAAinD,cAAA,KACApsD,QAAAuuB,UAAA,KACAppB,KAAAinD,cAAA,MAKA,GAAAjnD,KAAAonD,aAAA,CACA,MACA,CACApnD,KAAAyE,SAAAQ,iBAAArI,GACAoD,KAAAgoD,mBAAA,GAEA,CACA,OAAAD,CAAAhT,GACA,GAAA/0C,KAAAknD,QAAA,CACAlnD,KAAA8mD,YAAA1T,QACApzC,KAAAzE,KAAAw5C,EACA,KACA,CACA/0C,KAAA8a,MAAA,+CAAAi6B,EAAAn5C,QACAoE,KAAAqnD,qBAAA9rD,KAAAw5C,EACA,CACA,CACA,cAAA8S,CAAA9kD,GACA/C,KAAAqyC,iBAAAY,YAAA,MACA,IAAAuU,EAAA,GACA,UAAAC,KAAAzqD,OAAAmG,KAAAJ,GAAA,CACAykD,GAAA,OAAAC,EAAA,KAAA1kD,EAAA0kD,GAAA,IACA,CACAznD,KAAA8a,MAAA,8BAAA0sC,GACA,IAAAvkD,EACA,IACAA,EAAAhB,EAAAiB,SAAA++B,iBAAAl/B,EACA,CACA,MAAApI,GACAsI,EAAA,IAAAhB,EAAAiB,QACA,CACA,MAAAqlD,EAAAtlD,EAAAs+B,SACA,IAAAp7B,EAAAnG,KAAAsnD,iBACA,GAAAnhD,IAAAF,EAAAG,OAAAy2B,gBACA0rB,EAAA,2BACA,MAAAn1C,EAAAxL,OAAA2gD,EAAA,gBACA,GAAAn1C,KAAAnN,EAAAG,OAAA,CACAD,EAAAiN,EACApT,KAAA8a,MAAA,wBAAA1H,EAAA,eACA,CACAnQ,EAAA2T,OAAA,cACA,CACA,IAAAvQ,EAAA,GACA,UAAAkiD,EAAA,4BACA,IACAliD,EAAAmiD,UAAAD,EAAA,gBACA,CACA,MAAA5tD,GACA0L,EAAAkiD,EAAA,eACA,CACAtlD,EAAA2T,OAAA,gBACA5W,KAAA8a,MAAA,mCAAAzU,EAAA,gBACA,CACA,MAAAf,EAAA,CAAAa,OAAAE,UAAApD,YAEAjD,KAAA8nD,QAAAxiD,EACA,CACA,kBAAAgjD,GACA,IAAAtnD,EAGA,IAAAhB,KAAA8mD,YAAAjT,UAAA,CAIA,IAAA1tC,EACA,KAAAnF,EAAAhB,KAAAi8B,eAAA,MAAAj7B,SAAA,SAAAA,EAAAmF,QAAAF,EAAAG,OAAAmN,GAAA,CACApN,EAAAq1B,EAAAiB,UAAAolB,gBACA,KACA,CACA17C,EAAAq1B,EAAAiB,UAAAojB,cACA,CACA7/C,KAAA8a,MAAA,gCAAA3U,GACAnG,KAAA8mD,YAAA37C,MAAAhF,EACA,CACA,CACA,gBAAAQ,CAAArB,EAAAe,GACArG,KAAA8a,MAAA,0BAAAxV,EAAA,cAAAe,EAAA,KACArG,KAAA8nD,QAAA,CAAA3hD,KAAAb,EAAAe,UAAApD,SAAA,IAAAhB,EAAAiB,UACA,CACA,SAAAulD,GACA,OAAAzoD,KAAAi8B,WACA,CACA,OAAAp1B,GACA,OAAA7G,KAAA+mD,UAAA2B,aACA,CACA,aAAA9rB,GACA,OAAA58B,KAAAspC,MACA,CACA,SAAAniC,GAGA,GAAAnH,KAAAi8B,cAAA,MAAAj8B,KAAAi8B,YAAA91B,OAAAF,EAAAG,OAAAmN,GAAA,CACAvT,KAAAmnD,YAAA,KACAnnD,KAAAgoD,oBACA,MACA,CACAhoD,KAAAknD,QAAA,KACA,GAAAlnD,KAAAqnD,qBAAAzrD,OAAA,GACA,MAAA+sD,EAAA3oD,KAAAqnD,qBAAAxS,QACA70C,KAAAzE,KAAAotD,GACA,MACA,CAGA3oD,KAAA8mD,YAAA/S,QACA,CACA,sBAAAjsC,CAAAJ,EAAA9K,GACAoD,KAAA8a,MAAA,yCAAAle,EAAAhB,QACA,MAAA6L,GAAAnB,IAIAzL,QAAAuuB,UAAA,KACA,IAAApoB,EACA,IAAAmF,EAAAF,EAAAG,OAAAg8B,YACA,IAAA97B,IAAA,MAAAA,SAAA,SAAAA,EAAAH,QACA,8BACAA,EAAAF,EAAAG,OAAA+I,QACA,CACA,GAAA7I,EAAA,CACAtG,KAAA2G,iBAAAR,EAAA,gBAAAG,EAAA1J,UACA,EACAoE,EAAA0G,EAAA3H,YAAA,MAAAiB,SAAA,SAAAA,EAAA5D,KAAAsK,EAAA,GACA,EAEA1H,KAAA8a,MAAA,gCAAAle,EAAAhB,QACAoE,KAAAqyC,iBAAA8C,iBACA,IACAn1C,KAAA8mD,YAAArqD,MAAAG,EAAA6K,GACA,CACA,MAAAnB,GACAtG,KAAA8nD,QAAA,CACA3hD,KAAAF,EAAAG,OAAAg8B,YACA/7B,QAAA,2BAAAC,EAAA1J,UACAqG,SAAA,IAAAhB,EAAAiB,UAEA,CACA,CACA,SAAA8E,GACAhI,KAAA8a,MAAA,gBACA9a,KAAA8a,MAAA,kCACA9a,KAAA8mD,YAAA5mC,KACA,EAEA5lB,EAAAosD,uC,eC1bA1pD,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAqf,2BAAA,EACA,MAAAA,sBACA,WAAA7Z,CAAAklB,GACAhlB,KAAAglB,QACAhlB,KAAA4oD,QAAA,KACA5oD,KAAA6oD,gBAAA,IAAA/iC,IACAd,EAAA6T,uBAAAiwB,IAGA,GAAA9oD,KAAA4oD,QAAA,CACA5oD,KAAA+oD,uBACA,IAEA,CACA,qBAAAA,GACA,UAAAtkD,KAAAzE,KAAA6oD,gBAAA,CACApkD,EAAAzE,KAAAi4B,YACA,CACA,CACA,oBAAA5sB,GACA,OAAArL,KAAAglB,MAAA3Z,sBACA,CACA,4BAAA0Z,CAAAtgB,GACAzE,KAAAglB,MAAAD,6BAAAtgB,EACA,CACA,+BAAAwgB,CAAAxgB,GACAzE,KAAAglB,MAAAC,gCAAAxgB,EACA,CACA,eAAA2zB,GACAp4B,KAAAglB,MAAAoT,iBACA,CACA,UAAAF,GACA,OAAAl4B,KAAAglB,MAAAkT,YACA,CACA,iBAAApT,CAAA8F,GACA5qB,KAAAglB,MAAAF,kBAAA8F,EACA,CACA,GAAA9oB,GACA9B,KAAAglB,MAAAljB,KACA,CACA,KAAAV,GACApB,KAAAglB,MAAA5jB,OACA,CACA,cAAAsK,GACA,OAAA1L,KAAAglB,MAAAtZ,gBACA,CACA,SAAAusB,GACA,OAAAj4B,KAAA4oD,SAAA5oD,KAAAglB,MAAAiT,WACA,CACA,qBAAAY,CAAAp0B,GACAzE,KAAA6oD,gBAAAzlD,IAAAqB,EACA,CACA,wBAAA6zB,CAAA7zB,GACAzE,KAAA6oD,gBAAA1/B,OAAA1kB,EACA,CACA,UAAA8sB,CAAAq3B,GACA,GAAAA,IAAA5oD,KAAA4oD,QAAA,CACA5oD,KAAA4oD,UAGA,GAAA5oD,KAAAglB,MAAAiT,YAAA,CACAj4B,KAAA+oD,uBACA,CACA,CACA,CACA,iBAAAxsB,GACA,OAAAv8B,KAAAglB,MAAAuX,mBACA,CACA,oBAAAhE,CAAAt0B,GACA,OAAAjE,KAAAu8B,sBAAAt4B,EAAAs4B,mBACA,EAEAjiC,EAAAqf,2C,iBCzEA3c,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAktB,kBAAAltB,EAAA0uD,oBAAA,EACA,MAAAC,EAAA7uD,EAAA,MACA,MAAA8uD,EAAA9uD,EAAA,MACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAA+uD,EAAA/uD,EAAA,MAMA,MAAAgvD,EAAA,IACA,MAAAJ,eAKA,WAAAlpD,GACAE,KAAAqpD,KAAArsD,OAAAzC,OAAA,MAIAyF,KAAAspD,aAAA,IACA,CAKA,sBAAAz8B,GACA,IAAA08B,EAAA,KAKA,UAAAC,KAAAxpD,KAAAqpD,KAAA,CACA,MAAAI,EAAAzpD,KAAAqpD,KAAAG,GACA,MAAAE,EAAAD,EAAAp5C,QAAAzR,MAAA+lB,WAAAglC,kBACA,GAAAD,EAAA9tD,OAAA,GACA2tD,EAAA,KACA,CAIAvpD,KAAAqpD,KAAAG,GAAAE,CACA,CAIA,GAAAH,GAAAvpD,KAAAspD,eAAA,MACA38B,cAAA3sB,KAAAspD,cACAtpD,KAAAspD,aAAA,IACA,CACA,CAIA,iBAAAM,GACA,IAAA5oD,EAAAC,EACA,GAAAjB,KAAAspD,eAAA,MACAtpD,KAAAspD,aAAAxiC,aAAA,KACA9mB,KAAA6sB,wBAAA,GACAu8B,IAGAnoD,GAAAD,EAAAhB,KAAAspD,cAAAloD,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,CASA,qBAAAgnB,CAAA6hC,EAAAC,EAAAC,EAAA5/C,GACAnK,KAAA4pD,oBACA,MAAAJ,GAAA,EAAAtuC,EAAAP,aAAAkvC,GACA,GAAAL,KAAAxpD,KAAAqpD,KAAA,CACA,MAAAI,EAAAzpD,KAAAqpD,KAAAG,GACA,UAAAQ,KAAAP,EAAA,CACA,MAAAluC,EAAAsqC,wBAAAiE,EAAAE,EAAAliC,qBACA,EAAAmhC,EAAA5+C,qBAAA0/C,EAAAC,EAAAD,mBACA5/C,EAAAhG,QAAA6lD,EAAA7/C,oBAAA,CACA,OAAA6/C,EAAArlC,UACA,CACA,CACA,CAEA,MAAAA,EAAA,IAAAukC,EAAAe,WAAAJ,EAAAC,EAAAC,EAAA5/C,EAAA,IAAAg/C,EAAAe,yBAAAL,IACA,KAAAL,KAAAxpD,KAAAqpD,MAAA,CACArpD,KAAAqpD,KAAAG,GAAA,EACA,CACAxpD,KAAAqpD,KAAAG,GAAAjuD,KAAA,CACAusB,kBAAAgiC,EACAC,mBACA5/C,qBACAwa,eAEAA,EAAA7iB,MACA,OAAA6iB,CACA,EAEArqB,EAAA0uD,8BACA,MAAAmB,EAAA,IAAAnB,eAKA,SAAAxhC,kBAAA4iC,GACA,GAAAA,EAAA,CACA,OAAAD,CACA,KACA,CACA,WAAAnB,cACA,CACA,CACA1uD,EAAAktB,mC,iBCtHAxqB,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA2vD,gBAAA,EACA,MAAAj5C,EAAA5W,EAAA,KACA,MAAAghB,EAAAhhB,EAAA,MACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAAkoB,EAAAloB,EAAA,MACA,MAAAyiB,EAAA,aAIA,MAAAy6B,IAAA,OACA,MAAA2S,WAWA,WAAAnqD,CAAA0pD,EAAA1hC,EAAAhrB,EAAAkO,EAAAq/C,GACA,IAAArpD,EACAhB,KAAAwpD,gBACAxpD,KAAA8nB,oBACA9nB,KAAAlD,UACAkD,KAAAgL,cACAhL,KAAAqqD,YAKArqD,KAAAqlB,kBAAArU,EAAAqB,kBAAAiT,KAIAtlB,KAAA+mD,UAAA,KAKA/mD,KAAAsqD,mBAAA,MAMAtqD,KAAAuqD,eAAA,IAAAzkC,IAIA9lB,KAAAwqD,SAAA,EAEAxqD,KAAAimB,gBAAA,KACAjmB,KAAAkmB,YAAA,IAAA5D,EAAA6D,oBACAnmB,KAAAomB,gBAAA,IAAA9D,EAAA+D,wBAEArmB,KAAA+6C,cAAA,IAAAz4B,EAAA6D,oBACA,MAAA6d,EAAA,CACA/jC,aAAAnD,EAAA,qCACAqD,SAAArD,EAAA,kCAEAkD,KAAAuoC,eAAA,IAAAntB,EAAAhc,gBAAA,KACAY,KAAAyqD,oBAAA,GACAzmB,GACAhkC,KAAAuoC,eAAAnnC,QACApB,KAAA0qD,yBAAA,EAAAnvC,EAAAnB,2BAAA0N,GACA9nB,KAAA6kB,eAAA7jB,EAAAlE,EAAA,mCAAAkE,SAAA,EAAAA,GAAA,EACA,GAAAlE,EAAA,6BACAkD,KAAAimB,gBAAA,KACA,CACAjmB,KAAA+mB,cAAA,IAAAzE,EAAA0E,cACAhnB,KAAAinB,aAAA,EAAA3E,EAAAqoC,4BAAA3qD,KAAA0qD,yBAAA,IAAA1qD,KAAAmnB,mBAAAnnB,KAAAimB,iBACA,GAAAjmB,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,+BACA,CACApnB,KAAA8a,MAAA,uCACA4O,KAAAC,UAAA7sB,EAAAwH,UAAA,GACA,CACA,eAAA6iB,GACA,OACA4C,MAAA/pB,KAAAqlB,kBACAvK,MAAA9a,KAAA+mB,cACAb,YAAAlmB,KAAAkmB,YACA8D,SAAAhqB,KAAAomB,gBAAA6D,gBACAlf,OAAA/K,KAAA0qD,wBAEA,CACA,KAAA5vC,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAA,IACA7c,KAAAinB,YAAA2C,GACA,KACA5pB,KAAA0qD,wBACA,IACA5tC,EACA,CACA,QAAA8tC,CAAA9tC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA,0BACAiF,KAAAinB,YAAA2C,GACA,KACA5pB,KAAA0qD,wBACA,IACA5tC,EACA,CACA,kBAAA2tC,GACA,GAAAzqD,KAAAsqD,mBAAA,CACAtqD,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAsY,mBAAA3Z,EAAAqB,kBAAAgb,WACA,KACA,CACArtB,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAsY,mBAAA3Z,EAAAqB,kBAAAiT,KACA,CACA,CAIA,YAAAwlC,GACA9qD,KAAAuoC,eAAAlnC,SACA,CACA,WAAA0pD,GACA/qD,KAAAuoC,eAAA/mC,OACAxB,KAAAuoC,eAAA9mC,OACA,CACA,uBAAAupD,GACA,IAAAluD,EAAAkD,KAAAlD,QACA,GAAAA,EAAA,2BACA,MAAAmuD,EAAArrD,KAAAF,IAAAM,KAAA6kB,cAAAyyB,GACAx6C,EAAAE,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAA1J,GAAA,0BAAAmuD,GACA,CACAjrD,KAAAqqD,UACAtqC,QAAA/f,KAAA8nB,kBAAA9nB,KAAAgL,YAAAlO,GACAX,MAAA4qD,IACA,GAAA/mD,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAgb,YAAArc,EAAAqB,kBAAAC,OAAA,CACAtS,KAAA+mD,YACA,GAAA/mD,KAAAimB,gBAAA,CACAjmB,KAAAomB,gBAAAqC,SAAAs+B,EAAAr7C,iBACA,CACAq7C,EAAAmE,uBAAAC,IACAnrD,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAC,OAAAtB,EAAAqB,kBAAAiT,MACA,GAAA6lC,GAAAnrD,KAAA6kB,cAAA,GACA7kB,KAAA6kB,eAAA,EACA1Q,EAAAnW,IAAAiI,EAAAwQ,aAAAC,MAAA,oBAAAwE,EAAAP,aAAA3a,KAAAwpD,qBAAAxpD,KAAA0qD,mGAAA1qD,KAAA6kB,mBACA,IAEA,KACA,CAGAkiC,EAAAzO,UACA,KACAhyC,IACAtG,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAgb,YAAArc,EAAAqB,kBAAAsY,kBAAA,GAAArkB,IAAA,GAEA,CAQA,iBAAAukD,CAAAO,EAAAh5C,EAAAglB,GACA,IAAAp2B,EAAAC,EACA,GAAAmqD,EAAA9vD,QAAA0E,KAAAqlB,sBAAA,GACA,YACA,CACArlB,KAAA8a,MAAA9J,EAAAqB,kBAAArS,KAAAqlB,mBACA,OACArU,EAAAqB,kBAAAD,IACA,GAAApS,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,0CAAApW,EAAAqB,kBAAAD,GACA,CACA,MAAAwS,EAAA5kB,KAAAqlB,kBACArlB,KAAAqlB,kBAAAjT,EACA,OAAAA,GACA,KAAApB,EAAAqB,kBAAAC,MACAtS,KAAA+qD,cACA,MACA,KAAA/5C,EAAAqB,kBAAAgb,WACArtB,KAAA8qD,eACA9qD,KAAAgrD,0BACAhrD,KAAAsqD,mBAAA,MACA,MACA,KAAAt5C,EAAAqB,kBAAAsY,kBACA,GAAA3qB,KAAAimB,iBAAAjmB,KAAA+mD,UAAA,CACA/mD,KAAAomB,gBAAAuC,WAAA3oB,KAAA+mD,UAAAr7C,iBACA,EACA1K,EAAAhB,KAAA+mD,aAAA,MAAA/lD,SAAA,SAAAA,EAAAs3C,WACAt4C,KAAA+mD,UAAA,KAIA,IAAA/mD,KAAAuoC,eAAA1mC,YAAA,CACAhH,QAAAuuB,UAAA,KACAppB,KAAAyqD,oBAAA,GAEA,CACA,MACA,KAAAz5C,EAAAqB,kBAAAiT,KACA,GAAAtlB,KAAAimB,iBAAAjmB,KAAA+mD,UAAA,CACA/mD,KAAAomB,gBAAAuC,WAAA3oB,KAAA+mD,UAAAr7C,iBACA,EACAzK,EAAAjB,KAAA+mD,aAAA,MAAA9lD,SAAA,SAAAA,EAAAq3C,WACAt4C,KAAA+mD,UAAA,KACA,MACA,QACA,UAAA/jD,MAAA,4CAAAoP,KAEA,UAAA3N,KAAAzE,KAAAuqD,eAAA,CACA9lD,EAAAzE,KAAA4kB,EAAAxS,EAAApS,KAAA6kB,cAAAuS,EACA,CACA,WACA,CACA,GAAAt1B,GACA9B,KAAA4qD,SAAA,YAAA5qD,KAAAwqD,SAAA,QAAAxqD,KAAAwqD,SAAA,IACAxqD,KAAAwqD,UAAA,CACA,CACA,KAAAppD,GACApB,KAAA4qD,SAAA,YAAA5qD,KAAAwqD,SAAA,QAAAxqD,KAAAwqD,SAAA,IACAxqD,KAAAwqD,UAAA,EACA,GAAAxqD,KAAAwqD,WAAA,GACA,GAAAxqD,KAAAimB,gBAAA,CACAjmB,KAAA+mB,cAAAK,SAAA,0BACA,CACA,GAAApnB,KAAAimB,gBAAA,EACA,EAAA3D,EAAAsK,uBAAA5sB,KAAAinB,YACA,CACApsB,QAAAuuB,UAAA,KACAppB,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAgb,WAAArc,EAAAqB,kBAAAC,OAAAtB,EAAAqB,kBAAAiT,KAAA,GAEA,CACA,CACA,aAAAqkC,GACA,GAAA3pD,KAAAwqD,WAAA,GACAxqD,KAAAoB,QACA,WACA,CACA,YACA,CACA,UAAAuK,CAAA1I,EAAA4I,EAAAD,EAAAnH,GACA,IAAAzE,KAAA+mD,UAAA,CACA,UAAA/jD,MAAA,2CACA,CACA,IAAAqoD,EACA,GAAArrD,KAAAimB,gBAAA,CACAjmB,KAAAkmB,YAAA0F,iBACA5rB,KAAA+6C,cAAAnvB,iBACAy/B,EAAA,CACAx/B,UAAAvmB,IACA,GAAAA,EAAAa,OAAAF,EAAAG,OAAAmN,GAAA,CACAvT,KAAAkmB,YAAA4F,kBACA,KACA,CACA9rB,KAAAkmB,YAAA6F,eACA,GAGA,KACA,CACAs/B,EAAA,EACA,CACA,OAAArrD,KAAA+mD,UAAAp7C,WAAA1I,EAAA4I,EAAAD,EAAAnH,EAAA4mD,EACA,CAOA,eAAAjzB,GACAv9B,QAAAuuB,UAAA,KAKA,IAAAppB,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAiT,MAAAtU,EAAAqB,kBAAAgb,YAAA,CACA,GAAArtB,KAAAqlB,oBAAArU,EAAAqB,kBAAAsY,kBAAA,CACA3qB,KAAAsqD,mBAAA,IACA,CACA,IAEA,CAIA,oBAAAj/C,GACA,OAAArL,KAAAqlB,iBACA,CAMA,4BAAAN,CAAAtgB,GACAzE,KAAAuqD,eAAAnnD,IAAAqB,EACA,CAMA,+BAAAwgB,CAAAxgB,GACAzE,KAAAuqD,eAAAphC,OAAA1kB,EACA,CAIA,YAAA4pB,GACAxzB,QAAAuuB,UAAA,KACAppB,KAAAuoC,eAAA9mC,QACAzB,KAAA6qD,kBAAA,CAAA75C,EAAAqB,kBAAAsY,mBAAA3Z,EAAAqB,kBAAAgb,WAAA,GAEA,CACA,UAAA6K,GACA,OAAAl4B,KAAA0qD,uBACA,CACA,cAAAh/C,GACA,OAAA1L,KAAAinB,WACA,CACA,SAAAgR,GACA,WACA,CACA,qBAAAY,CAAAp0B,GAEA,CACA,wBAAA6zB,CAAA7zB,GAEA,CACA,iBAAA83B,GACA,OAAAv8B,IACA,CACA,oBAAAu4B,CAAAt0B,GACA,OAAAA,EAAAs4B,sBAAAv8B,IACA,CACA,iBAAA8kB,CAAA8F,GACA,GAAAA,EAAA5qB,KAAA6kB,cAAA,CACA7kB,KAAA6kB,cAAA+F,CACA,CACA,EAEAtwB,EAAA2vD,qB,iBCvVAjtD,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA+O,oBAAA/O,EAAAkP,mBAAA,EACA,MAAA8hD,EAAAlxD,EAAA,MACAE,EAAAkP,cAAA3O,QAAAC,IAAAywD,uBACA,MAAAC,EAAA3wD,QAAAC,IAAA2wD,iCACA,IAAAC,EAAA,KACA,SAAAriD,sBACA,GAAAmiD,EAAA,CACA,GAAAE,IAAA,MACAA,EAAAJ,EAAAK,aAAAH,EACA,CACA,OAAAE,CACA,CACA,WACA,CACApxD,EAAA+O,uC,iBCfArM,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAA4vD,8BAAA,EACA,MAAA1uB,EAAAphC,EAAA,MACA,MAAA+N,EAAA/N,EAAA,MACA,MAAAkoB,EAAAloB,EAAA,MACA,MAAA6L,EAAA7L,EAAA,KACA,MAAAspB,EAAAtpB,EAAA,KACA,MAAA+Z,EAAA/Z,EAAA,MACA,MAAA6gB,EAAA7gB,EAAA,MACA,MAAAmhB,EAAAnhB,EAAA,MACA,MAAA8gB,EAAA9gB,EAAA,MACA,MAAAwxD,EAAAxxD,EAAA,MACA,MAAAyxD,EAAAzxD,EAAA,MACA,MAAA0pB,EAAA1pB,EAAA,KACA,MAAAyiB,EAAA,YACA,MAAAivC,EAAA,qBACA,MAAA1uB,EAAAhjC,EAAA,SACA,MAAA2xD,yBAAA7Z,4BAAA8Z,sBAAAxU,oBAAA9D,kBAAAuY,2BAAAzwB,EAAAiB,UACA,MAAA8a,EAAA,IACA,MAAA2U,EAAAzjD,OAAAwW,KAAA,0BACA,MAAAktC,eACA,WAAArsD,CAAA21C,EAAA3tB,EAAAhrB,EAKA+9C,GACA76C,KAAAy1C,UACAz1C,KAAA66C,aAIA76C,KAAA64C,iBAAA,EAIA74C,KAAA84C,mBAAAvB,EAIAv3C,KAAAosD,iBAAA,KAKApsD,KAAAqsD,yBAAA,MAIArsD,KAAAssD,mBAAA,KAIAtsD,KAAAusD,sBAAA,MACAvsD,KAAAwsD,YAAA,IAAA1mC,IACA9lB,KAAAysD,oBAAA,GACAzsD,KAAA0sD,kBAAA,MACA1sD,KAAAimB,gBAAA,KACAjmB,KAAA+6C,cAAA,IAAAz4B,EAAA6D,oBACAnmB,KAAA2sD,eAAA,EACA3sD,KAAAq7C,aAAA,EACAr7C,KAAAs7C,iBAAA,EACAt7C,KAAA27C,yBAAA,KACA37C,KAAA47C,6BAAA,KAGA57C,KAAA0qD,yBAAA,EAAAnvC,EAAAnB,2BAAA0N,GACA,GAAAhrB,EAAA,6BACAkD,KAAAimB,gBAAA,KACA,CACAjmB,KAAAinB,aAAA,EAAA3E,EAAAq6B,wBAAA38C,KAAA0qD,yBAAA,IAAA1qD,KAAAmnB,mBAAAnnB,KAAAimB,iBAEAjmB,KAAA4sD,UAAA,CACA9vD,EAAA,2BACA,gBAAAsgC,IACAtgC,EAAA,8BAEAuT,QAAA1V,OACAgX,KAAA,KACA,8BAAA7U,EAAA,CACAkD,KAAA64C,gBAAA/7C,EAAA,yBACA,CACA,iCAAAA,EAAA,CACAkD,KAAA84C,mBAAAh8C,EAAA,4BACA,CACA,2CAAAA,EAAA,CACAkD,KAAAusD,sBACAzvD,EAAA,0CACA,KACA,CACAkD,KAAAusD,sBAAA,KACA,CACA9W,EAAAp2B,KAAA,cACArf,KAAA8a,MAAA,kBACA9a,KAAA6sD,qBACA7sD,KAAA8sD,kBAAA,IAEArX,EAAAp2B,KAAA,WAAA0tC,EAAAC,EAAAC,KACA,IAAA9B,EAAA,MAGA,GAAA4B,IAAAvxB,EAAAiB,UAAAwrB,2BACAgF,GACAA,EAAA3d,OAAA4c,GAAA,CACAf,EAAA,IACA,CACAnrD,KAAA8a,MAAA,yCAAAiyC,EAAA,cAAAE,IAAA,MAAAA,SAAA,SAAAA,EAAA/tC,aACAlf,KAAAktD,wBAAA/B,EAAA,IAEA1V,EAAAp2B,KAAA,SAAA/Y,IAGAtG,KAAA8a,MAAA,gCAAAxU,EAAA1J,QAAA,IAEA,GAAAuX,EAAA8oB,gBAAApgB,GAAA,CACA44B,EAAAx1B,GAAA,kBAAAi5B,IACAl5C,KAAA8a,MAAA,yBACA9a,KAAAy1C,YAAA,6BACA,KACA/rB,KAAAC,UAAAuvB,GAAA,IAEAzD,EAAAx1B,GAAA,iBAAAi5B,IACAl5C,KAAA8a,MAAA,yCACA9a,KAAAy1C,YAAA,6BACA,KACA/rB,KAAAC,UAAAuvB,GAAA,GAEA,CAGA,GAAAl5C,KAAAusD,sBAAA,CACAvsD,KAAAmtD,8BACA,CACA,CACA,eAAAhmC,GACA,IAAAnmB,EAAAC,EAAAyM,EACA,MAAA8rC,EAAAx5C,KAAAy1C,QAAAl2B,OACA,MAAAm2B,EAAA8D,EAAA9D,eACA,EAAAn6B,EAAAk+B,2BAAAD,EAAA9D,cAAA8D,EAAA7D,YACA,KACA,MAAA+D,EAAAF,EAAAE,cACA,EAAAn+B,EAAAk+B,2BAAAD,EAAAE,aAAAF,EAAAG,WACA,KACA,IAAAC,EACA,GAAA55C,KAAAy1C,QAAAoE,UAAA,CACA,MAAAC,EAAAN,EACA,MAAAO,EAAAD,EAAAE,YACA,MAAAC,EAAAH,EAAAI,iBACA,MAAAC,EAAAL,EAAAM,qBACAR,EAAA,CACAS,yBAAAr5C,EAAA+4C,EAAAO,gBAAA,MAAAt5C,SAAA,EAAAA,EAAA,KACAu5C,qBAAAR,EAAAO,aAAA,KAAAP,EAAAttC,KACA+tC,iBAAAP,GAAA,QAAAA,IAAAQ,IAAA,KACAC,kBAAAP,GAAA,QAAAA,EACAA,EAAAM,IACA,KAEA,KACA,CACAb,EAAA,IACA,CACA,MAAAe,EAAA,CACAjF,gBACAgE,eACAkB,SAAAhB,EACAiB,WAAA76C,KAAA66C,WACAC,eAAA96C,KAAA+6C,cAAAC,aACAC,iBAAAj7C,KAAA+6C,cAAAG,eACAC,cAAAn7C,KAAA+6C,cAAAK,YACAC,aAAAr7C,KAAAq7C,aACAC,iBAAAt7C,KAAAs7C,iBACAC,eAAAv7C,KAAA2sD,eACAnR,gCAAAx7C,KAAA+6C,cAAAW,yBACAD,iCAAA,KACAE,yBAAA37C,KAAA27C,yBACAC,6BAAA57C,KAAA47C,6BACAC,wBAAA56C,EAAAjB,KAAAy1C,QAAA1rB,MAAA+xB,mBAAA,MAAA76C,SAAA,EAAAA,EAAA,KACA86C,yBAAAruC,EAAA1N,KAAAy1C,QAAA1rB,MAAAiyB,oBAAA,MAAAtuC,SAAA,EAAAA,EAAA,MAEA,OAAAitC,CACA,CACA,KAAA7/B,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,EAAA,IACA7c,KAAAinB,YAAA2C,GACA,KACA5pB,KAAA0qD,wBACA,IACA5tC,EACA,CACA,cAAAswC,CAAAtwC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA,gBACAiF,KAAAinB,YAAA2C,GACA,KACA5pB,KAAA0qD,wBACA,IACA5tC,EACA,CACA,gBAAAuwC,CAAAvwC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA+wD,EAAA,IACA9rD,KAAAinB,YAAA2C,GACA,KACA5pB,KAAA0qD,wBACA,IACA5tC,EACA,CACA,cAAAwwC,CAAAxwC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA,0BACAiF,KAAAinB,YAAA2C,GACA,KACA5pB,KAAA0qD,wBACA,IACA5tC,EACA,CAUA,uBAAAowC,CAAA/B,GACA,GAAAnrD,KAAA0sD,kBAAA,CACA,MACA,CACA1sD,KAAA0sD,kBAAA,KACA1sD,KAAAysD,oBAAAptB,SAAA56B,KAAA0mD,IACA,CAIA,gBAAA2B,GACA9sD,KAAAktD,wBAAA,OAGA36C,cAAA,KACA,UAAAnV,KAAA4C,KAAAwsD,YAAA,CACApvD,EAAAirD,cACA,IAEA,CACA,qBAAA6C,CAAAzmD,GACAzE,KAAAysD,oBAAAlxD,KAAAkJ,EACA,CACA,mBAAA8oD,GACA,IAAAvtD,KAAAosD,iBAAA,CACA,MACA,CACAvrD,aAAAb,KAAAosD,kBACApsD,KAAAosD,iBAAA,IACA,CACA,qBAAAoB,GACA,IAAAxtD,KAAAssD,mBAAA,CACA,MACA,CACAzrD,aAAAb,KAAAssD,oBACAtsD,KAAAssD,mBAAA,IACA,CACA,WAAAmB,GACA,OAAAztD,KAAA64C,gBAAA,IACA74C,KAAAusD,uBAAAvsD,KAAAwsD,YAAA94B,KAAA,EACA,CACA,aAAAg6B,GACA,IAAA1sD,EAAAC,EACAjB,KAAAutD,sBACA,IAAAvtD,KAAAytD,cAAA,CACAztD,KAAAqsD,yBAAA,KACA,MACA,CACA,GAAArsD,KAAAimB,gBAAA,CACAjmB,KAAA2sD,gBAAA,CACA,CACA3sD,KAAAotD,eAAA,6BAAAptD,KAAA84C,mBAAA,MACA,IAAA94C,KAAAssD,mBAAA,CACAtsD,KAAAssD,mBAAA1rD,YAAA,KACAZ,KAAAotD,eAAA,wCACAptD,KAAA8sD,kBAAA,GACA9sD,KAAA84C,qBACA73C,GAAAD,EAAAhB,KAAAssD,oBAAAlrD,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CACA,IACAhB,KAAAy1C,QAAAuM,MAAA,CAAAl/C,EAAA2W,EAAAwoC,KACA,GAAAn/C,EAAA,CACA9C,KAAAotD,eAAA,0BAAAtqD,EAAAlG,SACAoD,KAAA8sD,kBACA,CACA9sD,KAAAotD,eAAA,0BACAptD,KAAAwtD,wBACAxtD,KAAAmtD,8BAAA,GAEA,CACA,MAAAxyD,GAGAqF,KAAA8sD,kBACA,CACA,CAOA,4BAAAK,GACA,IAAAnsD,EAAAC,EACA,IAAAjB,KAAAytD,cAAA,CACA,MACA,CACA,GAAAztD,KAAAqsD,yBAAA,CACArsD,KAAAqsD,yBAAA,MACArsD,KAAA0tD,eACA,MACA,IAAA1tD,KAAAosD,mBAAApsD,KAAAssD,mBAAA,CACAtsD,KAAAotD,eAAA,gCAAAptD,KAAA64C,gBAAA,MACA74C,KAAAosD,kBAAAnrD,GAAAD,EAAAJ,YAAA,KACAZ,KAAA0tD,eAAA,GACA1tD,KAAA64C,kBAAAz3C,SAAA,MAAAH,SAAA,SAAAA,EAAA7D,KAAA4D,EACA,CAGA,CACA,kBAAA6rD,GACA,GAAA7sD,KAAAosD,iBAAA,CACAvrD,aAAAb,KAAAosD,kBACApsD,KAAAosD,iBAAA,IACA,CACApsD,KAAAwtD,uBACA,CACA,gBAAAG,CAAAvwD,GACA4C,KAAAwsD,YAAArjC,OAAA/rB,GACA,GAAA4C,KAAAwsD,YAAA94B,OAAA,GACA1zB,KAAAy1C,QAAAr0C,OACA,CACA,CACA,aAAAwsD,CAAAxwD,GACA4C,KAAAwsD,YAAAppD,IAAAhG,GACA,GAAA4C,KAAAwsD,YAAA94B,OAAA,GACA1zB,KAAAy1C,QAAA3zC,MACA,IAAA9B,KAAAusD,sBAAA,CACAvsD,KAAAmtD,8BACA,CACA,CACA,CACA,UAAAxhD,CAAA1I,EAAA4I,EAAAD,EAAAnH,EAAAopD,GACA,MAAA9qD,EAAAE,EAAA6+B,iBACA/+B,EAAAgpD,GAAAlgD,EACA9I,EAAAkpD,GAAAjsD,KAAA4sD,UACA7pD,EAAAmvC,GAAA,mBACAnvC,EAAAipD,GAAA,OACAjpD,EAAAy0C,GAAA5rC,EACA7I,EAAA2wC,GAAA,WACA,IAAAoT,EASA,IACAA,EAAA9mD,KAAAy1C,QAAAr2B,QAAArc,EACA,CACA,MAAApI,GACAqF,KAAA8sD,mBACA,MAAAnyD,CACA,CACAqF,KAAAqtD,iBAAA,sBACArtD,KAAAy1C,QAAA1rB,MAAA+xB,gBACA,wBACA97C,KAAAy1C,QAAA1rB,MAAAiyB,kBACAh8C,KAAAstD,eAAA,kBACAttD,KAAAy1C,QAAA3B,OACA,sBACA9zC,KAAAy1C,QAAA5B,UACA,6BACA7zC,KAAAy1C,QAAAl2B,OAAAs0B,WACA,IAAAia,EAEA,IAAA1wD,EACA,GAAA4C,KAAAimB,gBAAA,CACAjmB,KAAA+6C,cAAAnvB,iBACAkiC,EAAA,CACA3Y,eAAA,KACA,IAAAn0C,EACAhB,KAAAq7C,cAAA,EACAr7C,KAAA27C,yBAAA,IAAAn7C,MACAQ,EAAA6sD,EAAA1Y,kBAAA,MAAAn0C,SAAA,SAAAA,EAAA5D,KAAAywD,EAAA,EAEA7Y,mBAAA,KACA,IAAAh0C,EACAhB,KAAAs7C,kBAAA,EACAt7C,KAAA47C,6BAAA,IAAAp7C,MACAQ,EAAA6sD,EAAA7Y,sBAAA,MAAAh0C,SAAA,SAAAA,EAAA5D,KAAAywD,EAAA,EAEAhiC,UAAAvmB,IACA,IAAAtE,GACAA,EAAA6sD,EAAAhiC,aAAA,MAAA7qB,SAAA,SAAAA,EAAA5D,KAAAywD,EAAAvoD,GACAtF,KAAA2tD,iBAAAvwD,EAAA,EAEA61C,YAAArhB,IACA,IAAA5wB,EACA,GAAA4wB,EAAA,CACA5xB,KAAA+6C,cAAAjvB,kBACA,KACA,CACA9rB,KAAA+6C,cAAAhvB,eACA,EACA/qB,EAAA6sD,EAAA5a,eAAA,MAAAjyC,SAAA,SAAAA,EAAA5D,KAAAywD,EAAAj8B,EAAA,EAGA,KACA,CACAk8B,EAAA,CACA3Y,eAAA,KACA,IAAAn0C,GACAA,EAAA6sD,EAAA1Y,kBAAA,MAAAn0C,SAAA,SAAAA,EAAA5D,KAAAywD,EAAA,EAEA7Y,mBAAA,KACA,IAAAh0C,GACAA,EAAA6sD,EAAA7Y,sBAAA,MAAAh0C,SAAA,SAAAA,EAAA5D,KAAAywD,EAAA,EAEAhiC,UAAAvmB,IACA,IAAAtE,GACAA,EAAA6sD,EAAAhiC,aAAA,MAAA7qB,SAAA,SAAAA,EAAA5D,KAAAywD,EAAAvoD,GACAtF,KAAA2tD,iBAAAvwD,EAAA,EAEA61C,YAAArhB,IACA,IAAA5wB,GACAA,EAAA6sD,EAAA5a,eAAA,MAAAjyC,SAAA,SAAAA,EAAA5D,KAAAywD,EAAAj8B,EAAA,EAGA,CACAx0B,EAAA,IAAAyuD,EAAAnF,oBAAAI,EAAAgH,EAAArpD,EAAAzE,MAAA,EAAA8jB,EAAAte,sBACAxF,KAAA4tD,cAAAxwD,GACA,OAAAA,CACA,CACA,cAAAsO,GACA,OAAA1L,KAAAinB,WACA,CACA,WAAAyhC,GACA,OAAA1oD,KAAA0qD,uBACA,CACA,QAAApS,GACAt4C,KAAAy1C,QAAAtqC,SACA,EAAAmX,EAAAsK,uBAAA5sB,KAAAinB,YACA,EAEA,MAAAijC,yBACA,WAAApqD,CAAA0pD,GACAxpD,KAAAwpD,gBACAxpD,KAAAy1C,QAAA,KACAz1C,KAAA+tD,WAAA,KACA,CACA,KAAAjzC,CAAAgC,GACA3I,EAAA2G,MAAA7U,EAAAwQ,aAAA1b,MAAA8hB,GAAA,EAAA3B,EAAAP,aAAA3a,KAAAwpD,eAAA,IAAA1sC,EACA,CACA,aAAAkxC,CAAAp8C,EAAA5G,EAAAlO,EAAAmxD,GACA,GAAAjuD,KAAA+tD,WAAA,CACA,OAAAlyD,QAAA+G,QACA,CACA,WAAA/G,SAAA,CAAAE,EAAA6G,KACA,IAAA5B,EAAAC,EAAAyM,EACA,IAAAmtC,EACA,GAAAoT,EAAAxvC,WAAA,CACAo8B,GAAA,EAAA3/B,EAAAP,aAAAszC,EAAAxvC,YACAze,KAAA8a,MAAA,6CACA,EAAAI,EAAAP,aAAAszC,EAAAxvC,YACA,KACA,CACAo8B,EAAA,KACA76C,KAAA8a,MAAA,iCAAAS,EAAAnB,2BAAAxI,GACA,CACA,MAAAs8C,GAAA,EAAAjzC,EAAA2E,sBAAA5e,EAAAitD,EAAAxvC,cAAA,MAAAzd,SAAA,EAAAA,EAAAhB,KAAAwpD,eACA,IAAAz/C,EAAAiB,EAAAnB,yBAAA,GACAE,EAAAivC,yBAAApxC,OAAA4e,iBACA,oCAAA1pB,EAAA,CACAiN,EAAAkvC,iBACAn8C,EAAA,+BACA,KACA,CAKAiN,EAAAkvC,iBAAArxC,OAAA4e,gBACA,CACA,IAAA2nC,EAAA,UACA,qBAAApkD,EAAA,CACAokD,EAAA,WAIA,GAAArxD,EAAA,kCACA,MAAAsxD,EAAAtxD,EAAA,iCACAiN,EAAAC,oBAAA,CAAA6B,EAAAvC,KACA,EAAAnB,EAAA6B,qBAAAokD,EAAA9kD,GAEAS,EAAAiW,WAAAouC,CACA,KACA,CACA,MAAAC,GAAA3gD,GAAAzM,GAAA,EAAAia,EAAAqD,eAAA2vC,MAAA,MAAAjtD,SAAA,SAAAA,EAAA4K,QAAA,MAAA6B,SAAA,EAAAA,EAAA,YAEA3D,EAAAiW,WAAAquC,CACA,CACA,GAAAJ,EAAA1uC,OAAA,CAMAxV,EAAAukD,iBAAA,CAAA9oB,EAAA+oB,IACAN,EAAA1uC,MAEA,CACA,KACA,CAIAxV,EAAAukD,iBAAA,CAAA9oB,EAAA+oB,KACA,GAAAN,EAAA1uC,OAAA,CACA,OAAA0uC,EAAA1uC,MACA,KACA,CAIA,OAAAqsC,EAAA7rC,QAAAnO,EACA,EAEA,CACA7H,EAAA/M,OAAAwJ,OAAAxJ,OAAAwJ,OAAAxJ,OAAAwJ,OAAA,GAAAuD,GAAA6H,GAAA,CAAAmrC,YAAAjgD,EAAA,oCAkBA,MAAA24C,EAAAja,EAAAzb,QAAAouC,EAAAD,EAAAnkD,GACA/J,KAAAy1C,UACA,IAAAre,EAAA,oBACAqe,EAAAr0C,QACAq0C,EAAAp2B,KAAA,gBACAo2B,EAAAh2B,qBACA1jB,EAAA,IAAAowD,eAAA1W,EAAA7jC,EAAA9U,EAAA+9C,IACA76C,KAAAy1C,QAAA,QAEAA,EAAAp2B,KAAA,cACArf,KAAAy1C,QAAA,KAEAljC,cAAA,KACA3P,EAAA,GAAAw0B,OAAA,IAAA52B,MAAAyY,iBAAA,GACA,IAEAw8B,EAAAp2B,KAAA,SAAA/Y,IACA8wB,EAAA9wB,EAAA1J,QACAoD,KAAA8a,MAAA,gCAAAsc,EAAA,GACA,GAEA,CACA,OAAArX,CAAAnO,EAAA5G,EAAAlO,GACA,IAAAkE,EAAAC,EACA,GAAAjB,KAAA+tD,WAAA,CACA,OAAAlyD,QAAA+G,QACA,CAKA,MAAAmH,EAAAiB,EAAAnB,yBAAA,GACA,qBAAAE,EAAA,CACAA,EAAAykD,cAAA,OAIA,GAAA1xD,EAAA,kCACA,MAAAsxD,EAAAtxD,EAAA,iCACAiN,EAAAC,oBAAA,CAAA6B,EAAAvC,KACA,EAAAnB,EAAA6B,qBAAAokD,EAAA9kD,GAEAS,EAAAiW,WAAAouC,CACA,KACA,CACA,gCAAAtxD,EAAA,CAKA,MAAA6iB,GAAA,EAAA1E,EAAA2E,sBAAA5e,GAAA,EAAAka,EAAAyD,UAAA7hB,EAAA,sCAAAkE,SAAA,EAAAA,EAAA,CACA0N,KAAA,cAEA,MAAA4P,GAAA,EAAApD,EAAAqD,eAAAoB,GACA5V,EAAAiW,YAAA/e,EAAAqd,IAAA,MAAAA,SAAA,SAAAA,EAAAzS,QAAA,MAAA5K,SAAA,EAAAA,EAAA0e,CACA,CACA,CACA,GAAA7iB,EAAA,+BACAiN,EAAAgzC,YAAA,IACA,CACA,CACA,SAAAr5B,EAAAnH,sBAAA3K,EAAA9U,EAAAiN,GAAA5N,MAAA4f,GAAA/b,KAAAguD,cAAAp8C,EAAA5G,EAAAlO,EAAAif,IACA,CACA,QAAAu8B,GACA,IAAAt3C,EACAhB,KAAA+tD,WAAA,MACA/sD,EAAAhB,KAAAy1C,WAAA,MAAAz0C,SAAA,SAAAA,EAAAmK,QACAnL,KAAAy1C,QAAA,IACA,EAEAn7C,EAAA4vD,iD,eC7mBAltD,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAqgB,YAAArgB,EAAA6kD,gBAAA7kD,EAAAikB,cAAAjkB,EAAAqkB,cAAA,EAOA,MAAA8vC,EAAA,kDACA,SAAA9vC,SAAA+vC,GACA,MAAAC,EAAAF,EAAAG,KAAAF,GACA,GAAAC,IAAA,MACA,WACA,CACA,OACAvwC,OAAAuwC,EAAA,GACAnpB,UAAAmpB,EAAA,GACAjgD,KAAAigD,EAAA,GAEA,CACAr0D,EAAAqkB,kBACA,MAAAkwC,EAAA,QACA,SAAAtwC,cAAA7P,GACA,GAAAA,EAAA8vB,WAAA,MACA,MAAAswB,EAAApgD,EAAApT,QAAA,KACA,GAAAwzD,KAAA,GACA,WACA,CACA,MAAAjjD,EAAA6C,EAAAmb,UAAA,EAAAilC,GAGA,GAAAjjD,EAAAvQ,QAAA,WACA,WACA,CACA,GAAAoT,EAAA9S,OAAAkzD,EAAA,GACA,GAAApgD,EAAAogD,EAAA,UACA,MAAAC,EAAArgD,EAAAmb,UAAAilC,EAAA,GACA,GAAAD,EAAAjuB,KAAAmuB,GAAA,CACA,OACAljD,OACAgS,MAAAkxC,EAEA,KACA,CACA,WACA,CACA,KACA,CACA,WACA,CACA,KACA,CACA,OACAljD,OAEA,CACA,KACA,CACA,MAAA+vB,EAAAltB,EAAAgD,MAAA,KAIA,GAAAkqB,EAAAhgC,SAAA,GACA,GAAAizD,EAAAjuB,KAAAhF,EAAA,KACA,OACA/vB,KAAA+vB,EAAA,GACA/d,MAAA+d,EAAA,GAEA,KACA,CACA,WACA,CACA,KACA,CACA,OACA/vB,KAAA6C,EAEA,CACA,CACA,CACApU,EAAAikB,4BACA,SAAA4gC,gBAAA7gC,GACA,GAAAA,EAAAT,OAAAvZ,UAAA,CACA,OAAAga,EAAAzS,IACA,KACA,CAEA,GAAAyS,EAAAzS,KAAA2K,SAAA,MACA,UAAA8H,EAAAzS,SAAAyS,EAAAT,MACA,KACA,CACA,SAAAS,EAAAzS,QAAAyS,EAAAT,MACA,CACA,CACA,CACAvjB,EAAA6kD,gCACA,SAAAxkC,YAAAq0C,GACA,IAAAjzC,EAAA,GACA,GAAAizC,EAAA5wC,SAAA9Z,UAAA,CACAyX,GAAAizC,EAAA5wC,OAAA,GACA,CACA,GAAA4wC,EAAAxpB,YAAAlhC,UAAA,CACAyX,GAAA,KAAAizC,EAAAxpB,UAAA,GACA,CACAzpB,GAAAizC,EAAAtgD,KACA,OAAAqN,CACA,CACAzhB,EAAAqgB,uB;;;;;;;;;;;;;;;;;GC1GAwF,EAAA,CAAAvhB,MAAA,MACAuhB,MAAA7lB,EAAA20D,GAAA9uC,WAAA,EACA,MAAA+uC,EAAA90D,EAAA,MACA,MAAA+0D,EAAA/0D,EAAA,MACA,MAAAw8C,EAAAx8C,EAAA,MACA,MAAA01C,EAAA11C,EAAA,MACA,MAAAg1D,EAAAh1D,EAAA,MACA+lB,EAAAivC,EACA,SAAAC,eAAA9mD,GACA,gBAAAA,YAAA,mBACA,CACA4X,EAAAkvC,eACA,MAAAC,EAAA,CACAC,MAAA32C,OACA42C,MAAA52C,OACA62C,MAAA72C,OACA82C,SAAA,KACAC,OAAA,KACAC,KAAA,MAEA,SAAAC,SAAAC,EAAArjD,GACA,GAAAqjD,IAAA,IACA,OAAArjD,CACA,KACA,CACA,OAAAqjD,EAAA,IAAArjD,CACA,CACA,CACA,SAAAsjD,0BAAAxnD,GACA,OAAAA,aAAA4mD,EAAAa,SACAznD,aAAA4mD,EAAAc,MACA1nD,aAAA4mD,EAAAe,IACA,CACA,SAAAC,gBAAA5nD,GACA,OAAAA,aAAA4mD,EAAAiB,WAAA7nD,aAAA4mD,EAAAkB,IACA,CACA,SAAAC,+BAAA/nD,EAAAgoD,GACA,MAAAC,EAAAX,SAAAU,EAAAhoD,EAAAkE,MACA,GAAAsjD,0BAAAxnD,GAAA,CACA,QAAAioD,EAAAjoD,GACA,KACA,CACA,GAAA4nD,gBAAA5nD,aAAAkoD,SAAA,aACA,OAAAzzD,OAAAmG,KAAAoF,EAAAkoD,QACAx0D,KAAAwQ,GACA6jD,+BAAA/nD,EAAAkoD,OAAAhkD,GAAA+jD,KAEAlvC,QAAA,CAAAovC,EAAAC,IAAAD,EAAAxsD,OAAAysD,IAAA,GACA,CACA,CACA,QACA,CACA,SAAAC,mBAAAC,EAAA/zD,GACA,gBAAAiK,YAAA+pD,GACA,OAAAD,EAAAE,SAAAF,EAAAG,OAAAF,GAAAh0D,EACA,CACA,CACA,SAAAm0D,iBAAAJ,GACA,gBAAAxpD,UAAAmK,GACA,GAAA9T,MAAAwzB,QAAA1f,GAAA,CACA,UAAAxO,MAAA,qDAAA6tD,EAAApkD,oCACA,CACA,MAAA7P,EAAAi0D,EAAAK,WAAA1/C,GACA,OAAAq/C,EAAAM,OAAAv0D,GAAAw0D,QACA,CACA,CACA,SAAAC,uBAAAzlD,EAAAiwB,EAAA/+B,EAAAw0D,GAGA,MAAAC,EAAA3lD,EAAA4lD,oBACA,MAAAC,EAAA7lD,EAAA8lD,qBACA,OACAhjD,KAAA,IAAAmtB,EAAA,IAAAjwB,EAAAa,KACAsG,gBAAAnH,EAAAmH,cACAlD,iBAAAjE,EAAAiE,eACAX,iBAAA+hD,iBAAAM,GACA3b,mBAAAgb,mBAAAW,EAAAz0D,GACA+4C,kBAAAob,iBAAAQ,GACAliD,oBAAAqhD,mBAAAa,EAAA30D,GAEA6iC,aAAAuvB,EAAAtjD,EAAAa,MACA8kD,YAAAI,wBAAAJ,EAAAD,GACAG,aAAAE,wBAAAF,EAAAH,GAEA,CACA,SAAAM,wBAAAhyB,EAAAnzB,EAAA3P,EAAAw0D,GACA,MAAAO,EAAA,GACA,UAAAjmD,KAAAg0B,EAAAkyB,aAAA,CACAD,EAAAjmD,EAAAa,MAAA4kD,uBAAAzlD,EAAAa,EAAA3P,EAAAw0D,EACA,CACA,OAAAO,CACA,CACA,SAAAF,wBAAA/0D,EAAA00D,GACA,MAAAS,EAAAn1D,EAAAo1D,aAAA,UACA,OACAhwC,OAAA,oCACAiJ,KAAA8mC,EAAAE,MAAAlB,SAAAgB,EAAAzC,GACA4C,qBAAAZ,EAEA,CACA,SAAAa,qBAAAC,EAAAd,GACA,MAAAe,EAAAD,EAAAJ,aAAA,UACA,OACAhwC,OAAA,wCACAiJ,KAAAonC,EAAAJ,MAAAlB,SAAAsB,EAAA/C,GACA4C,qBAAAZ,EAEA,CAQA,SAAAgB,iBAAA/pD,EAAAkE,EAAA3P,EAAAw0D,GACA,GAAA/oD,aAAA4mD,EAAAa,QAAA,CACA,OAAA4B,wBAAArpD,EAAAkE,EAAA3P,EAAAw0D,EACA,MACA,GAAA/oD,aAAA4mD,EAAAc,KAAA,CACA,OAAA0B,wBAAAppD,EAAA+oD,EACA,MACA,GAAA/oD,aAAA4mD,EAAAe,KAAA,CACA,OAAAiC,qBAAA5pD,EAAA+oD,EACA,KACA,CACA,UAAAtuD,MAAA,8CACA,CACA,CACA,SAAAuvD,wBAAAC,EAAA11D,GACA,MAAA+0D,EAAA,GACAW,EAAAC,aACA,MAAAC,EAAAF,EAAAR,aAAA,UAAAW,KACA,MAAAC,EAAAF,EAAAz2D,KAAA2C,GAAA6J,OAAAwW,KAAA23B,EAAAic,oBAAA1B,OAAAvyD,GAAAwyD,YACA,UAAA3kD,EAAAlE,KAAA+nD,+BAAAkC,EAAA,KACAX,EAAAplD,GAAA6lD,iBAAA/pD,EAAAkE,EAAA3P,EAAA81D,EACA,CACA,OAAAf,CACA,CACA,SAAAiB,yCAAAC,EAAAj2D,GACAA,KAAA,GACA,MAAA01D,EAAArD,EAAAkB,KAAA2C,eAAAD,GACAP,EAAAC,aACA,OAAAF,wBAAAC,EAAA11D,EACA,CA2BA,SAAAglB,KAAAC,EAAAjlB,GACA,SAAAgzC,EAAAmjB,uBAAAlxC,EAAAjlB,GAAAX,MAAA+2D,GACAX,wBAAAW,EAAAp2D,IAEA,CACAqjB,EAAA2B,KACA,SAAAqxC,SAAApxC,EAAAjlB,GACA,MAAAo2D,GAAA,EAAApjB,EAAAsjB,2BAAArxC,EAAAjlB,GACA,OAAAy1D,wBAAAW,EAAAp2D,EACA,CACAxC,EAAA20D,GAAAkE,SACA,SAAAE,SAAAzD,EAAA9yD,GACAA,KAAA,GACA,MAAAo2D,EAAA/D,EAAAkB,KAAAgD,SAAAzD,GACAsD,EAAAT,aACA,OAAAF,wBAAAW,EAAAp2D,EACA,CACAqjB,EAAAkzC,SACA,SAAAC,gCAAAC,EAAAz2D,GACA,MAAAi2D,EAAAnc,EAAA4c,kBAAAxC,OAAAuC,GACA,OAAAT,yCAAAC,EAAAj2D,EACA,CACAqjB,EAAAmzC,gCACA,SAAAG,gCAAAF,EAAAz2D,GACA,MAAAi2D,EAAAnc,EAAA4c,kBAAAtC,WAAAqC,GACA,OAAAT,yCAAAC,EAAAj2D,EACA,CACAqjB,EAAAszC,iCACA,EAAA3jB,EAAA4jB,kB;;;;;;;;;;;;;;;;;;ACvMA12D,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,OACAtE,EAAAo5D,gBAAAp5D,EAAA84D,0BAAA94D,EAAA24D,2BAAA,EACA,MAAA3H,EAAAlxD,EAAA,MACA,MAAAsU,EAAAtU,EAAA,MACA,MAAA+0D,EAAA/0D,EAAA,MACA,SAAAu5D,uBAAAnB,EAAAoB,GACA,MAAAC,EAAArB,EAAAsB,YACAtB,EAAAsB,YAAA,CAAAC,EAAAhpD,KACA,GAAA2D,EAAAslD,WAAAjpD,GAAA,CACA,OAAAA,CACA,CACA,UAAAkpD,KAAAL,EAAA,CACA,MAAAM,EAAAxlD,EAAAiD,KAAAsiD,EAAAlpD,GACA,IACAugD,EAAA6I,WAAAD,EAAA5I,EAAA7uB,UAAA23B,MACA,OAAAF,CACA,CACA,MAAApxD,GACA,QACA,CACA,CACAjI,QAAAw5D,YAAA,GAAAtpD,2CAAA6oD,KACA,OAAAC,EAAAE,EAAAhpD,EAAA,CAEA,CACArP,eAAAu3D,sBAAAlxC,EAAAjlB,GACA,MAAA01D,EAAA,IAAArD,EAAAkB,KACAvzD,KAAA,GACA,KAAAA,EAAAkP,YAAA,CACA,IAAAtO,MAAAwzB,QAAAp0B,EAAAkP,aAAA,CACA,OAAAnQ,QAAA+G,OAAA,IAAAI,MAAA,2CACA,CACA2wD,uBAAAnB,EAAA11D,EAAAkP,YACA,CACA,MAAAknD,QAAAV,EAAA1wC,KAAAC,EAAAjlB,GACAo2D,EAAAT,aACA,OAAAS,CACA,CACA54D,EAAA24D,4CACA,SAAAG,0BAAArxC,EAAAjlB,GACA,MAAA01D,EAAA,IAAArD,EAAAkB,KACAvzD,KAAA,GACA,KAAAA,EAAAkP,YAAA,CACA,IAAAtO,MAAAwzB,QAAAp0B,EAAAkP,aAAA,CACA,UAAAhJ,MAAA,0CACA,CACA2wD,uBAAAnB,EAAA11D,EAAAkP,YACA,CACA,MAAAknD,EAAAV,EAAAW,SAAApxC,EAAAjlB,GACAo2D,EAAAT,aACA,OAAAS,CACA,CACA54D,EAAA84D,oDAIA,SAAAM,kBAIA,MAAAY,EAAAl6D,EAAA,MACA,MAAAm6D,EAAAn6D,EAAA,MACA,MAAAo6D,EAAAp6D,EAAA,MACA,MAAAq6D,EAAAr6D,EAAA,MACA+0D,EAAAuF,OAAA,MAAAJ,EAAA7D,OAAAkE,OAAAlE,OAAAmE,SAAAnE,QACAtB,EAAAuF,OAAA,aAAAH,EAAA9D,OAAAkE,OAAAlE,OAAAmE,SAAAnE,QACAtB,EAAAuF,OAAA,iBAAAF,EAAA/D,OAAAkE,OAAAlE,OAAAmE,SAAAnE,QACAtB,EAAAuF,OAAA,OAAAD,EAAAhE,OAAAkE,OAAAlE,OAAAmE,SAAAnE,OACA,CACAn2D,EAAAo5D,+B,UCtFAr5D,EAAAC,QAAAu6D,UAmBA,SAAAA,UAAAr6D,EAAAs6D,GACA,IAAAC,EAAA,IAAAr3D,MAAAf,UAAAf,OAAA,GACAo5D,EAAA,EACA3wD,EAAA,EACA4wD,EAAA,KACA,MAAA5wD,EAAA1H,UAAAf,OACAm5D,EAAAC,KAAAr4D,UAAA0H,KACA,WAAAxI,SAAA,SAAAq5D,SAAAn5D,EAAA6G,GACAmyD,EAAAC,GAAA,SAAAj1D,SAAA+C,GACA,GAAAmyD,EAAA,CACAA,EAAA,MACA,GAAAnyD,EACAF,EAAAE,OACA,CACA,IAAAiyD,EAAA,IAAAr3D,MAAAf,UAAAf,OAAA,GACAo5D,EAAA,EACA,MAAAA,EAAAD,EAAAn5D,OACAm5D,EAAAC,KAAAr4D,UAAAq4D,GACAj5D,EAAAW,MAAA,KAAAq4D,EACA,CACA,CACA,EACA,IACAv6D,EAAAkC,MAAAo4D,GAAA,KAAAC,EACA,OAAAjyD,GACA,GAAAmyD,EAAA,CACAA,EAAA,MACAryD,EAAAE,EACA,CACA,CACA,GACA,C,eC5CA,IAAAqyD,EAAA76D,EAOA66D,EAAAv5D,OAAA,SAAAA,OAAAw5D,GACA,IAAApe,EAAAoe,EAAAx5D,OACA,IAAAo7C,EACA,SACA,IAAAnF,EAAA,EACA,QAAAmF,EAAA,KAAAoe,EAAA51B,OAAAwX,KAAA,MACAnF,EACA,OAAAjyC,KAAAiZ,KAAAu8C,EAAAx5D,OAAA,KAAAi2C,CACA,EAGA,IAAAwjB,EAAA,IAAA33D,MAAA,IAGA,IAAA43D,EAAA,IAAA53D,MAAA,KAGA,QAAA/B,EAAA,EAAAA,EAAA,IACA25D,EAAAD,EAAA15D,KAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,GAAAA,EAAA,EAAAA,EAAA,OAAAA,IASAw5D,EAAAhE,OAAA,SAAAA,OAAAoE,EAAAxoD,EAAAmT,GACA,IAAAs1C,EAAA,KACAjuD,EAAA,GACA,IAAA5L,EAAA,EACA46B,EAAA,EACAk/B,EACA,MAAA1oD,EAAAmT,EAAA,CACA,IAAAqU,EAAAghC,EAAAxoD,KACA,OAAAwpB,GACA,OACAhvB,EAAA5L,KAAA05D,EAAA9gC,GAAA,GACAkhC,GAAAlhC,EAAA,MACAgC,EAAA,EACA,MACA,OACAhvB,EAAA5L,KAAA05D,EAAAI,EAAAlhC,GAAA,GACAkhC,GAAAlhC,EAAA,OACAgC,EAAA,EACA,MACA,OACAhvB,EAAA5L,KAAA05D,EAAAI,EAAAlhC,GAAA,GACAhtB,EAAA5L,KAAA05D,EAAA9gC,EAAA,IACAgC,EAAA,EACA,MAEA,GAAA56B,EAAA,OACA65D,MAAA,KAAAj6D,KAAAqd,OAAA88C,aAAAh5D,MAAAkc,OAAArR,IACA5L,EAAA,CACA,CACA,CACA,GAAA46B,EAAA,CACAhvB,EAAA5L,KAAA05D,EAAAI,GACAluD,EAAA5L,KAAA,GACA,GAAA46B,IAAA,EACAhvB,EAAA5L,KAAA,EACA,CACA,GAAA65D,EAAA,CACA,GAAA75D,EACA65D,EAAAj6D,KAAAqd,OAAA88C,aAAAh5D,MAAAkc,OAAArR,EAAA5J,MAAA,EAAAhC,KACA,OAAA65D,EAAA7jD,KAAA,GACA,CACA,OAAAiH,OAAA88C,aAAAh5D,MAAAkc,OAAArR,EAAA5J,MAAA,EAAAhC,GACA,EAEA,IAAAg6D,EAAA,mBAUAR,EAAAnE,OAAA,SAAAA,OAAAoE,EAAAG,EAAAP,GACA,IAAAjoD,EAAAioD,EACA,IAAAz+B,EAAA,EACAk/B,EACA,QAAA95D,EAAA,EAAAA,EAAAy5D,EAAAx5D,QAAA,CACA,IAAAg6D,EAAAR,EAAAS,WAAAl6D,KACA,GAAAi6D,IAAA,IAAAr/B,EAAA,EACA,MACA,IAAAq/B,EAAAN,EAAAM,MAAAtxD,UACA,MAAAtB,MAAA2yD,GACA,OAAAp/B,GACA,OACAk/B,EAAAG,EACAr/B,EAAA,EACA,MACA,OACAg/B,EAAAP,KAAAS,GAAA,GAAAG,EAAA,OACAH,EAAAG,EACAr/B,EAAA,EACA,MACA,OACAg/B,EAAAP,MAAAS,EAAA,QAAAG,EAAA,OACAH,EAAAG,EACAr/B,EAAA,EACA,MACA,OACAg/B,EAAAP,MAAAS,EAAA,MAAAG,EACAr/B,EAAA,EACA,MAEA,CACA,GAAAA,IAAA,EACA,MAAAvzB,MAAA2yD,GACA,OAAAX,EAAAjoD,CACA,EAOAooD,EAAAv0B,KAAA,SAAAA,KAAAw0B,GACA,yEAAAx0B,KAAAw0B,EACA,C,WCzIA/6D,EAAAC,QAAAw7D,QASA,SAAAA,QAAAC,EAAAC,GAGA,UAAAD,IAAA,UACAC,EAAAD,EACAA,EAAAzxD,SACA,CAEA,IAAA2xD,EAAA,GAYA,SAAAC,QAAAC,GAIA,UAAAA,IAAA,UACA,IAAAC,EAAAl3C,WACA,GAAA42C,QAAAO,QACAt4D,QAAAC,IAAA,YAAAo4D,GACAA,EAAA,UAAAA,EACA,GAAAD,EAAA,CACA,IAAAG,EAAAt5D,OAAAmG,KAAAgzD,GACAI,EAAA,IAAA74D,MAAA44D,EAAA16D,OAAA,GACA46D,EAAA,IAAA94D,MAAA44D,EAAA16D,QACA66D,EAAA,EACA,MAAAA,EAAAH,EAAA16D,OAAA,CACA26D,EAAAE,GAAAH,EAAAG,GACAD,EAAAC,GAAAN,EAAAG,EAAAG,KACA,CACAF,EAAAE,GAAAL,EACA,OAAAt4D,SAAApB,MAAA,KAAA65D,GAAA75D,MAAA,KAAA85D,EACA,CACA,OAAA14D,SAAAs4D,EAAAt4D,EACA,CAGA,IAAA44D,EAAA,IAAAh5D,MAAAf,UAAAf,OAAA,GACA+6D,EAAA,EACA,MAAAA,EAAAD,EAAA96D,OACA86D,EAAAC,GAAAh6D,YAAAg6D,GACAA,EAAA,EACAR,IAAAS,QAAA,yBAAAA,QAAAC,EAAAC,GACA,IAAAl4D,EAAA83D,EAAAC,KACA,OAAAG,GACA,uBAAAl+C,OAAAhR,OAAAhJ,IACA,eAAAga,OAAAhZ,KAAA2mB,MAAA3nB,IACA,eAAA8qB,KAAAC,UAAA/qB,GACA,eAAAga,OAAAha,GAEA,SACA,IACA,GAAA+3D,IAAAD,EAAA96D,OACA,MAAAoH,MAAA,4BACAizD,EAAA16D,KAAA46D,GACA,OAAAD,OACA,CAEA,SAAAh3C,SAAA63C,GACA,mBAAAA,GAAAf,GAAA,SAAAD,KAAApkD,KAAA,mBAAAskD,EAAAtkD,KAAA,aACA,CAEAukD,QAAAh3C,kBACA,OAAAg3C,OACA,CAgBAJ,QAAAO,QAAA,K,WCjGAh8D,EAAAC,QAAAmM,aAQA,SAAAA,eAOAzG,KAAAg3D,WAAA,EACA,CASAvwD,aAAAxJ,UAAAgjB,GAAA,SAAAA,GAAAg3C,EAAAz8D,EAAAs6D,IACA90D,KAAAg3D,WAAAC,KAAAj3D,KAAAg3D,WAAAC,GAAA,KAAA17D,KAAA,CACAf,KACAs6D,OAAA90D,OAEA,OAAAA,IACA,EAQAyG,aAAAxJ,UAAAi6D,IAAA,SAAAA,IAAAD,EAAAz8D,GACA,GAAAy8D,IAAA3yD,UACAtE,KAAAg3D,WAAA,OACA,CACA,GAAAx8D,IAAA8J,UACAtE,KAAAg3D,WAAAC,GAAA,OACA,CACA,IAAAE,EAAAn3D,KAAAg3D,WAAAC,GACA,QAAAt7D,EAAA,EAAAA,EAAAw7D,EAAAv7D,QACA,GAAAu7D,EAAAx7D,GAAAnB,OACA28D,EAAA3sC,OAAA7uB,EAAA,SAEAA,CACA,CACA,CACA,OAAAqE,IACA,EAQAyG,aAAAxJ,UAAAqW,KAAA,SAAAA,KAAA2jD,GACA,IAAAE,EAAAn3D,KAAAg3D,WAAAC,GACA,GAAAE,EAAA,CACA,IAAA15D,EAAA,GACA9B,EAAA,EACA,KAAAA,EAAAgB,UAAAf,QACA6B,EAAAlC,KAAAoB,UAAAhB,MACA,IAAAA,EAAA,EAAAA,EAAAw7D,EAAAv7D,QACAu7D,EAAAx7D,GAAAnB,GAAAkC,MAAAy6D,EAAAx7D,KAAAm5D,IAAAr3D,EACA,CACA,OAAAuC,IACA,C,gBC1EA3F,EAAAC,QAAA88D,MAEA,IAAAvC,EAAAz6D,EAAA,KACAi9D,EAAAj9D,EAAA,IAEA,IAAAkxD,EAAA+L,EAAA,MA2BA,SAAAD,MAAAr1C,EAAAjlB,EAAAiD,GACA,UAAAjD,IAAA,YACAiD,EAAAjD,EACAA,EAAA,EACA,UAAAA,EACAA,EAAA,GAEA,IAAAiD,EACA,OAAA80D,EAAAuC,MAAAp3D,KAAA+hB,EAAAjlB,GAGA,IAAAA,EAAAw6D,KAAAhM,KAAAiM,SACA,OAAAjM,EAAAiM,SAAAx1C,GAAA,SAAAy1C,sBAAA10D,EAAA20D,GACA,OAAA30D,UAAA40D,iBAAA,YACAN,MAAAE,IAAAv1C,EAAAjlB,EAAAiD,GACA+C,EACA/C,EAAA+C,GACA/C,EAAA,KAAAjD,EAAA66D,OAAAF,IAAAv4C,SAAA,QACA,IAGA,OAAAk4C,MAAAE,IAAAv1C,EAAAjlB,EAAAiD,EACA,CAuBAq3D,MAAAE,IAAA,SAAAM,UAAA71C,EAAAjlB,EAAAiD,GACA,IAAAu3D,EAAA,IAAAI,eACAJ,EAAAO,mBAAA,SAAAC,0BAEA,GAAAR,EAAAS,aAAA,EACA,OAAAzzD,UAKA,GAAAgzD,EAAAhyD,SAAA,GAAAgyD,EAAAhyD,SAAA,IACA,OAAAvF,EAAAiD,MAAA,UAAAs0D,EAAAhyD,SAIA,GAAAxI,EAAA66D,OAAA,CACA,IAAApC,EAAA+B,EAAApiB,SACA,IAAAqgB,EAAA,CACAA,EAAA,GACA,QAAA55D,EAAA,EAAAA,EAAA27D,EAAAU,aAAAp8D,SAAAD,EACA45D,EAAAh6D,KAAA+7D,EAAAU,aAAAnC,WAAAl6D,GAAA,IACA,CACA,OAAAoE,EAAA,YAAAk4D,aAAA,gBAAAA,WAAA1C,KACA,CACA,OAAAx1D,EAAA,KAAAu3D,EAAAU,aACA,EAEA,GAAAl7D,EAAA66D,OAAA,CAEA,wBAAAL,EACAA,EAAAY,iBAAA,sCACAZ,EAAA7F,aAAA,aACA,CAEA6F,EAAAa,KAAA,MAAAp2C,GACAu1C,EAAAc,MACA,C,WChHA/9D,EAAAC,QAAAgiB,iBAqFA,SAAAA,QAAAhiB,GAGA,UAAA+9D,eAAA,wBAEA,IAAAC,EAAA,IAAAD,aAAA,MACAE,EAAA,IAAAN,WAAAK,EAAA/C,QACAiD,EAAAD,EAAA,SAEA,SAAAE,mBAAAt2B,EAAAu2B,EAAAC,GACAL,EAAA,GAAAn2B,EACAu2B,EAAAC,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,EACA,CAEA,SAAAK,mBAAAz2B,EAAAu2B,EAAAC,GACAL,EAAA,GAAAn2B,EACAu2B,EAAAC,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,EACA,CAGAj+D,EAAAu+D,aAAAL,EAAAC,mBAAAG,mBAEAt+D,EAAAw+D,aAAAN,EAAAI,mBAAAH,mBAEA,SAAAM,kBAAAL,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACA,OAAAL,EAAA,EACA,CAEA,SAAAU,kBAAAN,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACA,OAAAL,EAAA,EACA,CAGAh+D,EAAA2+D,YAAAT,EAAAO,kBAAAC,kBAEA1+D,EAAA4+D,YAAAV,EAAAQ,kBAAAD,iBAGA,EAjDA,QAiDA,WAEA,SAAAI,mBAAAC,EAAAj3B,EAAAu2B,EAAAC,GACA,IAAAU,EAAAl3B,EAAA,MACA,GAAAk3B,EACAl3B,KACA,GAAAA,IAAA,EACAi3B,EAAA,EAAAj3B,EAAA,eAAAu2B,EAAAC,QACA,GAAA9wD,MAAAs6B,GACAi3B,EAAA,WAAAV,EAAAC,QACA,GAAAx2B,EAAA,qBACAi3B,GAAAC,GAAA,mBAAAX,EAAAC,QACA,GAAAx2B,EAAA,sBACAi3B,GAAAC,GAAA,GAAAz5D,KAAA05D,MAAAn3B,EAAA,2BAAAu2B,EAAAC,OACA,CACA,IAAAY,EAAA35D,KAAA2mB,MAAA3mB,KAAA5B,IAAAmkC,GAAAviC,KAAA45D,KACAC,EAAA75D,KAAA05D,MAAAn3B,EAAAviC,KAAA85D,IAAA,GAAAH,GAAA,iBACAH,GAAAC,GAAA,GAAAE,EAAA,QAAAE,KAAA,EAAAf,EAAAC,EACA,CACA,CAEAr+D,EAAAu+D,aAAAM,mBAAAhrD,KAAA,KAAAwrD,aACAr/D,EAAAw+D,aAAAK,mBAAAhrD,KAAA,KAAAyrD,aAEA,SAAAC,kBAAAC,EAAApB,EAAAC,GACA,IAAAoB,EAAAD,EAAApB,EAAAC,GACAU,GAAAU,GAAA,QACAR,EAAAQ,IAAA,OACAN,EAAAM,EAAA,QACA,OAAAR,IAAA,IACAE,EACAO,IACAX,EAAA1qD,SACA4qD,IAAA,EACAF,EAAA,qBAAAI,EACAJ,EAAAz5D,KAAA85D,IAAA,EAAAH,EAAA,MAAAE,EAAA,QACA,CAEAn/D,EAAA2+D,YAAAY,kBAAA1rD,KAAA,KAAA8rD,YACA3/D,EAAA4+D,YAAAW,kBAAA1rD,KAAA,KAAA+rD,WAEA,EAzCA,GA4CA,UAAAC,eAAA,wBAEA,IAAAC,EAAA,IAAAD,aAAA,MACA5B,EAAA,IAAAN,WAAAmC,EAAA7E,QACAiD,EAAAD,EAAA,SAEA,SAAA8B,oBAAAl4B,EAAAu2B,EAAAC,GACAyB,EAAA,GAAAj4B,EACAu2B,EAAAC,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,EACA,CAEA,SAAA+B,oBAAAn4B,EAAAu2B,EAAAC,GACAyB,EAAA,GAAAj4B,EACAu2B,EAAAC,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,GACAG,EAAAC,EAAA,GAAAJ,EAAA,EACA,CAGAj+D,EAAAigE,cAAA/B,EAAA6B,oBAAAC,oBAEAhgE,EAAAkgE,cAAAhC,EAAA8B,oBAAAD,oBAEA,SAAAI,mBAAA/B,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACA,OAAAyB,EAAA,EACA,CAEA,SAAAM,mBAAAhC,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACAJ,EAAA,GAAAG,EAAAC,EAAA,GACA,OAAAyB,EAAA,EACA,CAGA9/D,EAAAqgE,aAAAnC,EAAAiC,mBAAAC,mBAEApgE,EAAAsgE,aAAApC,EAAAkC,mBAAAD,kBAGA,EAjEA,QAiEA,WAEA,SAAAI,oBAAAzB,EAAA0B,EAAAC,EAAA54B,EAAAu2B,EAAAC,GACA,IAAAU,EAAAl3B,EAAA,MACA,GAAAk3B,EACAl3B,KACA,GAAAA,IAAA,GACAi3B,EAAA,EAAAV,EAAAC,EAAAmC,GACA1B,EAAA,EAAAj3B,EAAA,eAAAu2B,EAAAC,EAAAoC,EACA,SAAAlzD,MAAAs6B,GAAA,CACAi3B,EAAA,EAAAV,EAAAC,EAAAmC,GACA1B,EAAA,WAAAV,EAAAC,EAAAoC,EACA,SAAA54B,EAAA,uBACAi3B,EAAA,EAAAV,EAAAC,EAAAmC,GACA1B,GAAAC,GAAA,mBAAAX,EAAAC,EAAAoC,EACA,MACA,IAAAtB,EACA,GAAAt3B,EAAA,wBACAs3B,EAAAt3B,EAAA,OACAi3B,EAAAK,IAAA,EAAAf,EAAAC,EAAAmC,GACA1B,GAAAC,GAAA,GAAAI,EAAA,gBAAAf,EAAAC,EAAAoC,EACA,MACA,IAAAxB,EAAA35D,KAAA2mB,MAAA3mB,KAAA5B,IAAAmkC,GAAAviC,KAAA45D,KACA,GAAAD,IAAA,KACAA,EAAA,KACAE,EAAAt3B,EAAAviC,KAAA85D,IAAA,GAAAH,GACAH,EAAAK,EAAA,qBAAAf,EAAAC,EAAAmC,GACA1B,GAAAC,GAAA,GAAAE,EAAA,SAAAE,EAAA,qBAAAf,EAAAC,EAAAoC,EACA,CACA,CACA,CAEAzgE,EAAAigE,cAAAM,oBAAA1sD,KAAA,KAAAwrD,YAAA,KACAr/D,EAAAkgE,cAAAK,oBAAA1sD,KAAA,KAAAyrD,YAAA,KAEA,SAAAoB,mBAAAlB,EAAAgB,EAAAC,EAAArC,EAAAC,GACA,IAAAsC,EAAAnB,EAAApB,EAAAC,EAAAmC,GACAI,EAAApB,EAAApB,EAAAC,EAAAoC,GACA,IAAA1B,GAAA6B,GAAA,QACA3B,EAAA2B,IAAA,QACAzB,EAAA,YAAAyB,EAAA,SAAAD,EACA,OAAA1B,IAAA,KACAE,EACAO,IACAX,EAAA1qD,SACA4qD,IAAA,EACAF,EAAA,OAAAI,EACAJ,EAAAz5D,KAAA85D,IAAA,EAAAH,EAAA,OAAAE,EAAA,iBACA,CAEAn/D,EAAAqgE,aAAAK,mBAAA7sD,KAAA,KAAA8rD,WAAA,KACA3/D,EAAAsgE,aAAAI,mBAAA7sD,KAAA,KAAA+rD,WAAA,IAEA,EArDA,GAuDA,OAAA5/D,CACA,CAIA,SAAAq/D,YAAAx3B,EAAAu2B,EAAAC,GACAD,EAAAC,GAAAx2B,EAAA,IACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,MACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,OACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,EACA,CAEA,SAAAy3B,YAAAz3B,EAAAu2B,EAAAC,GACAD,EAAAC,GAAAx2B,IAAA,GACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,OACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,MACAu2B,EAAAC,EAAA,GAAAx2B,EAAA,GACA,CAEA,SAAA83B,WAAAvB,EAAAC,GACA,OAAAD,EAAAC,GACAD,EAAAC,EAAA,MACAD,EAAAC,EAAA,OACAD,EAAAC,EAAA,WACA,CAEA,SAAAuB,WAAAxB,EAAAC,GACA,OAAAD,EAAAC,IAAA,GACAD,EAAAC,EAAA,OACAD,EAAAC,EAAA,MACAD,EAAAC,EAAA,OACA,C,cC7UAt+D,OAAAC,QAAA+8D,QAQA,SAAAA,QAAA8D,YACA,IACA,IAAAC,IAAAC,KAAA,QAAAzE,QAAA,UAAAyE,CAAAF,YACA,GAAAC,UAAAx/D,QAAAoB,OAAAmG,KAAAi4D,KAAAx/D,QACA,OAAAw/D,GACA,OAAAzgE,GAAA,CACA,WACA,C,eCTA,IAAA+T,EAAApU,EAEA,IAAA05D,EAMAtlD,EAAAslD,WAAA,SAAAA,WAAAtlD,GACA,qBAAAkyB,KAAAlyB,EACA,EAEA,IAAA4sD,EAMA5sD,EAAA4sD,UAAA,SAAAA,UAAA5sD,GACAA,IAAAkoD,QAAA,WACAA,QAAA,eACA,IAAApB,EAAA9mD,EAAAgD,MAAA,KACA6pD,EAAAvH,EAAAtlD,GACA8sD,EAAA,GACA,GAAAD,EACAC,EAAAhG,EAAA3gB,QAAA,IACA,QAAAl5C,EAAA,EAAAA,EAAA65D,EAAA55D,QAAA,CACA,GAAA45D,EAAA75D,KAAA,MACA,GAAAA,EAAA,GAAA65D,EAAA75D,EAAA,UACA65D,EAAAhrC,SAAA7uB,EAAA,QACA,GAAA4/D,EACA/F,EAAAhrC,OAAA7uB,EAAA,SAEAA,CACA,SAAA65D,EAAA75D,KAAA,IACA65D,EAAAhrC,OAAA7uB,EAAA,SAEAA,CACA,CACA,OAAA6/D,EAAAhG,EAAA7jD,KAAA,IACA,EASAjD,EAAA3S,QAAA,SAAAA,QAAA0/D,EAAAC,EAAAC,GACA,IAAAA,EACAD,EAAAJ,EAAAI,GACA,GAAA1H,EAAA0H,GACA,OAAAA,EACA,IAAAC,EACAF,EAAAH,EAAAG,GACA,OAAAA,IAAA7E,QAAA,sBAAAh7D,OAAA0/D,EAAAG,EAAA,IAAAC,IACA,C,WC/DArhE,EAAAC,QAAA+uD,KA6BA,SAAAA,KAAAtE,EAAApnD,EAAA+1B,GACA,IAAAkoC,EAAAloC,GAAA,KACA,IAAAmoC,EAAAD,IAAA,EACA,IAAAE,EAAA,KACA,IAAA9G,EAAA4G,EACA,gBAAAG,WAAAroC,GACA,GAAAA,EAAA,GAAAA,EAAAmoC,EACA,OAAA9W,EAAArxB,GACA,GAAAshC,EAAAthC,EAAAkoC,EAAA,CACAE,EAAA/W,EAAA6W,GACA5G,EAAA,CACA,CACA,IAAA0D,EAAA/6D,EAAAP,KAAA0+D,EAAA9G,KAAAthC,GACA,GAAAshC,EAAA,EACAA,KAAA,KACA,OAAA0D,CACA,CACA,C,eCxCA,IAAAsD,EAAA1hE,EAOA0hE,EAAApgE,OAAA,SAAAqgE,YAAA7G,GACA,IAAA8G,EAAA,EACAtG,EAAA,EACA,QAAAj6D,EAAA,EAAAA,EAAAy5D,EAAAx5D,SAAAD,EAAA,CACAi6D,EAAAR,EAAAS,WAAAl6D,GACA,GAAAi6D,EAAA,IACAsG,GAAA,OACA,GAAAtG,EAAA,KACAsG,GAAA,OACA,IAAAtG,EAAA,iBAAAR,EAAAS,WAAAl6D,EAAA,qBACAA,EACAugE,GAAA,CACA,MACAA,GAAA,CACA,CACA,OAAAA,CACA,EASAF,EAAAG,KAAA,SAAAC,UAAA7G,EAAAxoD,EAAAmT,GACA,IAAAg8C,EAAAh8C,EAAAnT,EACA,GAAAmvD,EAAA,EACA,SACA,IAAA1G,EAAA,KACAjuD,EAAA,GACA5L,EAAA,EACA85D,EACA,MAAA1oD,EAAAmT,EAAA,CACAu1C,EAAAF,EAAAxoD,KACA,GAAA0oD,EAAA,IACAluD,EAAA5L,KAAA85D,OACA,GAAAA,EAAA,KAAAA,EAAA,IACAluD,EAAA5L,MAAA85D,EAAA,OAAAF,EAAAxoD,KAAA,QACA,GAAA0oD,EAAA,KAAAA,EAAA,KACAA,MAAA,QAAAF,EAAAxoD,KAAA,SAAAwoD,EAAAxoD,KAAA,OAAAwoD,EAAAxoD,KAAA,UACAxF,EAAA5L,KAAA,OAAA85D,GAAA,IACAluD,EAAA5L,KAAA,OAAA85D,EAAA,KACA,MACAluD,EAAA5L,MAAA85D,EAAA,SAAAF,EAAAxoD,KAAA,OAAAwoD,EAAAxoD,KAAA,GACA,GAAApR,EAAA,OACA65D,MAAA,KAAAj6D,KAAAqd,OAAA88C,aAAAh5D,MAAAkc,OAAArR,IACA5L,EAAA,CACA,CACA,CACA,GAAA65D,EAAA,CACA,GAAA75D,EACA65D,EAAAj6D,KAAAqd,OAAA88C,aAAAh5D,MAAAkc,OAAArR,EAAA5J,MAAA,EAAAhC,KACA,OAAA65D,EAAA7jD,KAAA,GACA,CACA,OAAAiH,OAAA88C,aAAAh5D,MAAAkc,OAAArR,EAAA5J,MAAA,EAAAhC,GACA,EASAqgE,EAAAv/D,MAAA,SAAA4/D,WAAAjH,EAAAG,EAAAP,GACA,IAAAjoD,EAAAioD,EACAsH,EACAC,EACA,QAAA5gE,EAAA,EAAAA,EAAAy5D,EAAAx5D,SAAAD,EAAA,CACA2gE,EAAAlH,EAAAS,WAAAl6D,GACA,GAAA2gE,EAAA,KACA/G,EAAAP,KAAAsH,CACA,SAAAA,EAAA,MACA/G,EAAAP,KAAAsH,GAAA,MACA/G,EAAAP,KAAAsH,EAAA,MACA,UAAAA,EAAA,kBAAAC,EAAAnH,EAAAS,WAAAl6D,EAAA,oBACA2gE,EAAA,QAAAA,EAAA,YAAAC,EAAA,QACA5gE,EACA45D,EAAAP,KAAAsH,GAAA,OACA/G,EAAAP,KAAAsH,GAAA,UACA/G,EAAAP,KAAAsH,GAAA,SACA/G,EAAAP,KAAAsH,EAAA,MACA,MACA/G,EAAAP,KAAAsH,GAAA,OACA/G,EAAAP,KAAAsH,GAAA,SACA/G,EAAAP,KAAAsH,EAAA,MACA,CACA,CACA,OAAAtH,EAAAjoD,CACA,C,gBCtGA/P,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAAkiE,SAEA,IAAAC,EAAAriE,EAAA,MAEA,IAAAsiE,EAAAC,uBAAAF,GAEA,IAAAG,EAAAxiE,EAAA,KAEA,IAAAyiE,EAAAF,uBAAAC,GAEA,IAAAE,EAAA1iE,EAAA,MAEA,SAAAuiE,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CA0DA,SAAAi0D,SAAAvc,GACA,MAAA6c,EAAAG,SAAAhd,GAAA,CACA,mBAAAxiD,GACA,MAAAsC,EAAAtC,EAAAy/D,MACA,MAAAC,EAAAld,EAAAvjD,MAAAsD,KAAAvC,GACA,OAAA2/D,cAAAD,EAAAp9D,EACA,CACA,CAEA,SAAA28D,EAAAM,UAAA,SAAAv/D,EAAAsC,GACA,IAAAgc,EACA,IACAA,EAAAkkC,EAAAvjD,MAAAsD,KAAAvC,EACA,OAAA9C,GACA,OAAAoF,EAAApF,EACA,CAEA,GAAAohB,YAAA5f,OAAA,YACA,OAAAihE,cAAArhD,EAAAhc,EACA,MACAA,EAAA,KAAAgc,EACA,CACA,GACA,CAEA,SAAAqhD,cAAAD,EAAAp9D,GACA,OAAAo9D,EAAAhhE,MAAAyC,IACAy+D,eAAAt9D,EAAA,KAAAnB,EAAA,IACAkE,IACAu6D,eAAAt9D,EAAA+C,iBAAAE,OAAAF,EAAAlG,SAAAkG,EAAA,IAAAE,MAAAF,GAAA,GAEA,CAEA,SAAAu6D,eAAAt9D,EAAAuG,EAAA1H,GACA,IACAmB,EAAAuG,EAAA1H,EACA,OAAAkE,IACA,EAAA+5D,EAAAG,UAAAriE,IACA,MAAAA,CAAA,GACAmI,EACA,CACA,CACAzI,EAAAC,UAAA0iE,O,iBCnHAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGA,IAAA0+D,EAAAljE,EAAA,MAEA,IAAAmjE,EAAAZ,uBAAAW,GAEA,IAAAE,EAAApjE,EAAA,MAEA,IAAAqjE,EAAAd,uBAAAa,GAEA,IAAAE,EAAAtjE,EAAA,MAEA,IAAAujE,EAAAhB,uBAAAe,GAEA,IAAAE,EAAAxjE,EAAA,MAEA,IAAAyjE,EAAAlB,uBAAAiB,GAEA,IAAAE,EAAA1jE,EAAA,MAEA,IAAA2jE,EAAApB,uBAAAmB,GAEA,IAAAhB,EAAA1iE,EAAA,MAEA,IAAA4jE,EAAArB,uBAAAG,GAEA,IAAAmB,EAAA7jE,EAAA,MAEA,IAAA8jE,EAAAvB,uBAAAsB,GAEA,SAAAtB,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAGA,SAAA41D,gBAAAC,EAAAC,EAAAt+D,GACAA,GAAA,EAAA89D,EAAAb,SAAAj9D,GACA,IAAAsE,EAAA,EACAi6D,EAAA,GACA1iE,UAAAwiE,EACAG,EAAA,MACA,GAAA3iE,IAAA,GACAmE,EAAA,KACA,CAEA,SAAAy+D,iBAAA17D,EAAAlE,GACA,GAAAkE,IAAA,OACAy7D,EAAA,IACA,CACA,GAAAA,IAAA,YACA,GAAAz7D,EAAA,CACA/C,EAAA+C,EACA,WAAAw7D,IAAA1iE,GAAAgD,IAAA6+D,EAAAT,QAAA,CACAj9D,EAAA,KACA,CACA,CAEA,KAAAsE,EAAAzI,EAAAyI,IAAA,CACAg6D,EAAAD,EAAA/5D,MAAA,EAAA05D,EAAAf,SAAAwB,kBACA,CACA,CAGA,SAAAC,cAAAL,EAAAC,EAAAt+D,GACA,SAAA49D,EAAAX,SAAAoB,EAAAzvD,SAAA0vD,EAAAt+D,EACA,CA+GA,SAAA2+D,OAAAN,EAAAC,EAAAt+D,GACA,IAAA4+D,GAAA,EAAApB,EAAAP,SAAAoB,GAAAD,gBAAAM,cACA,OAAAE,EAAAP,GAAA,EAAAJ,EAAAhB,SAAAqB,GAAAt+D,EACA,CAEAzF,EAAA,cAAA4jE,EAAAlB,SAAA0B,OAAA,GACArkE,EAAAC,UAAA0iE,O,iBCtLAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGA,IAAA++D,EAAAvjE,EAAA,MAEA,IAAAwkE,EAAAjC,uBAAAgB,GAEA,IAAAb,EAAA1iE,EAAA,MAEA,IAAA4jE,EAAArB,uBAAAG,GAEA,IAAAmB,EAAA7jE,EAAA,MAEA,IAAA8jE,EAAAvB,uBAAAsB,GAEA,SAAAtB,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAuBA,SAAAs2D,YAAAT,EAAAU,EAAAT,EAAAt+D,GACA,SAAA6+D,EAAA5B,SAAA8B,EAAA,CAAAV,GAAA,EAAAJ,EAAAhB,SAAAqB,GAAAt+D,EACA,CAEAzF,EAAA,cAAA4jE,EAAAlB,SAAA6B,YAAA,GACAxkE,EAAAC,UAAA0iE,O,iBC5CAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGA,IAAA8+D,EAAAtjE,EAAA,MAEA,IAAAujE,EAAAhB,uBAAAe,GAEA,IAAAO,EAAA7jE,EAAA,MAEA,IAAA8jE,EAAAvB,uBAAAsB,GAEA,SAAAtB,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAoBA,SAAAw2D,aAAAX,EAAAC,EAAAt+D,GACA,SAAA49D,EAAAX,SAAAoB,EAAA,EAAAC,EAAAt+D,EACA,CACAzF,EAAA,cAAA4jE,EAAAlB,SAAA+B,aAAA,GACA1kE,EAAAC,UAAA0iE,O,iBCpCAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGA,IAAAogE,EAAA5kE,EAAA,MAEA,IAAA6kE,EAAAtC,uBAAAqC,GAEA,IAAAE,EAAA9kE,EAAA,MAEA,IAAA+kE,EAAAxC,uBAAAuC,GAEA,IAAApC,EAAA1iE,EAAA,MAEA,IAAA4jE,EAAArB,uBAAAG,GAEA,IAAAmB,EAAA7jE,EAAA,MAEA,IAAA8jE,EAAAvB,uBAAAsB,GAEA,SAAAtB,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAqGA,SAAA62D,UAAAhB,EAAAC,EAAAt+D,GACA,SAAAk/D,EAAAjC,SAAAoB,GAAA,EAAAe,EAAAnC,UAAA,EAAAgB,EAAAhB,SAAAqB,IAAAt+D,EACA,CAEAzF,EAAA,cAAA4jE,EAAAlB,SAAAoC,UAAA,GACA/kE,EAAAC,UAAA0iE,O,iBC9HAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAA+kE,iBAEA,IAAA7B,EAAApjE,EAAA,MAEA,IAAAqjE,EAAAd,uBAAAa,GAEA,SAAAb,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAGA,SAAA82D,iBAAAC,EAAAR,EAAAT,EAAAt+D,GACA,IAAAg3C,EAAA,MACA,IAAAwnB,EAAA,MACA,IAAAgB,EAAA,MACA,IAAAl/D,EAAA,EACA,IAAAm/D,EAAA,EAEA,SAAAC,YAEA,GAAAp/D,GAAAy+D,GAAAS,GAAAxoB,EAAA,OAEAwoB,EAAA,KACAD,EAAAhyD,OAAAnR,MAAA,EAAAyC,QAAAm4C,KAAA2oB,MAEA,GAAAnB,GAAAxnB,EAAA,OACAwoB,EAAA,MACA,GAAAG,EAAA,CACA3oB,EAAA,KACA,GAAA12C,GAAA,GAEAN,EAAA,KACA,CACA,MACA,CACAM,IACAg+D,EAAAz/D,EAAA4gE,EAAAG,kBACAH,IACAC,WAAA,IACAG,MAAAC,YACA,CAEA,SAAAF,iBAAA78D,EAAAiZ,GAEA1b,GAAA,EACA,GAAAk+D,EAAA,OACA,GAAAz7D,EAAA,OAAA+8D,YAAA/8D,GAEA,GAAAA,IAAA,OACAi0C,EAAA,KACAwnB,EAAA,KACA,MACA,CAEA,GAAAxiD,IAAA0hD,EAAAT,SAAAjmB,GAAA12C,GAAA,GACA02C,EAAA,KAEA,OAAAh3C,EAAA,KACA,CACA0/D,WACA,CAEA,SAAAI,YAAA/8D,GACA,GAAAy7D,EAAA,OACAgB,EAAA,MACAxoB,EAAA,KACAh3C,EAAA+C,EACA,CAEA28D,WACA,CACAplE,EAAAC,UAAA0iE,O,eCxEAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAAwlE,SAGA,SAAAA,SAAAC,EAAAC,GACA,IAAAA,IAAAD,EAAAnkE,OACA,IAAAokE,EAAA,UAAAh9D,MAAA,sBACA,SAAAi9D,aAAAxiE,GACA,UAAAA,EAAAuiE,EAAA,iBACA,OAAAD,EAAArjE,MAAAsD,KAAAvC,EACA,CAEA,WAAA5B,SAAA,CAAAE,EAAA6G,KACAnF,EAAAuiE,EAAA,IAAAl9D,KAAAo9D,KACA,GAAAp9D,EAAA,OAAAF,EAAAE,GACA/G,EAAAmkE,EAAAtkE,OAAA,EAAAskE,IAAA,KAEAH,EAAArjE,MAAAsD,KAAAvC,EAAA,GAEA,CAEA,OAAAwiE,SACA,CACA5lE,EAAAC,UAAA0iE,O,eCzBAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAIA,MAAAuhE,EAAA,GACA7lE,EAAA,WAAA6lE,EACA9lE,EAAAC,UAAA0iE,O,iBCPAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGA,IAAAg/D,EAAAxjE,EAAA,MAEA,IAAAyjE,EAAAlB,uBAAAiB,GAEA,IAAAwC,EAAAhmE,EAAA,MAEA,IAAAimE,EAAA1D,uBAAAyD,GAEA,IAAAtC,EAAA1jE,EAAA,MAEA,IAAA2jE,EAAApB,uBAAAmB,GAEA,IAAAhB,EAAA1iE,EAAA,MAEA,IAAAkmE,EAAAlmE,EAAA,MAEA,IAAAmmE,EAAA5D,uBAAA2D,GAEA,IAAA9C,EAAApjE,EAAA,MAEA,IAAAqjE,EAAAd,uBAAAa,GAEA,SAAAb,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAEAjO,EAAA,WAAAwkE,GACA,CAAAv2D,EAAA81D,EAAAt+D,KACAA,GAAA,EAAA89D,EAAAb,SAAAj9D,GACA,GAAA++D,GAAA,GACA,UAAA0B,WAAA,0CACA,CACA,IAAAj4D,EAAA,CACA,OAAAxI,EAAA,KACA,CACA,MAAA+8D,EAAA2D,kBAAAl4D,GAAA,CACA,SAAAg4D,EAAAvD,SAAAz0D,EAAAu2D,EAAAT,EAAAt+D,EACA,CACA,MAAA+8D,EAAA4D,iBAAAn4D,GAAA,CACA,SAAAg4D,EAAAvD,SAAAz0D,EAAA4I,OAAAwvD,iBAAA7B,EAAAT,EAAAt+D,EACA,CACA,IAAA6gE,GAAA,EAAAP,EAAArD,SAAAz0D,GACA,IAAAwuC,EAAA,MACA,IAAAwnB,EAAA,MACA,IAAAl+D,EAAA,EACA,IAAAwgE,EAAA,MAEA,SAAAlB,iBAAA78D,EAAAlE,GACA,GAAA2/D,EAAA,OACAl+D,GAAA,EACA,GAAAyC,EAAA,CACAi0C,EAAA,KACAh3C,EAAA+C,EACA,SAAAA,IAAA,OACAi0C,EAAA,KACAwnB,EAAA,IACA,SAAA3/D,IAAA6+D,EAAAT,SAAAjmB,GAAA12C,GAAA,GACA02C,EAAA,KACA,OAAAh3C,EAAA,KACA,UAAA8gE,EAAA,CACApB,WACA,CACA,CAEA,SAAAA,YACAoB,EAAA,KACA,MAAAxgE,EAAAy+D,IAAA/nB,EAAA,CACA,IAAA+pB,EAAAF,IACA,GAAAE,IAAA,MACA/pB,EAAA,KACA,GAAA12C,GAAA,GACAN,EAAA,KACA,CACA,MACA,CACAM,GAAA,EACAg+D,EAAAyC,EAAAliE,MAAAkiE,EAAA3jE,KAAA,EAAA4gE,EAAAf,SAAA2C,kBACA,CACAkB,EAAA,KACA,CAEApB,WAAA,EAIAplE,EAAAC,UAAA0iE,O,eCvFAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGAtE,EAAA,oBAAA8jE,GACA,OAAAA,EAAAjtD,OAAA4vD,WAAA3C,EAAAjtD,OAAA4vD,WACA,EAEA1mE,EAAAC,UAAA0iE,O,eCRAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGAtE,EAAA,oBAAAE,GACA,mBAAAiD,GACA,IAAAsC,EAAAtC,EAAAy/D,MACA,OAAA1iE,EAAA4C,KAAA4C,KAAAvC,EAAAsC,EACA,CACA,EAEA1F,EAAAC,UAAA0iE,O,eCXAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAA0mE,YACA,SAAAA,YAAApiE,GACA,OAAAA,YAAAhD,SAAA,UAAAgD,EAAAhD,QAAA,GAAAgD,EAAAhD,OAAA,KACA,CACAvB,EAAAC,UAAA0iE,O,iBCPAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAA2mE,eAEA,IAAA3D,EAAAljE,EAAA,MAEA,IAAAmjE,EAAAZ,uBAAAW,GAEA,IAAA4D,EAAA9mE,EAAA,MAEA,IAAA+mE,EAAAxE,uBAAAuE,GAEA,SAAAvE,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAEA,SAAA64D,oBAAAhD,GACA,IAAAziE,GAAA,EACA,IAAAugE,EAAAkC,EAAAxiE,OACA,gBAAA0R,OACA,QAAA3R,EAAAugE,EAAA,CAAAt9D,MAAAw/D,EAAAziE,GAAAwB,IAAAxB,GAAA,IACA,CACA,CAEA,SAAA0lE,qBAAAN,GACA,IAAAplE,GAAA,EACA,gBAAA2R,OACA,IAAAg0D,EAAAP,EAAAzzD,OACA,GAAAg0D,EAAAvqB,KAAA,YACAp7C,IACA,OAAAiD,MAAA0iE,EAAA1iE,MAAAzB,IAAAxB,EACA,CACA,CAEA,SAAA4lE,qBAAAh5D,GACA,IAAAi5D,EAAAj5D,EAAAvL,OAAAmG,KAAAoF,GAAA,GACA,IAAA5M,GAAA,EACA,IAAAugE,EAAAsF,EAAA5lE,OACA,gBAAA0R,OACA,IAAAnQ,EAAAqkE,IAAA7lE,GACA,GAAAwB,IAAA,aACA,OAAAmQ,MACA,CACA,OAAA3R,EAAAugE,EAAA,CAAAt9D,MAAA2J,EAAApL,UAAA,IACA,CACA,CAEA,SAAA8jE,eAAA7C,GACA,MAAAb,EAAAP,SAAAoB,GAAA,CACA,OAAAgD,oBAAAhD,EACA,CAEA,IAAA2C,GAAA,EAAAI,EAAAnE,SAAAoB,GACA,OAAA2C,EAAAM,qBAAAN,GAAAQ,qBAAAnD,EACA,CACA/jE,EAAAC,UAAA0iE,O,eCtDAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAA+kB,KACA,SAAAA,KAAA7kB,GACA,SAAAinE,WAAAhkE,GACA,GAAAjD,IAAA,YACA,IAAAknE,EAAAlnE,EACAA,EAAA,KACAknE,EAAAhlE,MAAAsD,KAAAvC,EACA,CACAT,OAAAwJ,OAAAi7D,QAAAjnE,GACA,OAAAinE,OACA,CACApnE,EAAAC,UAAA0iE,O,eCdAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAAqnE,SACA,SAAAA,SAAAnnE,GACA,mBAAAiD,GACA,GAAAjD,IAAA,eAAAwI,MAAA,gCACA,IAAA0+D,EAAAlnE,EACAA,EAAA,KACAknE,EAAAhlE,MAAAsD,KAAAvC,EACA,CACA,CACApD,EAAAC,UAAA0iE,O,iBCZAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAGA,IAAA0+D,EAAAljE,EAAA,MAEA,IAAAmjE,EAAAZ,uBAAAW,GAEA,IAAAR,EAAA1iE,EAAA,MAEA,IAAA4jE,EAAArB,uBAAAG,GAEA,IAAAmB,EAAA7jE,EAAA,MAEA,IAAA8jE,EAAAvB,uBAAAsB,GAEA,SAAAtB,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAEAjO,EAAA,cAAA4jE,EAAAlB,UAAA,CAAA4E,EAAAC,EAAA9hE,KACA,IAAA+hE,GAAA,EAAAvE,EAAAP,SAAA6E,GAAA,MAEAD,EAAAC,GAAA,CAAAE,EAAA5kE,EAAA6kE,MACA,EAAAhE,EAAAhB,SAAA+E,EAAA,GAAAj/D,KAAAiZ,KACA,GAAAA,EAAAngB,OAAA,IACAmgB,IACA,CACA+lD,EAAA3kE,GAAA4e,EACAimD,EAAAl/D,EAAA,GACA,IACAA,GAAA/C,EAAA+C,EAAAg/D,IAAA,GACA,GACAznE,EAAAC,UAAA0iE,O,cC/BAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA2nE,kBACA3nE,EAAA4nE,UAGA,IAAAC,EAAA7nE,EAAA6nE,yBAAAC,iBAAA,YAAAA,eACA,IAAAC,EAAA/nE,EAAA+nE,uBAAA9vD,eAAA,YAAAA,aACA,IAAA+vD,EAAAhoE,EAAAgoE,mBAAAznE,UAAA,iBAAAA,QAAAuuB,WAAA,WAEA,SAAA64C,SAAAznE,GACAoG,WAAApG,EAAA,EACA,CAEA,SAAA0nE,KAAAK,GACA,OAAA/nE,KAAAiD,IAAA8kE,GAAA,IAAA/nE,KAAAiD,IACA,CAEA,IAAA+kE,EAEA,GAAAL,EAAA,CACAK,EAAAJ,cACA,SAAAC,EAAA,CACAG,EAAAjwD,YACA,SAAA+vD,EAAA,CACAE,EAAA3nE,QAAAuuB,QACA,MACAo5C,EAAAP,QACA,CAEA3nE,EAAA,WAAA4nE,KAAAM,E,eC/BAxlE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAA4kE,cACA,SAAAA,cAAAb,GACA,OAAAz/D,EAAAyF,EAAAtE,IAAAs+D,EAAAz/D,EAAAmB,EACA,CACA1F,EAAAC,UAAA0iE,O,iBCPAhgE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAAomE,gBAAApmE,EAAAmmE,iBAAAnmE,EAAA2iE,QAAA34D,UAEA,IAAAm+D,EAAAroE,EAAA,KAEA,IAAAsoE,EAAA/F,uBAAA8F,GAEA,SAAA9F,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAEA,SAAA00D,QAAAziE,GACA,OAAAA,EAAA2W,OAAAwxD,eAAA,eACA,CAEA,SAAAlC,iBAAAjmE,GACA,OAAAA,EAAA2W,OAAAwxD,eAAA,gBACA,CAEA,SAAAjC,gBAAAn4D,GACA,cAAAA,EAAA4I,OAAAwvD,iBAAA,UACA,CAEA,SAAAiC,UAAA7C,GACA,UAAAA,IAAA,qBAAA/8D,MAAA,uBACA,OAAAi6D,QAAA8C,IAAA,EAAA2C,EAAA1F,SAAA+C,IACA,CAEAzlE,EAAA,WAAAsoE,UACAtoE,EAAA2iE,gBACA3iE,EAAAmmE,kCACAnmE,EAAAomE,+B,iBC/BA1jE,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA,WAAAuoE,OAEA,IAAAC,EAAA1oE,EAAA,MAEA,IAAA2oE,EAAApG,uBAAAmG,GAEA,IAAAE,EAAA5oE,EAAA,MAEA,IAAA6oE,EAAAtG,uBAAAqG,GAEA,SAAArG,uBAAAp0D,GAAA,OAAAA,KAAAw0D,WAAAx0D,EAAA,CAAAy0D,QAAAz0D,EAAA,CAuKA,SAAAs6D,OAAAhB,EAAA9hE,GACA,SAAAgjE,EAAA/F,SAAAiG,EAAAjG,QAAA6E,EAAA9hE,EACA,CACA1F,EAAAC,UAAA0iE,O,iBCxLA,IAAAkG,EAAA9oE,EAAA,MAMA,IAAA+oE,EAAA,GACA,QAAAhmE,KAAA+lE,EAAA,CACA,GAAAA,EAAAhmE,eAAAC,GAAA,CACAgmE,EAAAD,EAAA/lE,KACA,CACA,CAEA,IAAAimE,EAAA/oE,EAAAC,QAAA,CACA+oE,IAAA,CAAAC,SAAA,EAAAC,OAAA,OACAC,IAAA,CAAAF,SAAA,EAAAC,OAAA,OACAE,IAAA,CAAAH,SAAA,EAAAC,OAAA,OACAG,IAAA,CAAAJ,SAAA,EAAAC,OAAA,OACAI,KAAA,CAAAL,SAAA,EAAAC,OAAA,QACAK,IAAA,CAAAN,SAAA,EAAAC,OAAA,OACAM,IAAA,CAAAP,SAAA,EAAAC,OAAA,OACAO,IAAA,CAAAR,SAAA,EAAAC,OAAA,OACAQ,IAAA,CAAAT,SAAA,EAAAC,OAAA,SACAS,QAAA,CAAAV,SAAA,EAAAC,OAAA,aACAU,OAAA,CAAAX,SAAA,EAAAC,OAAA,YACAW,QAAA,CAAAZ,SAAA,EAAAC,OAAA,aACAY,IAAA,CAAAb,SAAA,EAAAC,OAAA,eACAa,MAAA,CAAAd,SAAA,EAAAC,OAAA,qBACAc,KAAA,CAAAf,SAAA,EAAAC,OAAA,WAIA,QAAAe,KAAAlB,EAAA,CACA,GAAAA,EAAAlmE,eAAAonE,GAAA,CACA,kBAAAlB,EAAAkB,IAAA,CACA,UAAAthE,MAAA,8BAAAshE,EACA,CAEA,gBAAAlB,EAAAkB,IAAA,CACA,UAAAthE,MAAA,oCAAAshE,EACA,CAEA,GAAAlB,EAAAkB,GAAAf,OAAA3nE,SAAAwnE,EAAAkB,GAAAhB,SAAA,CACA,UAAAtgE,MAAA,sCAAAshE,EACA,CAEA,IAAAhB,EAAAF,EAAAkB,GAAAhB,SACA,IAAAC,EAAAH,EAAAkB,GAAAf,cACAH,EAAAkB,GAAAhB,gBACAF,EAAAkB,GAAAf,OACAvmE,OAAA2B,eAAAykE,EAAAkB,GAAA,YAAA1lE,MAAA0kE,IACAtmE,OAAA2B,eAAAykE,EAAAkB,GAAA,UAAA1lE,MAAA2kE,GACA,CACA,CAEAH,EAAAC,IAAAG,IAAA,SAAAH,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAmB,EAAAnB,EAAA,OACA,IAAA9uC,EAAA8uC,EAAA,OACA,IAAA3jE,EAAAE,KAAAF,IAAA6kE,EAAAC,EAAAjwC,GACA,IAAA50B,EAAAC,KAAAD,IAAA4kE,EAAAC,EAAAjwC,GACA,IAAAkwC,EAAA9kE,EAAAD,EACA,IAAAglE,EACA,IAAAC,EACA,IAAAC,EAEA,GAAAjlE,IAAAD,EAAA,CACAglE,EAAA,CACA,SAAAH,IAAA5kE,EAAA,CACA+kE,GAAAF,EAAAjwC,GAAAkwC,CACA,SAAAD,IAAA7kE,EAAA,CACA+kE,EAAA,GAAAnwC,EAAAgwC,GAAAE,CACA,SAAAlwC,IAAA50B,EAAA,CACA+kE,EAAA,GAAAH,EAAAC,GAAAC,CACA,CAEAC,EAAA9kE,KAAAF,IAAAglE,EAAA,QAEA,GAAAA,EAAA,GACAA,GAAA,GACA,CAEAE,GAAAllE,EAAAC,GAAA,EAEA,GAAAA,IAAAD,EAAA,CACAilE,EAAA,CACA,SAAAC,GAAA,IACAD,EAAAF,GAAA9kE,EAAAD,EACA,MACAilE,EAAAF,GAAA,EAAA9kE,EAAAD,EACA,CAEA,OAAAglE,EAAAC,EAAA,IAAAC,EAAA,IACA,EAEAxB,EAAAC,IAAAI,IAAA,SAAAJ,GACA,IAAAwB,EACA,IAAAC,EACA,IAAAC,EACA,IAAAL,EACA,IAAAC,EAEA,IAAAJ,EAAAlB,EAAA,OACA,IAAAmB,EAAAnB,EAAA,OACA,IAAA9uC,EAAA8uC,EAAA,OACA,IAAA7hC,EAAA5hC,KAAAD,IAAA4kE,EAAAC,EAAAjwC,GACA,IAAAywC,EAAAxjC,EAAA5hC,KAAAF,IAAA6kE,EAAAC,EAAAjwC,GACA,IAAA0wC,MAAA,SAAArP,GACA,OAAAp0B,EAAAo0B,GAAA,EAAAoP,EAAA,GACA,EAEA,GAAAA,IAAA,GACAN,EAAAC,EAAA,CACA,MACAA,EAAAK,EAAAxjC,EACAqjC,EAAAI,MAAAV,GACAO,EAAAG,MAAAT,GACAO,EAAAE,MAAA1wC,GAEA,GAAAgwC,IAAA/iC,EAAA,CACAkjC,EAAAK,EAAAD,CACA,SAAAN,IAAAhjC,EAAA,CACAkjC,EAAA,IAAAG,EAAAE,CACA,SAAAxwC,IAAAiN,EAAA,CACAkjC,EAAA,IAAAI,EAAAD,CACA,CACA,GAAAH,EAAA,GACAA,GAAA,CACA,SAAAA,EAAA,GACAA,GAAA,CACA,CACA,CAEA,OACAA,EAAA,IACAC,EAAA,IACAnjC,EAAA,IAEA,EAEA4hC,EAAAC,IAAAK,IAAA,SAAAL,GACA,IAAAkB,EAAAlB,EAAA,GACA,IAAAmB,EAAAnB,EAAA,GACA,IAAA9uC,EAAA8uC,EAAA,GACA,IAAAqB,EAAAtB,EAAAC,IAAAG,IAAAH,GAAA,GACA,IAAA6B,EAAA,MAAAtlE,KAAAF,IAAA6kE,EAAA3kE,KAAAF,IAAA8kE,EAAAjwC,IAEAA,EAAA,QAAA30B,KAAAD,IAAA4kE,EAAA3kE,KAAAD,IAAA6kE,EAAAjwC,IAEA,OAAAmwC,EAAAQ,EAAA,IAAA3wC,EAAA,IACA,EAEA6uC,EAAAC,IAAAM,KAAA,SAAAN,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAmB,EAAAnB,EAAA,OACA,IAAA9uC,EAAA8uC,EAAA,OACA,IAAAzN,EACA,IAAAjkB,EACA,IAAAwzB,EACA,IAAAC,EAEAA,EAAAxlE,KAAAF,IAAA,EAAA6kE,EAAA,EAAAC,EAAA,EAAAjwC,GACAqhC,GAAA,EAAA2O,EAAAa,IAAA,EAAAA,IAAA,EACAzzB,GAAA,EAAA6yB,EAAAY,IAAA,EAAAA,IAAA,EACAD,GAAA,EAAA5wC,EAAA6wC,IAAA,EAAAA,IAAA,EAEA,OAAAxP,EAAA,IAAAjkB,EAAA,IAAAwzB,EAAA,IAAAC,EAAA,IACA,EAKA,SAAAC,oBAAAz9B,EAAAu9B,GACA,OACAvlE,KAAA85D,IAAA9xB,EAAA,GAAAu9B,EAAA,MACAvlE,KAAA85D,IAAA9xB,EAAA,GAAAu9B,EAAA,MACAvlE,KAAA85D,IAAA9xB,EAAA,GAAAu9B,EAAA,KAEA,CAEA/B,EAAAC,IAAAW,QAAA,SAAAX,GACA,IAAAiC,EAAAnC,EAAAE,GACA,GAAAiC,EAAA,CACA,OAAAA,CACA,CAEA,IAAAC,EAAA52D,SACA,IAAA62D,EAEA,QAAAxB,KAAAd,EAAA,CACA,GAAAA,EAAAhmE,eAAA8mE,GAAA,CACA,IAAAplE,EAAAskE,EAAAc,GAGA,IAAAyB,EAAAJ,oBAAAhC,EAAAzkE,GAGA,GAAA6mE,EAAAF,EAAA,CACAA,EAAAE,EACAD,EAAAxB,CACA,CACA,CACA,CAEA,OAAAwB,CACA,EAEApC,EAAAY,QAAAX,IAAA,SAAAW,GACA,OAAAd,EAAAc,EACA,EAEAZ,EAAAC,IAAAO,IAAA,SAAAP,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAmB,EAAAnB,EAAA,OACA,IAAA9uC,EAAA8uC,EAAA,OAGAkB,IAAA,OAAA3kE,KAAA85D,KAAA6K,EAAA,iBAAAA,EAAA,MACAC,IAAA,OAAA5kE,KAAA85D,KAAA8K,EAAA,iBAAAA,EAAA,MACAjwC,IAAA,OAAA30B,KAAA85D,KAAAnlC,EAAA,iBAAAA,EAAA,MAEA,IAAAqT,EAAA28B,EAAA,MAAAC,EAAA,MAAAjwC,EAAA,MACA,IAAA4wC,EAAAZ,EAAA,MAAAC,EAAA,MAAAjwC,EAAA,MACA,IAAAmxC,EAAAnB,EAAA,MAAAC,EAAA,MAAAjwC,EAAA,MAEA,OAAAqT,EAAA,IAAAu9B,EAAA,IAAAO,EAAA,IACA,EAEAtC,EAAAC,IAAAQ,IAAA,SAAAR,GACA,IAAAO,EAAAR,EAAAC,IAAAO,IAAAP,GACA,IAAAz7B,EAAAg8B,EAAA,GACA,IAAAuB,EAAAvB,EAAA,GACA,IAAA8B,EAAA9B,EAAA,GACA,IAAAgB,EACA,IAAAtwC,EACA,IAAAC,EAEAqT,GAAA,OACAu9B,GAAA,IACAO,GAAA,QAEA99B,IAAA,QAAAhoC,KAAA85D,IAAA9xB,EAAA,WAAAA,EAAA,OACAu9B,IAAA,QAAAvlE,KAAA85D,IAAAyL,EAAA,WAAAA,EAAA,OACAO,IAAA,QAAA9lE,KAAA85D,IAAAgM,EAAA,WAAAA,EAAA,OAEAd,EAAA,IAAAO,EAAA,GACA7wC,EAAA,KAAAsT,EAAAu9B,GACA5wC,EAAA,KAAA4wC,EAAAO,GAEA,OAAAd,EAAAtwC,EAAAC,EACA,EAEA6uC,EAAAI,IAAAH,IAAA,SAAAG,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAmB,EAAAnB,EAAA,OACA,IAAAoB,EAAApB,EAAA,OACA,IAAAmC,EACA,IAAAC,EACA,IAAAC,EACA,IAAAxC,EACA,IAAAlhC,EAEA,GAAAwiC,IAAA,GACAxiC,EAAAyiC,EAAA,IACA,OAAAziC,MACA,CAEA,GAAAyiC,EAAA,IACAgB,EAAAhB,GAAA,EAAAD,EACA,MACAiB,EAAAhB,EAAAD,EAAAC,EAAAD,CACA,CAEAgB,EAAA,EAAAf,EAAAgB,EAEAvC,EAAA,QACA,QAAA1nE,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACAkqE,EAAAnB,EAAA,MAAA/oE,EAAA,GACA,GAAAkqE,EAAA,GACAA,GACA,CACA,GAAAA,EAAA,GACAA,GACA,CAEA,KAAAA,EAAA,GACA1jC,EAAAwjC,GAAAC,EAAAD,GAAA,EAAAE,CACA,WAAAA,EAAA,GACA1jC,EAAAyjC,CACA,WAAAC,EAAA,GACA1jC,EAAAwjC,GAAAC,EAAAD,IAAA,IAAAE,GAAA,CACA,MACA1jC,EAAAwjC,CACA,CAEAtC,EAAA1nE,GAAAwmC,EAAA,GACA,CAEA,OAAAkhC,CACA,EAEAD,EAAAI,IAAAC,IAAA,SAAAD,GACA,IAAAkB,EAAAlB,EAAA,GACA,IAAAmB,EAAAnB,EAAA,OACA,IAAAoB,EAAApB,EAAA,OACA,IAAAsC,EAAAnB,EACA,IAAAoB,EAAAnmE,KAAAD,IAAAilE,EAAA,KACA,IAAAoB,EACA,IAAAxkC,EAEAojC,GAAA,EACAD,GAAAC,GAAA,EAAAA,EAAA,EAAAA,EACAkB,GAAAC,GAAA,EAAAA,EAAA,EAAAA,EACAvkC,GAAAojC,EAAAD,GAAA,EACAqB,EAAApB,IAAA,IAAAkB,GAAAC,EAAAD,GAAA,EAAAnB,GAAAC,EAAAD,GAEA,OAAAD,EAAAsB,EAAA,IAAAxkC,EAAA,IACA,EAEA4hC,EAAAK,IAAAJ,IAAA,SAAAI,GACA,IAAAiB,EAAAjB,EAAA,MACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAjiC,EAAAiiC,EAAA,OACA,IAAAvI,EAAAt7D,KAAA2mB,MAAAm+C,GAAA,EAEA,IAAAhuB,EAAAguB,EAAA9kE,KAAA2mB,MAAAm+C,GACA,IAAA1tB,EAAA,IAAAxV,GAAA,EAAAmjC,GACA,IAAAsB,EAAA,IAAAzkC,GAAA,EAAAmjC,EAAAjuB,GACA,IAAA+e,EAAA,IAAAj0B,GAAA,EAAAmjC,GAAA,EAAAjuB,IACAlV,GAAA,IAEA,OAAA05B,GACA,OACA,OAAA15B,EAAAi0B,EAAAze,GACA,OACA,OAAAivB,EAAAzkC,EAAAwV,GACA,OACA,OAAAA,EAAAxV,EAAAi0B,GACA,OACA,OAAAze,EAAAivB,EAAAzkC,GACA,OACA,OAAAi0B,EAAAze,EAAAxV,GACA,OACA,OAAAA,EAAAwV,EAAAivB,GAEA,EAEA7C,EAAAK,IAAAD,IAAA,SAAAC,GACA,IAAAiB,EAAAjB,EAAA,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAjiC,EAAAiiC,EAAA,OACA,IAAAyC,EAAAtmE,KAAAD,IAAA6hC,EAAA,KACA,IAAAukC,EACA,IAAAI,EACA,IAAAvB,EAEAA,GAAA,EAAAD,GAAAnjC,EACAukC,GAAA,EAAApB,GAAAuB,EACAC,EAAAxB,EAAAuB,EACAC,GAAAJ,GAAA,EAAAA,EAAA,EAAAA,EACAI,KAAA,EACAvB,GAAA,EAEA,OAAAF,EAAAyB,EAAA,IAAAvB,EAAA,IACA,EAGAxB,EAAAM,IAAAL,IAAA,SAAAK,GACA,IAAAgB,EAAAhB,EAAA,OACA,IAAA0C,EAAA1C,EAAA,OACA,IAAA2C,EAAA3C,EAAA,OACA,IAAA4C,EAAAF,EAAAC,EACA,IAAA1qE,EACA,IAAA6lC,EACA,IAAAkV,EACA,IAAA7E,EAGA,GAAAy0B,EAAA,GACAF,GAAAE,EACAD,GAAAC,CACA,CAEA3qE,EAAAiE,KAAA2mB,MAAA,EAAAm+C,GACAljC,EAAA,EAAA6kC,EACA3vB,EAAA,EAAAguB,EAAA/oE,EAEA,IAAAA,EAAA,QACA+6C,EAAA,EAAAA,CACA,CAEA7E,EAAAu0B,EAAA1vB,GAAAlV,EAAA4kC,GAEA,IAAA7B,EACA,IAAAC,EACA,IAAAjwC,EACA,OAAA54B,GACA,QACA,OACA,OAAA4oE,EAAA/iC,EAAAgjC,EAAA3yB,EAAAtd,EAAA6xC,EAAA,MACA,OAAA7B,EAAA1yB,EAAA2yB,EAAAhjC,EAAAjN,EAAA6xC,EAAA,MACA,OAAA7B,EAAA6B,EAAA5B,EAAAhjC,EAAAjN,EAAAsd,EAAA,MACA,OAAA0yB,EAAA6B,EAAA5B,EAAA3yB,EAAAtd,EAAAiN,EAAA,MACA,OAAA+iC,EAAA1yB,EAAA2yB,EAAA4B,EAAA7xC,EAAAiN,EAAA,MACA,OAAA+iC,EAAA/iC,EAAAgjC,EAAA4B,EAAA7xC,EAAAsd,EAAA,MAGA,OAAA0yB,EAAA,IAAAC,EAAA,IAAAjwC,EAAA,IACA,EAEA6uC,EAAAO,KAAAN,IAAA,SAAAM,GACA,IAAA/N,EAAA+N,EAAA,OACA,IAAAhyB,EAAAgyB,EAAA,OACA,IAAAwB,EAAAxB,EAAA,OACA,IAAAyB,EAAAzB,EAAA,OACA,IAAAY,EACA,IAAAC,EACA,IAAAjwC,EAEAgwC,EAAA,EAAA3kE,KAAAF,IAAA,EAAAk2D,GAAA,EAAAwP,MACAZ,EAAA,EAAA5kE,KAAAF,IAAA,EAAAiyC,GAAA,EAAAyzB,MACA7wC,EAAA,EAAA30B,KAAAF,IAAA,EAAAylE,GAAA,EAAAC,MAEA,OAAAb,EAAA,IAAAC,EAAA,IAAAjwC,EAAA,IACA,EAEA6uC,EAAAQ,IAAAP,IAAA,SAAAO,GACA,IAAAh8B,EAAAg8B,EAAA,OACA,IAAAuB,EAAAvB,EAAA,OACA,IAAA8B,EAAA9B,EAAA,OACA,IAAAW,EACA,IAAAC,EACA,IAAAjwC,EAEAgwC,EAAA38B,EAAA,OAAAu9B,GAAA,OAAAO,GAAA,MACAlB,EAAA58B,GAAA,MAAAu9B,EAAA,OAAAO,EAAA,MACAnxC,EAAAqT,EAAA,MAAAu9B,GAAA,KAAAO,EAAA,MAGAnB,IAAA,SACA,MAAA3kE,KAAA85D,IAAA6K,EAAA,YACAA,EAAA,MAEAC,IAAA,SACA,MAAA5kE,KAAA85D,IAAA8K,EAAA,YACAA,EAAA,MAEAjwC,IAAA,SACA,MAAA30B,KAAA85D,IAAAnlC,EAAA,YACAA,EAAA,MAEAgwC,EAAA3kE,KAAAF,IAAAE,KAAAD,IAAA,EAAA4kE,GAAA,GACAC,EAAA5kE,KAAAF,IAAAE,KAAAD,IAAA,EAAA6kE,GAAA,GACAjwC,EAAA30B,KAAAF,IAAAE,KAAAD,IAAA,EAAA40B,GAAA,GAEA,OAAAgwC,EAAA,IAAAC,EAAA,IAAAjwC,EAAA,IACA,EAEA6uC,EAAAQ,IAAAC,IAAA,SAAAD,GACA,IAAAh8B,EAAAg8B,EAAA,GACA,IAAAuB,EAAAvB,EAAA,GACA,IAAA8B,EAAA9B,EAAA,GACA,IAAAgB,EACA,IAAAtwC,EACA,IAAAC,EAEAqT,GAAA,OACAu9B,GAAA,IACAO,GAAA,QAEA99B,IAAA,QAAAhoC,KAAA85D,IAAA9xB,EAAA,WAAAA,EAAA,OACAu9B,IAAA,QAAAvlE,KAAA85D,IAAAyL,EAAA,WAAAA,EAAA,OACAO,IAAA,QAAA9lE,KAAA85D,IAAAgM,EAAA,WAAAA,EAAA,OAEAd,EAAA,IAAAO,EAAA,GACA7wC,EAAA,KAAAsT,EAAAu9B,GACA5wC,EAAA,KAAA4wC,EAAAO,GAEA,OAAAd,EAAAtwC,EAAAC,EACA,EAEA6uC,EAAAS,IAAAD,IAAA,SAAAC,GACA,IAAAe,EAAAf,EAAA,GACA,IAAAvvC,EAAAuvC,EAAA,GACA,IAAAtvC,EAAAsvC,EAAA,GACA,IAAAj8B,EACA,IAAAu9B,EACA,IAAAO,EAEAP,GAAAP,EAAA,QACAh9B,EAAAtT,EAAA,IAAA6wC,EACAO,EAAAP,EAAA5wC,EAAA,IAEA,IAAAgyC,EAAA3mE,KAAA85D,IAAAyL,EAAA,GACA,IAAAqB,EAAA5mE,KAAA85D,IAAA9xB,EAAA,GACA,IAAA6+B,EAAA7mE,KAAA85D,IAAAgM,EAAA,GACAP,EAAAoB,EAAA,QAAAA,GAAApB,EAAA,cACAv9B,EAAA4+B,EAAA,QAAAA,GAAA5+B,EAAA,cACA89B,EAAAe,EAAA,QAAAA,GAAAf,EAAA,cAEA99B,GAAA,OACAu9B,GAAA,IACAO,GAAA,QAEA,OAAA99B,EAAAu9B,EAAAO,EACA,EAEAtC,EAAAS,IAAAC,IAAA,SAAAD,GACA,IAAAe,EAAAf,EAAA,GACA,IAAAvvC,EAAAuvC,EAAA,GACA,IAAAtvC,EAAAsvC,EAAA,GACA,IAAA6C,EACA,IAAAhC,EACA,IAAA9O,EAEA8Q,EAAA9mE,KAAA+mE,MAAApyC,EAAAD,GACAowC,EAAAgC,EAAA,MAAA9mE,KAAAgnE,GAEA,GAAAlC,EAAA,GACAA,GAAA,GACA,CAEA9O,EAAAh2D,KAAAi1B,KAAAP,IAAAC,KAEA,OAAAqwC,EAAAhP,EAAA8O,EACA,EAEAtB,EAAAU,IAAAD,IAAA,SAAAC,GACA,IAAAc,EAAAd,EAAA,GACA,IAAAlO,EAAAkO,EAAA,GACA,IAAAY,EAAAZ,EAAA,GACA,IAAAxvC,EACA,IAAAC,EACA,IAAAmyC,EAEAA,EAAAhC,EAAA,MAAA9kE,KAAAgnE,GACAtyC,EAAAshC,EAAAh2D,KAAAinE,IAAAH,GACAnyC,EAAAqhC,EAAAh2D,KAAAknE,IAAAJ,GAEA,OAAA9B,EAAAtwC,EAAAC,EACA,EAEA6uC,EAAAC,IAAAY,OAAA,SAAAxmE,GACA,IAAA8mE,EAAA9mE,EAAA,GACA,IAAA+mE,EAAA/mE,EAAA,GACA,IAAA82B,EAAA92B,EAAA,GACA,IAAAmB,EAAA,KAAAjC,oBAAA,GAAAymE,EAAAC,IAAAI,IAAAhmE,GAAA,GAEAmB,EAAAgB,KAAA05D,MAAA16D,EAAA,IAEA,GAAAA,IAAA,GACA,SACA,CAEA,IAAAR,EAAA,IACAwB,KAAA05D,MAAA/kC,EAAA,QACA30B,KAAA05D,MAAAkL,EAAA,QACA5kE,KAAA05D,MAAAiL,EAAA,MAEA,GAAA3lE,IAAA,GACAR,GAAA,EACA,CAEA,OAAAA,CACA,EAEAglE,EAAAK,IAAAQ,OAAA,SAAAxmE,GAGA,OAAA2lE,EAAAC,IAAAY,OAAAb,EAAAK,IAAAJ,IAAA5lE,KAAA,GACA,EAEA2lE,EAAAC,IAAAa,QAAA,SAAAzmE,GACA,IAAA8mE,EAAA9mE,EAAA,GACA,IAAA+mE,EAAA/mE,EAAA,GACA,IAAA82B,EAAA92B,EAAA,GAIA,GAAA8mE,IAAAC,OAAAjwC,EAAA,CACA,GAAAgwC,EAAA,GACA,SACA,CAEA,GAAAA,EAAA,KACA,UACA,CAEA,OAAA3kE,KAAA05D,OAAAiL,EAAA,cACA,CAEA,IAAAnmE,EAAA,GACA,GAAAwB,KAAA05D,MAAAiL,EAAA,OACA,EAAA3kE,KAAA05D,MAAAkL,EAAA,OACA5kE,KAAA05D,MAAA/kC,EAAA,OAEA,OAAAn2B,CACA,EAEAglE,EAAAa,OAAAZ,IAAA,SAAA5lE,GACA,IAAAspE,EAAAtpE,EAAA,GAGA,GAAAspE,IAAA,GAAAA,IAAA,GACA,GAAAtpE,EAAA,IACAspE,GAAA,GACA,CAEAA,IAAA,SAEA,OAAAA,MACA,CAEA,IAAAC,MAAAvpE,EAAA,UACA,IAAA8mE,GAAAwC,EAAA,GAAAC,EAAA,IACA,IAAAxC,GAAAuC,GAAA,KAAAC,EAAA,IACA,IAAAzyC,GAAAwyC,GAAA,KAAAC,EAAA,IAEA,OAAAzC,EAAAC,EAAAjwC,EACA,EAEA6uC,EAAAc,QAAAb,IAAA,SAAA5lE,GAEA,GAAAA,GAAA,KACA,IAAAm4D,GAAAn4D,EAAA,UACA,OAAAm4D,MACA,CAEAn4D,GAAA,GAEA,IAAAwpE,EACA,IAAA1C,EAAA3kE,KAAA2mB,MAAA9oB,EAAA,UACA,IAAA+mE,EAAA5kE,KAAA2mB,OAAA0gD,EAAAxpE,EAAA,aACA,IAAA82B,EAAA0yC,EAAA,QAEA,OAAA1C,EAAAC,EAAAjwC,EACA,EAEA6uC,EAAAC,IAAAU,IAAA,SAAAtmE,GACA,IAAAypE,IAAAtnE,KAAA05D,MAAA77D,EAAA,gBACAmC,KAAA05D,MAAA77D,EAAA,cACAmC,KAAA05D,MAAA77D,EAAA,SAEA,IAAA23D,EAAA8R,EAAAhoD,SAAA,IAAA4e,cACA,eAAAjU,UAAAurC,EAAAx5D,QAAAw5D,CACA,EAEAgO,EAAAW,IAAAV,IAAA,SAAA5lE,GACA,IAAAk2C,EAAAl2C,EAAAyhB,SAAA,IAAAy0B,MAAA,4BACA,IAAAA,EAAA,CACA,aACA,CAEA,IAAAwzB,EAAAxzB,EAAA,GAEA,GAAAA,EAAA,GAAA/3C,SAAA,GACAurE,IAAAz1D,MAAA,IAAAzV,KAAA,SAAAmrE,GACA,OAAAA,GACA,IAAAz1D,KAAA,GACA,CAEA,IAAAu1D,EAAAl6B,SAAAm6B,EAAA,IACA,IAAA5C,EAAA2C,GAAA,OACA,IAAA1C,EAAA0C,GAAA,MACA,IAAA3yC,EAAA2yC,EAAA,IAEA,OAAA3C,EAAAC,EAAAjwC,EACA,EAEA6uC,EAAAC,IAAAc,IAAA,SAAAd,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAmB,EAAAnB,EAAA,OACA,IAAA9uC,EAAA8uC,EAAA,OACA,IAAA1jE,EAAAC,KAAAD,IAAAC,KAAAD,IAAA4kE,EAAAC,GAAAjwC,GACA,IAAA70B,EAAAE,KAAAF,IAAAE,KAAAF,IAAA6kE,EAAAC,GAAAjwC,GACA,IAAA8yC,EAAA1nE,EAAAD,EACA,IAAA4nE,EACA,IAAAC,EAEA,GAAAF,EAAA,GACAC,EAAA5nE,GAAA,EAAA2nE,EACA,MACAC,EAAA,CACA,CAEA,GAAAD,GAAA,GACAE,EAAA,CACA,MACA,GAAA5nE,IAAA4kE,EAAA,CACAgD,GAAA/C,EAAAjwC,GAAA8yC,EAAA,CACA,MACA,GAAA1nE,IAAA6kE,EAAA,CACA+C,EAAA,GAAAhzC,EAAAgwC,GAAA8C,CACA,MACAE,EAAA,GAAAhD,EAAAC,GAAA6C,EAAA,CACA,CAEAE,GAAA,EACAA,GAAA,EAEA,OAAAA,EAAA,IAAAF,EAAA,IAAAC,EAAA,IACA,EAEAlE,EAAAI,IAAAW,IAAA,SAAAX,GACA,IAAAmB,EAAAnB,EAAA,OACA,IAAAoB,EAAApB,EAAA,OACA,IAAA5N,EAAA,EACA,IAAAlf,EAAA,EAEA,GAAAkuB,EAAA,IACAhP,EAAA,EAAA+O,EAAAC,CACA,MACAhP,EAAA,EAAA+O,GAAA,EAAAC,EACA,CAEA,GAAAhP,EAAA,GACAlf,GAAAkuB,EAAA,GAAAhP,IAAA,EAAAA,EACA,CAEA,OAAA4N,EAAA,GAAA5N,EAAA,IAAAlf,EAAA,IACA,EAEA0sB,EAAAK,IAAAU,IAAA,SAAAV,GACA,IAAAkB,EAAAlB,EAAA,OACA,IAAAjiC,EAAAiiC,EAAA,OAEA,IAAA7N,EAAA+O,EAAAnjC,EACA,IAAAkV,EAAA,EAEA,GAAAkf,EAAA,GACAlf,GAAAlV,EAAAo0B,IAAA,EAAAA,EACA,CAEA,OAAA6N,EAAA,GAAA7N,EAAA,IAAAlf,EAAA,IACA,EAEA0sB,EAAAe,IAAAd,IAAA,SAAAc,GACA,IAAAO,EAAAP,EAAA,OACA,IAAAvO,EAAAuO,EAAA,OACA,IAAAK,EAAAL,EAAA,OAEA,GAAAvO,IAAA,GACA,OAAA4O,EAAA,IAAAA,EAAA,IAAAA,EAAA,IACA,CAEA,IAAAgD,EAAA,QACA,IAAAtM,EAAAwJ,EAAA,IACA,IAAAljC,EAAA05B,EAAA,EACA,IAAAgK,EAAA,EAAA1jC,EACA,IAAAimC,EAAA,EAEA,OAAA7nE,KAAA2mB,MAAA20C,IACA,OACAsM,EAAA,KAAAA,EAAA,GAAAhmC,EAAAgmC,EAAA,WACA,OACAA,EAAA,GAAAtC,EAAAsC,EAAA,KAAAA,EAAA,WACA,OACAA,EAAA,KAAAA,EAAA,KAAAA,EAAA,GAAAhmC,EAAA,MACA,OACAgmC,EAAA,KAAAA,EAAA,GAAAtC,EAAAsC,EAAA,WACA,OACAA,EAAA,GAAAhmC,EAAAgmC,EAAA,KAAAA,EAAA,WACA,QACAA,EAAA,KAAAA,EAAA,KAAAA,EAAA,GAAAtC,EAGAuC,GAAA,EAAA7R,GAAA4O,EAEA,QACA5O,EAAA4R,EAAA,GAAAC,GAAA,KACA7R,EAAA4R,EAAA,GAAAC,GAAA,KACA7R,EAAA4R,EAAA,GAAAC,GAAA,IAEA,EAEArE,EAAAe,IAAAV,IAAA,SAAAU,GACA,IAAAvO,EAAAuO,EAAA,OACA,IAAAK,EAAAL,EAAA,OAEA,IAAA3iC,EAAAo0B,EAAA4O,GAAA,EAAA5O,GACA,IAAAlf,EAAA,EAEA,GAAAlV,EAAA,GACAkV,EAAAkf,EAAAp0B,CACA,CAEA,OAAA2iC,EAAA,GAAAztB,EAAA,IAAAlV,EAAA,IACA,EAEA4hC,EAAAe,IAAAX,IAAA,SAAAW,GACA,IAAAvO,EAAAuO,EAAA,OACA,IAAAK,EAAAL,EAAA,OAEA,IAAAS,EAAAJ,GAAA,EAAA5O,GAAA,GAAAA,EACA,IAAA+O,EAAA,EAEA,GAAAC,EAAA,GAAAA,EAAA,IACAD,EAAA/O,GAAA,EAAAgP,EACA,MACA,GAAAA,GAAA,IAAAA,EAAA,GACAD,EAAA/O,GAAA,KAAAgP,GACA,CAEA,OAAAT,EAAA,GAAAQ,EAAA,IAAAC,EAAA,IACA,EAEAxB,EAAAe,IAAAT,IAAA,SAAAS,GACA,IAAAvO,EAAAuO,EAAA,OACA,IAAAK,EAAAL,EAAA,OACA,IAAA3iC,EAAAo0B,EAAA4O,GAAA,EAAA5O,GACA,OAAAuO,EAAA,IAAA3iC,EAAAo0B,GAAA,OAAAp0B,GAAA,IACA,EAEA4hC,EAAAM,IAAAS,IAAA,SAAAT,GACA,IAAAwB,EAAAxB,EAAA,OACA,IAAAnvC,EAAAmvC,EAAA,OACA,IAAAliC,EAAA,EAAAjN,EACA,IAAAqhC,EAAAp0B,EAAA0jC,EACA,IAAAV,EAAA,EAEA,GAAA5O,EAAA,GACA4O,GAAAhjC,EAAAo0B,IAAA,EAAAA,EACA,CAEA,OAAA8N,EAAA,GAAA9N,EAAA,IAAA4O,EAAA,IACA,EAEApB,EAAAgB,MAAAf,IAAA,SAAAe,GACA,OAAAA,EAAA,aAAAA,EAAA,aAAAA,EAAA,aACA,EAEAhB,EAAAC,IAAAe,MAAA,SAAAf,GACA,OAAAA,EAAA,aAAAA,EAAA,aAAAA,EAAA,aACA,EAEAD,EAAAiB,KAAAhB,IAAA,SAAA5lE,GACA,OAAAA,EAAA,WAAAA,EAAA,WAAAA,EAAA,WACA,EAEA2lE,EAAAiB,KAAAb,IAAAJ,EAAAiB,KAAAZ,IAAA,SAAAhmE,GACA,WAAAA,EAAA,GACA,EAEA2lE,EAAAiB,KAAAX,IAAA,SAAAW,GACA,aAAAA,EAAA,GACA,EAEAjB,EAAAiB,KAAAV,KAAA,SAAAU,GACA,aAAAA,EAAA,GACA,EAEAjB,EAAAiB,KAAAR,IAAA,SAAAQ,GACA,OAAAA,EAAA,OACA,EAEAjB,EAAAiB,KAAAN,IAAA,SAAAM,GACA,IAAAliC,EAAAviC,KAAA05D,MAAA+K,EAAA,gBACA,IAAA6C,GAAA/kC,GAAA,KAAAA,GAAA,GAAAA,EAEA,IAAAizB,EAAA8R,EAAAhoD,SAAA,IAAA4e,cACA,eAAAjU,UAAAurC,EAAAx5D,QAAAw5D,CACA,EAEAgO,EAAAC,IAAAgB,KAAA,SAAAhB,GACA,IAAAlhC,GAAAkhC,EAAA,GAAAA,EAAA,GAAAA,EAAA,MACA,OAAAlhC,EAAA,QACA,C,iBCn2BA,IAAAulC,EAAAttE,EAAA,MACA,IAAAutE,EAAAvtE,EAAA,KAEA,IAAAgpE,EAAA,GAEA,IAAAwE,EAAA5qE,OAAAmG,KAAAukE,GAEA,SAAAG,QAAArtE,GACA,IAAAstE,UAAA,SAAArqE,GACA,GAAAA,IAAA6G,WAAA7G,IAAA,MACA,OAAAA,CACA,CAEA,GAAAd,UAAAf,OAAA,GACA6B,EAAAC,MAAAT,UAAAU,MAAAP,KAAAT,UACA,CAEA,OAAAnC,EAAAiD,EACA,EAGA,kBAAAjD,EAAA,CACAstE,UAAAC,WAAAvtE,EAAAutE,UACA,CAEA,OAAAD,SACA,CAEA,SAAAE,YAAAxtE,GACA,IAAAstE,UAAA,SAAArqE,GACA,GAAAA,IAAA6G,WAAA7G,IAAA,MACA,OAAAA,CACA,CAEA,GAAAd,UAAAf,OAAA,GACA6B,EAAAC,MAAAT,UAAAU,MAAAP,KAAAT,UACA,CAEA,IAAAof,EAAAvhB,EAAAiD,GAKA,UAAAse,IAAA,UACA,QAAAmgD,EAAAngD,EAAAngB,OAAAD,EAAA,EAAAA,EAAAugE,EAAAvgE,IAAA,CACAogB,EAAApgB,GAAAiE,KAAA05D,MAAAv9C,EAAApgB,GACA,CACA,CAEA,OAAAogB,CACA,EAGA,kBAAAvhB,EAAA,CACAstE,UAAAC,WAAAvtE,EAAAutE,UACA,CAEA,OAAAD,SACA,CAEAF,EAAAvoC,SAAA,SAAA4oC,GACA7E,EAAA6E,GAAA,GAEAjrE,OAAA2B,eAAAykE,EAAA6E,GAAA,YAAArpE,MAAA8oE,EAAAO,GAAA3E,WACAtmE,OAAA2B,eAAAykE,EAAA6E,GAAA,UAAArpE,MAAA8oE,EAAAO,GAAA1E,SAEA,IAAA2E,EAAAP,EAAAM,GACA,IAAAE,EAAAnrE,OAAAmG,KAAA+kE,GAEAC,EAAA9oC,SAAA,SAAA+oC,GACA,IAAA5tE,EAAA0tE,EAAAE,GAEAhF,EAAA6E,GAAAG,GAAAJ,YAAAxtE,GACA4oE,EAAA6E,GAAAG,GAAA3tB,IAAAotB,QAAArtE,EACA,GACA,IAEAH,EAAAC,QAAA8oE,C,gBC7EA,IAAAsE,EAAAttE,EAAA,MAaA,SAAAiuE,aACA,IAAAC,EAAA,GAEA,IAAAV,EAAA5qE,OAAAmG,KAAAukE,GAEA,QAAAxL,EAAA0L,EAAAhsE,OAAAD,EAAA,EAAAA,EAAAugE,EAAAvgE,IAAA,CACA2sE,EAAAV,EAAAjsE,IAAA,CAGA8pE,UAAA,EACA72D,OAAA,KAEA,CAEA,OAAA05D,CACA,CAGA,SAAAC,UAAAN,GACA,IAAAK,EAAAD,aACA,IAAAG,EAAA,CAAAP,GAEAK,EAAAL,GAAAxC,SAAA,EAEA,MAAA+C,EAAA5sE,OAAA,CACA,IAAAskC,EAAAsoC,EAAAtL,MACA,IAAAuL,EAAAzrE,OAAAmG,KAAAukE,EAAAxnC,IAEA,QAAAg8B,EAAAuM,EAAA7sE,OAAAD,EAAA,EAAAA,EAAAugE,EAAAvgE,IAAA,CACA,IAAA+sE,EAAAD,EAAA9sE,GACA,IAAAgtE,EAAAL,EAAAI,GAEA,GAAAC,EAAAlD,YAAA,GACAkD,EAAAlD,SAAA6C,EAAApoC,GAAAulC,SAAA,EACAkD,EAAA/5D,OAAAsxB,EACAsoC,EAAAvsD,QAAAysD,EACA,CACA,CACA,CAEA,OAAAJ,CACA,CAEA,SAAAM,KAAA3pD,EAAA4pD,GACA,gBAAAprE,GACA,OAAAorE,EAAA5pD,EAAAxhB,GACA,CACA,CAEA,SAAAqrE,eAAAV,EAAAE,GACA,IAAA55D,EAAA,CAAA45D,EAAAF,GAAAx5D,OAAAw5D,GACA,IAAA5tE,EAAAktE,EAAAY,EAAAF,GAAAx5D,QAAAw5D,GAEA,IAAAW,EAAAT,EAAAF,GAAAx5D,OACA,MAAA05D,EAAAS,GAAAn6D,OAAA,CACAF,EAAAuN,QAAAqsD,EAAAS,GAAAn6D,QACApU,EAAAouE,KAAAlB,EAAAY,EAAAS,GAAAn6D,QAAAm6D,GAAAvuE,GACAuuE,EAAAT,EAAAS,GAAAn6D,MACA,CAEApU,EAAAutE,WAAAr5D,EACA,OAAAlU,CACA,CAEAH,EAAAC,QAAA,SAAA2tE,GACA,IAAAK,EAAAC,UAAAN,GACA,IAAAF,EAAA,GAEA,IAAAH,EAAA5qE,OAAAmG,KAAAmlE,GACA,QAAApM,EAAA0L,EAAAhsE,OAAAD,EAAA,EAAAA,EAAAugE,EAAAvgE,IAAA,CACA,IAAAysE,EAAAR,EAAAjsE,GACA,IAAAgtE,EAAAL,EAAAF,GAEA,GAAAO,EAAA/5D,SAAA,MAEA,QACA,CAEAm5D,EAAAK,GAAAU,eAAAV,EAAAE,EACA,CAEA,OAAAP,CACA,C,WC7FA1tE,EAAAC,QAAA,CACA0uE,UAAA,cACAC,aAAA,cACAC,KAAA,YACAC,WAAA,cACAC,MAAA,cACAC,MAAA,cACAC,OAAA,cACAC,MAAA,QACAC,eAAA,cACAC,KAAA,UACAC,WAAA,aACAC,MAAA,YACAC,UAAA,cACAC,UAAA,aACAC,WAAA,YACAC,UAAA,aACAC,MAAA,aACAC,eAAA,cACAC,SAAA,cACAC,QAAA,YACAC,KAAA,YACAC,SAAA,UACAC,SAAA,YACAC,cAAA,aACAC,SAAA,cACAC,UAAA,UACAC,SAAA,cACAC,UAAA,cACAC,YAAA,YACAC,eAAA,YACAC,WAAA,YACAC,WAAA,aACAC,QAAA,UACAC,WAAA,cACAC,aAAA,cACAC,cAAA,YACAC,cAAA,WACAC,cAAA,WACAC,cAAA,YACAC,WAAA,YACAC,SAAA,aACAC,YAAA,YACAC,QAAA,cACAC,QAAA,cACAC,WAAA,aACAC,UAAA,YACAC,YAAA,cACAC,YAAA,YACAC,QAAA,YACAC,UAAA,cACAC,WAAA,cACAC,KAAA,YACAC,UAAA,aACA/H,KAAA,cACAgI,MAAA,UACAC,YAAA,aACAC,KAAA,cACAC,SAAA,cACAC,QAAA,cACAC,UAAA,YACAC,OAAA,WACAC,MAAA,cACAC,MAAA,cACAC,SAAA,cACAC,cAAA,cACAC,UAAA,YACAC,aAAA,cACAC,UAAA,cACAC,WAAA,cACAC,UAAA,cACAC,qBAAA,cACAC,UAAA,cACAC,WAAA,cACAC,UAAA,cACAC,UAAA,cACAC,YAAA,cACAC,cAAA,aACAC,aAAA,cACAC,eAAA,cACAC,eAAA,cACAC,eAAA,cACAC,YAAA,cACAC,KAAA,UACAC,UAAA,YACAC,MAAA,cACAC,QAAA,YACAC,OAAA,UACAC,iBAAA,cACAC,WAAA,UACAC,aAAA,aACAC,aAAA,cACAC,eAAA,aACAC,gBAAA,cACAC,kBAAA,YACAC,gBAAA,aACAC,gBAAA,aACAC,aAAA,YACAC,UAAA,cACAC,UAAA,cACAC,SAAA,cACAC,YAAA,cACAC,KAAA,UACAC,QAAA,cACAC,MAAA,YACAC,UAAA,aACAC,OAAA,YACAC,UAAA,WACAC,OAAA,cACAC,cAAA,cACAC,UAAA,cACAC,cAAA,cACAC,cAAA,cACAC,WAAA,cACAC,UAAA,cACAC,KAAA,aACAC,KAAA,cACAC,KAAA,cACAC,WAAA,cACAC,OAAA,YACAC,cAAA,aACAC,IAAA,UACAC,UAAA,cACAC,UAAA,aACAC,YAAA,YACAC,OAAA,cACAC,WAAA,aACAC,SAAA,YACAC,SAAA,cACAC,OAAA,YACAC,OAAA,cACAC,QAAA,cACAC,UAAA,aACAC,UAAA,cACAC,UAAA,cACAC,KAAA,cACAC,YAAA,YACAC,UAAA,aACAC,IAAA,cACAC,KAAA,YACAC,QAAA,cACAC,OAAA,YACAC,UAAA,aACAC,OAAA,cACAC,MAAA,cACAC,MAAA,cACAC,WAAA,cACAC,OAAA,YACAC,YAAA,a,iBCrJA,IAAAC,EAAA/3E,EAAA,MACA,IAAAg4E,EAAAh4E,EAAA,MACA,IAAA8C,EAAAF,OAAAE,eAEA,IAAAm1E,EAAAr1E,OAAAzC,OAAA,MAGA,QAAAkS,KAAA0lE,EAAA,CACA,GAAAj1E,EAAAE,KAAA+0E,EAAA1lE,GAAA,CACA4lE,EAAAF,EAAA1lE,KACA,CACA,CAEA,IAAA6lE,EAAAj4E,EAAAC,QAAA,CACAuuE,GAAA,GACA9xD,IAAA,IAGAu7D,EAAAv7D,IAAA,SAAAq+C,GACA,IAAAoG,EAAApG,EAAAvrC,UAAA,KAAAqX,cACA,IAAAiB,EACA,IAAAmiC,EACA,OAAA9I,GACA,UACAr5B,EAAAmwC,EAAAv7D,IAAAysD,IAAApO,GACAkP,EAAA,MACA,MACA,UACAniC,EAAAmwC,EAAAv7D,IAAA2sD,IAAAtO,GACAkP,EAAA,MACA,MACA,QACAniC,EAAAmwC,EAAAv7D,IAAAssD,IAAAjO,GACAkP,EAAA,MACA,MAGA,IAAAniC,EAAA,CACA,WACA,CAEA,OAAAmiC,QAAA1lE,MAAAujC,EACA,EAEAmwC,EAAAv7D,IAAAssD,IAAA,SAAAjO,GACA,IAAAA,EAAA,CACA,WACA,CAEA,IAAAmd,EAAA,sBACA,IAAAxO,EAAA,kCACA,IAAAyO,EAAA,+HACA,IAAAC,EAAA,uHACA,IAAAzO,EAAA,UAEA,IAAAX,EAAA,UACA,IAAA1vB,EACA,IAAAh4C,EACA,IAAA+2E,EAEA,GAAA/+B,EAAAyhB,EAAAzhB,MAAAowB,GAAA,CACA2O,EAAA/+B,EAAA,GACAA,IAAA,GAEA,IAAAh4C,EAAA,EAAAA,EAAA,EAAAA,IAAA,CAEA,IAAAg3E,EAAAh3E,EAAA,EACA0nE,EAAA1nE,GAAAqxC,SAAA2G,EAAAh2C,MAAAg1E,IAAA,MACA,CAEA,GAAAD,EAAA,CACArP,EAAA,GAAAr2B,SAAA0lC,EAAA,OACA,CACA,SAAA/+B,EAAAyhB,EAAAzhB,MAAA4+B,GAAA,CACA5+B,IAAA,GACA++B,EAAA/+B,EAAA,GAEA,IAAAh4C,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA0nE,EAAA1nE,GAAAqxC,SAAA2G,EAAAh4C,GAAAg4C,EAAAh4C,GAAA,GACA,CAEA,GAAA+2E,EAAA,CACArP,EAAA,GAAAr2B,SAAA0lC,IAAA,OACA,CACA,SAAA/+B,EAAAyhB,EAAAzhB,MAAA6+B,GAAA,CACA,IAAA72E,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA0nE,EAAA1nE,GAAAqxC,SAAA2G,EAAAh4C,EAAA,KACA,CAEA,GAAAg4C,EAAA,IACA,GAAAA,EAAA,IACA0vB,EAAA,GAAAuP,WAAAj/B,EAAA,OACA,MACA0vB,EAAA,GAAAuP,WAAAj/B,EAAA,GACA,CACA,CACA,SAAAA,EAAAyhB,EAAAzhB,MAAA8+B,GAAA,CACA,IAAA92E,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA0nE,EAAA1nE,GAAAiE,KAAA05D,MAAAsZ,WAAAj/B,EAAAh4C,EAAA,SACA,CAEA,GAAAg4C,EAAA,IACA,GAAAA,EAAA,IACA0vB,EAAA,GAAAuP,WAAAj/B,EAAA,OACA,MACA0vB,EAAA,GAAAuP,WAAAj/B,EAAA,GACA,CACA,CACA,SAAAA,EAAAyhB,EAAAzhB,MAAAqwB,GAAA,CACA,GAAArwB,EAAA,oBACA,eACA,CAEA,IAAAz2C,EAAAE,KAAA+0E,EAAAx+B,EAAA,KACA,WACA,CAEA0vB,EAAA8O,EAAAx+B,EAAA,IACA0vB,EAAA,KAEA,OAAAA,CACA,MACA,WACA,CAEA,IAAA1nE,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA0nE,EAAA1nE,GAAAk3E,MAAAxP,EAAA1nE,GAAA,MACA,CACA0nE,EAAA,GAAAwP,MAAAxP,EAAA,QAEA,OAAAA,CACA,EAEAiP,EAAAv7D,IAAAysD,IAAA,SAAApO,GACA,IAAAA,EAAA,CACA,WACA,CAEA,IAAAoO,EAAA,+KACA,IAAA7vB,EAAAyhB,EAAAzhB,MAAA6vB,GAEA,GAAA7vB,EAAA,CACA,IAAAm/B,EAAAF,WAAAj/B,EAAA,IACA,IAAA+wB,GAAAkO,WAAAj/B,EAAA,iBACA,IAAAgxB,EAAAkO,MAAAD,WAAAj/B,EAAA,WACA,IAAAixB,EAAAiO,MAAAD,WAAAj/B,EAAA,WACA,IAAArf,EAAAu+C,MAAAhrE,MAAAirE,GAAA,EAAAA,EAAA,KAEA,OAAApO,EAAAC,EAAAC,EAAAtwC,EACA,CAEA,WACA,EAEAg+C,EAAAv7D,IAAA2sD,IAAA,SAAAtO,GACA,IAAAA,EAAA,CACA,WACA,CAEA,IAAAsO,EAAA,sKACA,IAAA/vB,EAAAyhB,EAAAzhB,MAAA+vB,GAEA,GAAA/vB,EAAA,CACA,IAAAm/B,EAAAF,WAAAj/B,EAAA,IACA,IAAA+wB,GAAAkO,WAAAj/B,EAAA,iBACA,IAAAuxB,EAAA2N,MAAAD,WAAAj/B,EAAA,WACA,IAAApf,EAAAs+C,MAAAD,WAAAj/B,EAAA,WACA,IAAArf,EAAAu+C,MAAAhrE,MAAAirE,GAAA,EAAAA,EAAA,KACA,OAAApO,EAAAQ,EAAA3wC,EAAAD,EACA,CAEA,WACA,EAEAg+C,EAAAzJ,GAAA9E,IAAA,WACA,IAAAyO,EAAAJ,EAAAz1E,WAEA,MACA,IACAo2E,UAAAP,EAAA,IACAO,UAAAP,EAAA,IACAO,UAAAP,EAAA,KACAA,EAAA,KACAO,UAAAnzE,KAAA05D,MAAAkZ,EAAA,SACA,GAEA,EAEAF,EAAAzJ,GAAAxF,IAAA,WACA,IAAAmP,EAAAJ,EAAAz1E,WAEA,OAAA61E,EAAA52E,OAAA,GAAA42E,EAAA,OACA,OAAA5yE,KAAA05D,MAAAkZ,EAAA,SAAA5yE,KAAA05D,MAAAkZ,EAAA,SAAA5yE,KAAA05D,MAAAkZ,EAAA,QACA,QAAA5yE,KAAA05D,MAAAkZ,EAAA,SAAA5yE,KAAA05D,MAAAkZ,EAAA,SAAA5yE,KAAA05D,MAAAkZ,EAAA,SAAAA,EAAA,MACA,EAEAF,EAAAzJ,GAAAxF,IAAA2P,QAAA,WACA,IAAAR,EAAAJ,EAAAz1E,WAEA,IAAA4nE,EAAA3kE,KAAA05D,MAAAkZ,EAAA,YACA,IAAAhO,EAAA5kE,KAAA05D,MAAAkZ,EAAA,YACA,IAAAj+C,EAAA30B,KAAA05D,MAAAkZ,EAAA,YAEA,OAAAA,EAAA52E,OAAA,GAAA42E,EAAA,OACA,OAAAjO,EAAA,MAAAC,EAAA,MAAAjwC,EAAA,KACA,QAAAgwC,EAAA,MAAAC,EAAA,MAAAjwC,EAAA,MAAAi+C,EAAA,MACA,EAEAF,EAAAzJ,GAAArF,IAAA,WACA,IAAAyP,EAAAb,EAAAz1E,WACA,OAAAs2E,EAAAr3E,OAAA,GAAAq3E,EAAA,OACA,OAAAA,EAAA,QAAAA,EAAA,SAAAA,EAAA,QACA,QAAAA,EAAA,QAAAA,EAAA,SAAAA,EAAA,SAAAA,EAAA,MACA,EAIAX,EAAAzJ,GAAAnF,IAAA,WACA,IAAAwP,EAAAd,EAAAz1E,WAEA,IAAA23B,EAAA,GACA,GAAA4+C,EAAAt3E,QAAA,GAAAs3E,EAAA,QACA5+C,EAAA,KAAA4+C,EAAA,EACA,CAEA,aAAAA,EAAA,QAAAA,EAAA,SAAAA,EAAA,OAAA5+C,EAAA,GACA,EAEAg+C,EAAAzJ,GAAA7E,QAAA,SAAAX,GACA,OAAAgP,EAAAhP,EAAA1lE,MAAA,KACA,EAGA,SAAAk1E,MAAAhsB,EAAAnnD,EAAAC,GACA,OAAAC,KAAAF,IAAAE,KAAAD,IAAAD,EAAAmnD,GAAAlnD,EACA,CAEA,SAAAozE,UAAAlsB,GACA,IAAAssB,EAAAvzE,KAAA05D,MAAAzS,GAAA3nC,SAAA,IAAA4e,cACA,OAAAq1C,EAAAv3E,OAAA,MAAAu3E,GACA,C,iBC/OA,IAAAhM,EAAA/sE,EAAA,MACA,IAAAgpE,EAAAhpE,EAAA,MAEA,IAAAg5E,EAAA,GAAAz1E,MAEA,IAAA01E,EAAA,CAEA,UAGA,OAGA,OAGA,IAAAC,EAAA,GACAt2E,OAAAmG,KAAAigE,GAAA/jC,SAAA,SAAAilC,GACAgP,EAAAF,EAAAh2E,KAAAgmE,EAAAkB,GAAAf,QAAA74D,OAAAiH,KAAA,KAAA2yD,CACA,IAEA,IAAAiP,EAAA,GAEA,SAAAC,MAAAjrE,EAAA+7D,GACA,KAAAtkE,gBAAAwzE,OAAA,CACA,WAAAA,MAAAjrE,EAAA+7D,EACA,CAEA,GAAAA,QAAA+O,EAAA,CACA/O,EAAA,IACA,CAEA,GAAAA,UAAAlB,GAAA,CACA,UAAApgE,MAAA,kBAAAshE,EACA,CAEA,IAAA3oE,EACA,IAAA2nE,EAEA,GAAA/6D,GAAA,MACAvI,KAAAskE,MAAA,MACAtkE,KAAA+mE,MAAA,QACA/mE,KAAAyzE,OAAA,CACA,SAAAlrE,aAAAirE,MAAA,CACAxzE,KAAAskE,MAAA/7D,EAAA+7D,MACAtkE,KAAA+mE,MAAAx+D,EAAAw+D,MAAAppE,QACAqC,KAAAyzE,OAAAlrE,EAAAkrE,MACA,gBAAAlrE,IAAA,UACA,IAAAwT,EAAAorD,EAAApwD,IAAAxO,GACA,GAAAwT,IAAA,MACA,UAAA/Y,MAAA,sCAAAuF,EACA,CAEAvI,KAAAskE,MAAAvoD,EAAAuoD,MACAhB,EAAAF,EAAApjE,KAAAskE,OAAAhB,SACAtjE,KAAA+mE,MAAAhrD,EAAAnd,MAAAjB,MAAA,EAAA2lE,GACAtjE,KAAAyzE,cAAA13D,EAAAnd,MAAA0kE,KAAA,SAAAvnD,EAAAnd,MAAA0kE,GAAA,CACA,SAAA/6D,EAAA3M,OAAA,CACAoE,KAAAskE,SAAA,MACAhB,EAAAF,EAAApjE,KAAAskE,OAAAhB,SACA,IAAAoQ,EAAAN,EAAAh2E,KAAAmL,EAAA,EAAA+6D,GACAtjE,KAAA+mE,MAAA4M,UAAAD,EAAApQ,GACAtjE,KAAAyzE,cAAAlrE,EAAA+6D,KAAA,SAAA/6D,EAAA+6D,GAAA,CACA,gBAAA/6D,IAAA,UAEAA,GAAA,SACAvI,KAAAskE,MAAA,MACAtkE,KAAA+mE,MAAA,CACAx+D,GAAA,OACAA,GAAA,MACAA,EAAA,KAEAvI,KAAAyzE,OAAA,CACA,MACAzzE,KAAAyzE,OAAA,EAEA,IAAAtwE,EAAAnG,OAAAmG,KAAAoF,GACA,aAAAA,EAAA,CACApF,EAAAqnB,OAAArnB,EAAA7H,QAAA,YACA0E,KAAAyzE,cAAAlrE,EAAAuqE,QAAA,SAAAvqE,EAAAuqE,MAAA,CACA,CAEA,IAAAc,EAAAzwE,EAAAuH,OAAAiH,KAAA,IACA,KAAAiiE,KAAAN,GAAA,CACA,UAAAtwE,MAAA,sCAAA0mB,KAAAC,UAAAphB,GACA,CAEAvI,KAAAskE,MAAAgP,EAAAM,GAEA,IAAArQ,EAAAH,EAAApjE,KAAAskE,OAAAf,OACA,IAAAwD,EAAA,GACA,IAAAprE,EAAA,EAAAA,EAAA4nE,EAAA3nE,OAAAD,IAAA,CACAorE,EAAAxrE,KAAAgN,EAAAg7D,EAAA5nE,IACA,CAEAqE,KAAA+mE,MAAA4M,UAAA5M,EACA,CAGA,GAAAwM,EAAAvzE,KAAAskE,OAAA,CACAhB,EAAAF,EAAApjE,KAAAskE,OAAAhB,SACA,IAAA3nE,EAAA,EAAAA,EAAA2nE,EAAA3nE,IAAA,CACA,IAAAmjE,EAAAyU,EAAAvzE,KAAAskE,OAAA3oE,GACA,GAAAmjE,EAAA,CACA9+D,KAAA+mE,MAAAprE,GAAAmjE,EAAA9+D,KAAA+mE,MAAAprE,GACA,CACA,CACA,CAEAqE,KAAAyzE,OAAA7zE,KAAAD,IAAA,EAAAC,KAAAF,IAAA,EAAAM,KAAAyzE,SAEA,GAAAz2E,OAAA62E,OAAA,CACA72E,OAAA62E,OAAA7zE,KACA,CACA,CAEAwzE,MAAAv2E,UAAA,CACAiiB,SAAA,WACA,OAAAlf,KAAAo1D,QACA,EAEApzB,OAAA,WACA,OAAAhiC,UAAAskE,QACA,EAEAlP,OAAA,SAAA0e,GACA,IAAAC,EAAA/zE,KAAAskE,SAAA6C,EAAA0B,GAAA7oE,UAAAqjE,MACA0Q,IAAAza,aAAAwa,IAAA,SAAAA,EAAA,GACA,IAAAr2E,EAAAs2E,EAAAN,SAAA,EAAAM,EAAAhN,MAAAgN,EAAAhN,MAAA7iE,OAAAlE,KAAAyzE,QACA,OAAAtM,EAAA0B,GAAAkL,EAAAzP,OAAA7mE,EACA,EAEAu2E,cAAA,SAAAF,GACA,IAAAC,EAAA/zE,KAAAqjE,MAAA/J,aAAAwa,IAAA,SAAAA,EAAA,GACA,IAAAr2E,EAAAs2E,EAAAN,SAAA,EAAAM,EAAAhN,MAAAgN,EAAAhN,MAAA7iE,OAAAlE,KAAAyzE,QACA,OAAAtM,EAAA0B,GAAAxF,IAAA2P,QAAAv1E,EACA,EAEAw2E,MAAA,WACA,OAAAj0E,KAAAyzE,SAAA,EAAAzzE,KAAA+mE,MAAAppE,QAAAqC,KAAA+mE,MAAA7iE,OAAAlE,KAAAyzE,OACA,EAEAS,OAAA,WACA,IAAAn4D,EAAA,GACA,IAAAunD,EAAAF,EAAApjE,KAAAskE,OAAAhB,SACA,IAAAC,EAAAH,EAAApjE,KAAAskE,OAAAf,OAEA,QAAA5nE,EAAA,EAAAA,EAAA2nE,EAAA3nE,IAAA,CACAogB,EAAAwnD,EAAA5nE,IAAAqE,KAAA+mE,MAAAprE,EACA,CAEA,GAAAqE,KAAAyzE,SAAA,GACA13D,EAAA+2D,MAAA9yE,KAAAyzE,MACA,CAEA,OAAA13D,CACA,EAEAo4D,UAAA,WACA,IAAA9Q,EAAArjE,KAAAqjE,MAAA0D,MACA1D,EAAA,QACAA,EAAA,QACAA,EAAA,QAEA,GAAArjE,KAAAyzE,SAAA,GACApQ,EAAA9nE,KAAAyE,KAAAyzE,OACA,CAEA,OAAApQ,CACA,EAEA+Q,WAAA,WACA,IAAA/Q,EAAArjE,KAAAqjE,MAAA6Q,SACA7Q,EAAAkB,GAAA,IACAlB,EAAAmB,GAAA,IACAnB,EAAA9uC,GAAA,IAEA,GAAAv0B,KAAAyzE,SAAA,GACApQ,EAAAyP,MAAA9yE,KAAAyzE,MACA,CAEA,OAAApQ,CACA,EAEA/J,MAAA,SAAAwa,GACAA,EAAAl0E,KAAAD,IAAAm0E,GAAA,KACA,WAAAN,MAAAxzE,KAAA+mE,MAAA9qE,IAAAo4E,aAAAP,IAAA5vE,OAAAlE,KAAAyzE,QAAAzzE,KAAAskE,MACA,EAEAwO,MAAA,SAAA3wC,GACA,GAAAxlC,UAAAf,OAAA,CACA,WAAA43E,MAAAxzE,KAAA+mE,MAAA7iE,OAAAtE,KAAAD,IAAA,EAAAC,KAAAF,IAAA,EAAAyiC,KAAAniC,KAAAskE,MACA,CAEA,OAAAtkE,KAAAyzE,MACA,EAGAlD,IAAA+D,OAAA,QAAAC,MAAA,MACAlI,MAAAiI,OAAA,QAAAC,MAAA,MACA9K,KAAA6K,OAAA,QAAAC,MAAA,MAEAhN,IAAA+M,OAAA,4CAAAnyC,GAAA,OAAAA,EAAA,gBAEAqyC,YAAAF,OAAA,QAAAC,MAAA,MACAE,UAAAH,OAAA,QAAAC,MAAA,MAEAG,YAAAJ,OAAA,QAAAC,MAAA,MACA31E,MAAA01E,OAAA,QAAAC,MAAA,MAEAlN,OAAAiN,OAAA,QAAAC,MAAA,MACAlQ,KAAAiQ,OAAA,QAAAC,MAAA,MAEAxC,MAAAuC,OAAA,QAAAC,MAAA,MACAI,OAAAL,OAAA,QAAAC,MAAA,MAEAnK,KAAAkK,OAAA,SAAAC,MAAA,MACAnG,QAAAkG,OAAA,SAAAC,MAAA,MACAtC,OAAAqC,OAAA,SAAAC,MAAA,MACAhL,MAAA+K,OAAA,SAAAC,MAAA,MAEA3sC,EAAA0sC,OAAA,QAAAC,MAAA,MACApP,EAAAmP,OAAA,QAAAC,MAAA,MACA7O,EAAA4O,OAAA,QAAAC,MAAA,MAEA3P,EAAA0P,OAAA,QAAAC,MAAA,MACAjgD,EAAAggD,OAAA,SACA//C,EAAA+/C,OAAA,SAEAtQ,QAAA,SAAA7hC,GACA,GAAAxlC,UAAAf,OAAA,CACA,WAAA43E,MAAArxC,EACA,CAEA,OAAAihC,EAAApjE,KAAAskE,OAAAN,QAAAhkE,KAAA+mE,MACA,EAEAhD,IAAA,SAAA5hC,GACA,GAAAxlC,UAAAf,OAAA,CACA,WAAA43E,MAAArxC,EACA,CAEA,OAAAglC,EAAA0B,GAAA9E,IAAA/jE,KAAAqjE,MAAA/J,QAAAyN,MACA,EAEA6N,UAAA,WACA,IAAAvR,EAAArjE,KAAAqjE,MAAA0D,MACA,OAAA1D,EAAA,aAAAA,EAAA,WAAAA,EAAA,MACA,EAEAwR,WAAA,WAEA,IAAAxR,EAAArjE,KAAAqjE,MAAA0D,MAEA,IAAA+N,EAAA,GACA,QAAAn5E,EAAA,EAAAA,EAAA0nE,EAAAznE,OAAAD,IAAA,CACA,IAAAo5E,EAAA1R,EAAA1nE,GAAA,IACAm5E,EAAAn5E,GAAAo5E,GAAA,OAAAA,EAAA,MAAAn1E,KAAA85D,KAAAqb,EAAA,gBACA,CAEA,YAAAD,EAAA,SAAAA,EAAA,SAAAA,EAAA,EACA,EAEAE,SAAA,SAAAC,GAEA,IAAAC,EAAAl1E,KAAA60E,aACA,IAAAM,EAAAF,EAAAJ,aAEA,GAAAK,EAAAC,EAAA,CACA,OAAAD,EAAA,MAAAC,EAAA,IACA,CAEA,OAAAA,EAAA,MAAAD,EAAA,IACA,EAEAE,MAAA,SAAAH,GACA,IAAAI,EAAAr1E,KAAAg1E,SAAAC,GACA,GAAAI,GAAA,KACA,WACA,CAEA,OAAAA,GAAA,WACA,EAEAC,OAAA,WAEA,IAAAjS,EAAArjE,KAAAqjE,MAAA0D,MACA,IAAAwO,GAAAlS,EAAA,OAAAA,EAAA,OAAAA,EAAA,YACA,OAAAkS,EAAA,GACA,EAEAC,QAAA,WACA,OAAAx1E,KAAAs1E,QACA,EAEAG,OAAA,WACA,IAAApS,EAAArjE,KAAAqjE,MACA,QAAA1nE,EAAA,EAAAA,EAAA,EAAAA,IAAA,CACA0nE,EAAA0D,MAAAprE,GAAA,IAAA0nE,EAAA0D,MAAAprE,EACA,CACA,OAAA0nE,CACA,EAEAqS,QAAA,SAAApP,GACA,IAAA9C,EAAAxjE,KAAAwjE,MACAA,EAAAuD,MAAA,IAAAvD,EAAAuD,MAAA,GAAAT,EACA,OAAA9C,CACA,EAEAmS,OAAA,SAAArP,GACA,IAAA9C,EAAAxjE,KAAAwjE,MACAA,EAAAuD,MAAA,IAAAvD,EAAAuD,MAAA,GAAAT,EACA,OAAA9C,CACA,EAEAoS,SAAA,SAAAtP,GACA,IAAA9C,EAAAxjE,KAAAwjE,MACAA,EAAAuD,MAAA,IAAAvD,EAAAuD,MAAA,GAAAT,EACA,OAAA9C,CACA,EAEAqS,WAAA,SAAAvP,GACA,IAAA9C,EAAAxjE,KAAAwjE,MACAA,EAAAuD,MAAA,IAAAvD,EAAAuD,MAAA,GAAAT,EACA,OAAA9C,CACA,EAEAsS,OAAA,SAAAxP,GACA,IAAA5C,EAAA1jE,KAAA0jE,MACAA,EAAAqD,MAAA,IAAArD,EAAAqD,MAAA,GAAAT,EACA,OAAA5C,CACA,EAEAqS,QAAA,SAAAzP,GACA,IAAA5C,EAAA1jE,KAAA0jE,MACAA,EAAAqD,MAAA,IAAArD,EAAAqD,MAAA,GAAAT,EACA,OAAA5C,CACA,EAEA4D,UAAA,WAEA,IAAAjE,EAAArjE,KAAAqjE,MAAA0D,MACA,IAAA5kC,EAAAkhC,EAAA,MAAAA,EAAA,OAAAA,EAAA,OACA,OAAAmQ,MAAAnQ,IAAAlhC,MACA,EAEA6zC,KAAA,SAAA1P,GACA,OAAAtmE,KAAA8yE,MAAA9yE,KAAAyzE,OAAAzzE,KAAAyzE,OAAAnN,EACA,EAEA2P,QAAA,SAAA3P,GACA,OAAAtmE,KAAA8yE,MAAA9yE,KAAAyzE,OAAAzzE,KAAAyzE,OAAAnN,EACA,EAEA4P,OAAA,SAAAC,GACA,IAAA3S,EAAAxjE,KAAAwjE,MACA,IAAA+D,EAAA/D,EAAAuD,MAAA,GACAQ,KAAA4O,GAAA,IACA5O,IAAA,MAAAA,IACA/D,EAAAuD,MAAA,GAAAQ,EACA,OAAA/D,CACA,EAEA4S,IAAA,SAAAC,EAAAC,GAGA,IAAAD,MAAAhT,IAAA,CACA,UAAArgE,MAAA,gFAAAqzE,EACA,CACA,IAAAE,EAAAF,EAAAhT,MACA,IAAA4R,EAAAj1E,KAAAqjE,MACA,IAAArsB,EAAAs/B,IAAAhyE,UAAA,GAAAgyE,EAEA,IAAApR,EAAA,EAAAluB,EAAA,EACA,IAAA1iB,EAAAiiD,EAAAzD,QAAAmC,EAAAnC,QAEA,IAAA0D,IAAAtR,EAAA5wC,KAAA,EAAA4wC,KAAA5wC,IAAA,EAAA4wC,EAAA5wC,IAAA,KACA,IAAAmiD,EAAA,EAAAD,EAEA,OAAAhD,MAAAnQ,IACAmT,EAAAD,EAAAhG,MAAAkG,EAAAxB,EAAA1E,MACAiG,EAAAD,EAAAlK,QAAAoK,EAAAxB,EAAA5I,QACAmK,EAAAD,EAAA9M,OAAAgN,EAAAxB,EAAAxL,OACA8M,EAAAzD,QAAA97B,EAAAi+B,EAAAnC,SAAA,EAAA97B,GACA,GAIAh6C,OAAAmG,KAAAigE,GAAA/jC,SAAA,SAAAilC,GACA,GAAA+O,EAAA/3E,QAAAgpE,MAAA,GACA,MACA,CAEA,IAAAhB,EAAAF,EAAAkB,GAAAhB,SAGAkQ,MAAAv2E,UAAAqnE,GAAA,WACA,GAAAtkE,KAAAskE,UAAA,CACA,WAAAkP,MAAAxzE,KACA,CAEA,GAAArD,UAAAf,OAAA,CACA,WAAA43E,MAAA72E,UAAA2nE,EACA,CAEA,IAAAoS,SAAA/5E,UAAA2mE,KAAA,SAAAA,EAAAtjE,KAAAyzE,OACA,WAAAD,MAAAmD,YAAAvT,EAAApjE,KAAAskE,UAAA7pB,IAAAz6C,KAAA+mE,QAAA7iE,OAAAwyE,GAAApS,EACA,EAGAkP,MAAAlP,GAAA,SAAAyC,GACA,UAAAA,IAAA,UACAA,EAAA4M,UAAAP,EAAAh2E,KAAAT,WAAA2mE,EACA,CACA,WAAAkQ,MAAAzM,EAAAzC,EACA,CACA,IAEA,SAAAsS,QAAA/vB,EAAAitB,GACA,OAAAlsE,OAAAi/C,EAAAxD,QAAAywB,GACA,CAEA,SAAAO,aAAAP,GACA,gBAAAjtB,GACA,OAAA+vB,QAAA/vB,EAAAitB,EACA,CACA,CAEA,SAAAQ,OAAAhQ,EAAA71D,EAAAooE,GACAvS,EAAA5mE,MAAAwzB,QAAAozC,KAAA,CAAAA,GAEAA,EAAAjlC,SAAA,SAAAsS,IACA4hC,EAAA5hC,KAAA4hC,EAAA5hC,GAAA,KAAAljC,GAAAooE,CACA,IAEAvS,IAAA,GAEA,gBAAAniC,GACA,IAAApmB,EAEA,GAAApf,UAAAf,OAAA,CACA,GAAAi7E,EAAA,CACA10C,EAAA00C,EAAA10C,EACA,CAEApmB,EAAA/b,KAAAskE,KACAvoD,EAAAgrD,MAAAt4D,GAAA0zB,EACA,OAAApmB,CACA,CAEAA,EAAA/b,KAAAskE,KAAAyC,MAAAt4D,GACA,GAAAooE,EAAA,CACA96D,EAAA86D,EAAA96D,EACA,CAEA,OAAAA,CACA,CACA,CAEA,SAAAw4D,MAAA50E,GACA,gBAAA6hC,GACA,OAAA5hC,KAAAD,IAAA,EAAAC,KAAAF,IAAAC,EAAA6hC,GACA,CACA,CAEA,SAAAm1C,YAAAx0C,GACA,OAAAzkC,MAAAwzB,QAAAiR,KAAA,CAAAA,EACA,CAEA,SAAAwxC,UAAAmD,EAAAl7E,GACA,QAAAD,EAAA,EAAAA,EAAAC,EAAAD,IAAA,CACA,UAAAm7E,EAAAn7E,KAAA,UACAm7E,EAAAn7E,GAAA,CACA,CACA,CAEA,OAAAm7E,CACA,CAEAz8E,EAAAC,QAAAk5E,K,iBC/dA,IAAAzM,EAAA3sE,EAAA,MACA2pE,EAAA3pE,EAAA,MAWAC,EAAAC,QAAA,SAAA2D,WAAAvD,EAAAq8E,GACA,IAAArlE,EAAAhX,EAAAgX,MAAAqlE,GAAA,KACA,IAAApzE,EAAAogE,EAAAryD,EAAA,IAEA,IAAAA,EAAA9V,OAAA,OAAA+H,EAEA,QAAAhI,EAAA,EAAAipE,EAAAlzD,EAAA9V,OAAA,EAAAD,EAAAipE,EAAAjpE,IAAA,CACAgI,EAAAojE,EAAApjE,GACAyyE,IAAArP,EAAAhD,EAAAryD,EAAA/V,EAAA,MACAi6E,SAAA,GACA7R,KACA,CAEA,OAAApgE,CACA,C,WClBAtJ,EAAAC,QAAA,SAAAH,QAAAsS,EAAAuqE,GACA,IAAAA,EAAA,aAEA,IAAAC,EAAAD,EAAAtlE,MAAA,UACA/V,EAAA,EAEA,KAAAA,EAAAs7E,EAAAr7E,OAAAD,IAAA,CACAq7E,EAAAC,EAAAt7E,GAAAi7D,QAAA,WAEA,SAAAogB,EAAAx3C,OAAA,IACA,OAAA03C,OAAA,IAAAF,EAAAG,OAAA,QAAAv2C,KAAAn0B,GAAA,CACA,YACA,CAEA,QACA,CAEA,OAAAyqE,OAAA,IAAAF,EAAA,KAAAp2C,KAAAn0B,GAAA,CACA,WACA,CACA,CAEA,YACA,C,sBCjCA,SAAA29C,EAAA9tC,GACA,KAAAA,EAAAhiB,GACA,CAEA,EAJA,CAIA0F,MAAA,SAAA1F,GAAA,aAEA,IAAA88E,EAAA,6EACA,IAAAC,EAAA,UACA,IAAAC,EAAA,SACA,IAAAC,EAAA,SACA,IAAAC,EAAA,SACA,IAAAC,EAAA,UACA,IAAAC,EAAA,gBACA,SAAAC,QAAAb,EAAAc,GACA,IAAAlE,EAAA,GACA,QAAA/3E,EAAA,EAAAugE,EAAA4a,EAAAl7E,OAAAD,EAAAugE,EAAAvgE,IAAA,CACA+3E,EAAAn4E,KAAAu7E,EAAAn7E,GAAAw7E,OAAA,EAAAS,GACA,CACA,OAAAlE,CACA,CACA,IAAAmE,YAAA,SAAAC,GAAA,gBAAAt2C,EAAAu2C,GACA,IAAAC,EAAAD,EAAAD,GAAA77E,KAAA,SAAAulC,GAAA,OAAAA,EAAAN,aAAA,IACA,IAAA78B,EAAA2zE,EAAA18E,QAAAkmC,EAAAN,eACA,GAAA78B,GAAA,GACA,OAAAA,CACA,CACA,WACA,GACA,SAAAmC,OAAAyxE,GACA,IAAAx6E,EAAA,GACA,QAAAy6E,EAAA,EAAAA,EAAAv7E,UAAAf,OAAAs8E,IAAA,CACAz6E,EAAAy6E,EAAA,GAAAv7E,UAAAu7E,EACA,CACA,QAAAl3E,EAAA,EAAAm3E,EAAA16E,EAAAuD,EAAAm3E,EAAAv8E,OAAAoF,IAAA,CACA,IAAAuH,EAAA4vE,EAAAn3E,GACA,QAAA7D,KAAAoL,EAAA,CAEA0vE,EAAA96E,GAAAoL,EAAApL,EACA,CACA,CACA,OAAA86E,CACA,CACA,IAAAG,EAAA,CACA,SACA,SACA,UACA,YACA,WACA,SACA,YAEA,IAAAC,EAAA,CACA,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEA,IAAAC,EAAAX,QAAAU,EAAA,GACA,IAAAE,EAAAZ,QAAAS,EAAA,GACA,IAAAI,EAAA,CACAD,gBACAH,WACAE,kBACAD,aACAI,KAAA,YACAC,KAAA,SAAAC,GACA,OAAAA,EACA,sBAAAA,EAAA,KACA,GACAA,IAAA,aAAAA,EAAA,GACA,GAEA,IAAAC,EAAApyE,OAAA,GAAAgyE,GACA,IAAAK,kBAAA,SAAAd,GACA,OAAAa,EAAApyE,OAAAoyE,EAAAb,EACA,EACA,IAAAe,YAAA,SAAA3F,GACA,OAAAA,EAAAvc,QAAA,2BACA,EACA,IAAAmiB,IAAA,SAAA52C,EAAA+5B,GACA,GAAAA,SAAA,GAAAA,EAAA,EACA/5B,EAAAvpB,OAAAupB,GACA,MAAAA,EAAAvmC,OAAAsgE,EAAA,CACA/5B,EAAA,IAAAA,CACA,CACA,OAAAA,CACA,EACA,IAAA62C,EAAA,CACAC,EAAA,SAAAC,GAAA,OAAAtgE,OAAAsgE,EAAAC,UAAA,EACAC,GAAA,SAAAF,GAAA,OAAAH,IAAAG,EAAAC,UAAA,EACAE,GAAA,SAAAH,EAAAnB,GACA,OAAAA,EAAAW,KAAAQ,EAAAC,UACA,EACAG,EAAA,SAAAJ,GAAA,OAAAtgE,OAAAsgE,EAAAK,SAAA,EACAC,GAAA,SAAAN,GAAA,OAAAH,IAAAG,EAAAK,SAAA,EACAE,IAAA,SAAAP,EAAAnB,GACA,OAAAA,EAAAQ,cAAAW,EAAAK,SACA,EACAG,KAAA,SAAAR,EAAAnB,GACA,OAAAA,EAAAK,SAAAc,EAAAK,SACA,EACA9nC,EAAA,SAAAynC,GAAA,OAAAtgE,OAAAsgE,EAAAS,WAAA,IACAC,GAAA,SAAAV,GAAA,OAAAH,IAAAG,EAAAS,WAAA,IACAE,IAAA,SAAAX,EAAAnB,GACA,OAAAA,EAAAO,gBAAAY,EAAAS,WACA,EACAG,KAAA,SAAAZ,EAAAnB,GACA,OAAAA,EAAAM,WAAAa,EAAAS,WACA,EACAI,GAAA,SAAAb,GACA,OAAAH,IAAAngE,OAAAsgE,EAAAc,eAAA,GAAA7C,OAAA,EACA,EACA8C,KAAA,SAAAf,GAAA,OAAAH,IAAAG,EAAAc,cAAA,IACAtV,EAAA,SAAAwU,GAAA,OAAAtgE,OAAAsgE,EAAAgB,WAAA,SACAC,GAAA,SAAAjB,GAAA,OAAAH,IAAAG,EAAAgB,WAAA,SACA1oC,EAAA,SAAA0nC,GAAA,OAAAtgE,OAAAsgE,EAAAgB,WAAA,EACAE,GAAA,SAAAlB,GAAA,OAAAH,IAAAG,EAAAgB,WAAA,EACAvoC,EAAA,SAAAunC,GAAA,OAAAtgE,OAAAsgE,EAAAmB,aAAA,EACAC,GAAA,SAAApB,GAAA,OAAAH,IAAAG,EAAAmB,aAAA,EACA1V,EAAA,SAAAuU,GAAA,OAAAtgE,OAAAsgE,EAAAlyC,aAAA,EACAuzC,GAAA,SAAArB,GAAA,OAAAH,IAAAG,EAAAlyC,aAAA,EACA0K,EAAA,SAAAwnC,GACA,OAAAtgE,OAAAhZ,KAAA05D,MAAA4f,EAAA/3E,kBAAA,KACA,EACAq5E,GAAA,SAAAtB,GACA,OAAAH,IAAAn5E,KAAA05D,MAAA4f,EAAA/3E,kBAAA,MACA,EACAs5E,IAAA,SAAAvB,GAAA,OAAAH,IAAAG,EAAA/3E,kBAAA,IACAmzB,EAAA,SAAA4kD,EAAAnB,GACA,OAAAmB,EAAAgB,WAAA,GAAAnC,EAAAU,KAAA,GAAAV,EAAAU,KAAA,EACA,EACAiC,EAAA,SAAAxB,EAAAnB,GACA,OAAAmB,EAAAgB,WAAA,GACAnC,EAAAU,KAAA,GAAA36C,cACAi6C,EAAAU,KAAA,GAAA36C,aACA,EACA68C,GAAA,SAAAzB,GACA,IAAAlkB,EAAAkkB,EAAA0B,oBACA,OAAA5lB,EAAA,WACA+jB,IAAAn5E,KAAA2mB,MAAA3mB,KAAAi7E,IAAA7lB,GAAA,QAAAp1D,KAAAi7E,IAAA7lB,GAAA,KACA,EACA8lB,EAAA,SAAA5B,GACA,IAAAlkB,EAAAkkB,EAAA0B,oBACA,OAAA5lB,EAAA,WACA+jB,IAAAn5E,KAAA2mB,MAAA3mB,KAAAi7E,IAAA7lB,GAAA,OACA,IACA+jB,IAAAn5E,KAAAi7E,IAAA7lB,GAAA,KACA,GAEA,IAAA+lB,WAAA,SAAAv5C,GAAA,OAAAA,EAAA,GACA,IAAAw5C,EAAA,MAAA3D,GACA,IAAA4D,EAAA,MAAAxD,GACA,IAAAgB,EAAA,CACA,OACAhB,EACA,SAAAj2C,EAAAu2C,GACA,IAAA51C,EAAAX,EAAAN,cACA,GAAAiB,IAAA41C,EAAAU,KAAA,IACA,QACA,MACA,GAAAt2C,IAAA41C,EAAAU,KAAA,IACA,QACA,CACA,WACA,GAEA,IAAAyC,EAAA,CACA,iBACA,4CACA,SAAA15C,GACA,IAAAg0B,GAAAh0B,EAAA,IAAAmS,MAAA,iBACA,GAAA6hB,EAAA,CACA,IAAA2lB,GAAA3lB,EAAA,MAAAxoB,SAAAwoB,EAAA,OACA,OAAAA,EAAA,SAAA2lB,IACA,CACA,QACA,GAEA,IAAAC,EAAA,CACAnC,EAAA,OAAA5B,GACA+B,GAAA,OAAA9B,GACA+B,GAAA,OAAAhC,EAAAI,EAAA,SAAAj2C,GAAA,OAAAwL,SAAAxL,EAAA,MACAiQ,EAAA,SAAA4lC,EAAA0D,YACAnB,GAAA,SAAAtC,EAAAyD,YACAhB,GAAA,CACA,OACAzC,EACA,SAAA91C,GACA,IAAA9/B,EAAA,IAAAlB,KACA,IAAA66E,IAAA,GAAA35E,EAAAs4E,eAAA7C,OAAA,KACA,aAAA31C,EAAA,GAAA65C,EAAA,EAAAA,GAAA75C,EACA,GAEAkjC,EAAA,QAAA2S,EAAA/yE,UAAA,QACA61E,GAAA,QAAA7C,EAAAhzE,UAAA,QACAktC,EAAA,QAAA6lC,GACA+C,GAAA,QAAA9C,GACA3lC,EAAA,UAAA0lC,GACAiD,GAAA,UAAAhD,GACA3S,EAAA,UAAA0S,GACAkD,GAAA,UAAAjD,GACA2C,KAAA,QAAAzC,GACA9lC,EAAA,8BAAAlQ,GAAA,OAAAA,EAAA,MACAg5C,GAAA,eAAAlD,EAAA,SAAA91C,GAAA,OAAAA,EAAA,KACAi5C,IAAA,eAAAlD,GACA+B,EAAA0B,EACAxB,GAAAwB,EACAvB,IAAAwB,EACAvB,KAAAuB,EACApB,IAAA,SAAApC,EAAAI,YAAA,oBACAiC,KAAA,SAAArC,EAAAI,YAAA,eACAvjD,EAAAmkD,EACAiC,EAAAjC,EACAkC,GAAAO,EACAJ,EAAAI,GAGA,IAAAI,EAAA,CACAte,QAAA,2BACAue,UAAA,SACAC,WAAA,cACAC,SAAA,eACAC,SAAA,qBACAC,QAAA,aACAC,YAAA,uBACAC,UAAA,QACAC,WAAA,WACAC,SAAA,gBAEA,IAAAC,mBAAA,SAAAC,GAAA,OAAAz1E,OAAA80E,EAAAW,EAAA,EAQA,IAAAj6D,OAAA,SAAAk3D,EAAAgD,EAAAnE,GACA,GAAAmE,SAAA,GAAAA,EAAAZ,EAAA,WACA,GAAAvD,SAAA,GAAAA,EAAA,GACA,UAAAmB,IAAA,UACAA,EAAA,IAAA14E,KAAA04E,EACA,CACA,GAAAl8E,OAAAC,UAAAiiB,SAAA9hB,KAAA87E,KAAA,iBACArxE,MAAAqxE,EAAAt3E,WAAA,CACA,UAAAoB,MAAA,8BACA,CACAk5E,EAAAZ,EAAAY,MACA,IAAAC,EAAA,GAEAD,IAAAtlB,QAAA8gB,GAAA,SAAA7gB,EAAAC,GACAqlB,EAAA5gF,KAAAu7D,GACA,WACA,IACA,IAAAslB,EAAA51E,cAAA,GAAAoyE,GAAAb,GAEAmE,IAAAtlB,QAAAwgB,GAAA,SAAAvgB,GACA,OAAAmiB,EAAAniB,GAAAqiB,EAAAkD,EACA,IAEA,OAAAF,EAAAtlB,QAAA,0BAAAulB,EAAAtnC,OAAA,GACA,EASA,SAAAzM,MAAAi0C,EAAAr6D,EAAA+1D,GACA,GAAAA,SAAA,GAAAA,EAAA,GACA,UAAA/1D,IAAA,UACA,UAAAhf,MAAA,gCACA,CAEAgf,EAAAs5D,EAAAt5D,MAGA,GAAAq6D,EAAAzgF,OAAA,KACA,WACA,CAEA,IAAA0gF,EAAA,IAAA97E,KACA,IAAA+7E,EAAA,CACAC,KAAAF,EAAAtC,cACAyC,MAAA,EACAC,IAAA,EACAC,KAAA,EACAC,OAAA,EACAC,OAAA,EACAC,YAAA,EACAC,KAAA,KACA7B,eAAA,MAEA,IAAA8B,EAAA,GACA,IAAAb,EAAA,GAEA,IAAAc,EAAAj7D,EAAA40C,QAAA8gB,GAAA,SAAA7gB,EAAAC,GACAqlB,EAAA5gF,KAAAu9E,YAAAhiB,IACA,WACA,IACA,IAAAomB,EAAA,GACA,IAAAC,EAAA,GAEAF,EAAAnE,YAAAmE,GAAArmB,QAAAwgB,GAAA,SAAAvgB,GACA,IAAAt5B,EAAA69C,EAAAvkB,GACA,IAAA9S,EAAAxmB,EAAA,GAAA6/C,EAAA7/C,EAAA,GAAA8/C,EAAA9/C,EAAA,GAEA,GAAA2/C,EAAAn5B,GAAA,CACA,UAAA/gD,MAAA,mBAAA+gD,EAAA,6BACA,CACAm5B,EAAAn5B,GAAA,KAEA,GAAAs5B,EAAA,CACAF,EAAAE,GAAA,IACA,CACAL,EAAAzhF,KAAAgiC,GACA,UAAA6/C,EAAA,GACA,IAEApgF,OAAAmG,KAAAg6E,GAAA99C,SAAA,SAAA0kB,GACA,IAAAm5B,EAAAn5B,GAAA,CACA,UAAA/gD,MAAA,mBAAA+gD,EAAA,mCACA,CACA,IAEAk5B,IAAArmB,QAAA,0BAAAulB,EAAAtnC,OAAA,IAEA,IAAAyoC,EAAAjB,EAAA1oC,MAAA,IAAAujC,OAAA+F,EAAA,MACA,IAAAK,EAAA,CACA,WACA,CACA,IAAAlB,EAAA51E,cAAA,GAAAoyE,GAAAb,GAEA,QAAAp8E,EAAA,EAAAA,EAAA2hF,EAAA1hF,OAAAD,IAAA,CACA,IAAAqF,EAAAg8E,EAAArhF,EAAA,GAAAooD,EAAA/iD,EAAA,GAAAu8E,EAAAv8E,EAAA,GACA,IAAApC,EAAA2+E,EACAA,EAAAD,EAAA3hF,GAAAygF,IACAkB,EAAA3hF,GAEA,GAAAiD,GAAA,MACA,WACA,CACA29E,EAAAx4B,GAAAnlD,CACA,CACA,GAAA29E,EAAAQ,OAAA,GAAAR,EAAAI,MAAA,OAAAJ,EAAAI,OAAA,IACAJ,EAAAI,MAAAJ,EAAAI,KAAA,EACA,MACA,GAAAJ,EAAAQ,OAAA,IAAAR,EAAAI,OAAA,IACAJ,EAAAI,KAAA,CACA,CACA,IAAAa,EACA,GAAAjB,EAAArB,gBAAA,MACAsC,EAAA,IAAAh9E,KAAA+7E,EAAAC,KAAAD,EAAAE,MAAAF,EAAAG,IAAAH,EAAAI,KAAAJ,EAAAK,OAAAL,EAAAM,OAAAN,EAAAO,aACA,IAAAW,EAAA,CACA,qBACA,kBACA,oBACA,wBACA,yBAEA,QAAA9hF,EAAA,EAAAugE,EAAAuhB,EAAA7hF,OAAAD,EAAAugE,EAAAvgE,IAAA,CAGA,GAAAuhF,EAAAO,EAAA9hF,GAAA,KACA4gF,EAAAkB,EAAA9hF,GAAA,MAAA6hF,EAAAC,EAAA9hF,GAAA,OACA,WACA,CACA,CACA,KACA,CACA6hF,EAAA,IAAAh9E,UAAAk9E,IAAAnB,EAAAC,KAAAD,EAAAE,MAAAF,EAAAG,IAAAH,EAAAI,KAAAJ,EAAAK,OAAAL,EAAArB,eAAAqB,EAAAM,OAAAN,EAAAO,cAEA,GAAAP,EAAAE,MAAA,IACAF,EAAAE,MAAA,GACAF,EAAAG,IAAA,IACAH,EAAAG,IAAA,GACAH,EAAAI,KAAA,IACAJ,EAAAI,KAAA,GACAJ,EAAAK,OAAA,IACAL,EAAAK,OAAA,GACAL,EAAAM,OAAA,IACAN,EAAAM,OAAA,GACA,WACA,CACA,CAEA,OAAAW,CACA,CACA,IAAAG,EAAA,CACA37D,cACAomB,YACAowC,cACAK,oCACAmD,uCAGA1hF,EAAAkM,cACAlM,EAAA0iE,QAAA2gB,EACArjF,EAAA0nB,cACA1nB,EAAA8tC,YACA9tC,EAAAk+E,cACAl+E,EAAAu+E,oCACAv+E,EAAA0hF,sCAEAh/E,OAAA2B,eAAArE,EAAA,cAAAsE,MAAA,MAEA,G,WC9ZA,IAAAsgB,EAAAliB,OAAAC,UAAAiiB,SASA7kB,EAAAC,QAAA,SAAAmS,KAAAjS,GACA,qBAAAA,EAAAojF,aAAApjF,EAAAsF,YAAA2M,KAAA,CACA,OAAAjS,EAAAojF,WACA,2BAAApjF,EAAAiS,MAAAjS,EAAAiS,KAAA,CACA,OAAAjS,EAAAiS,IACA,CAKA,GACA,kBAAAjS,GACAA,EAAAsF,aACA,kBAAAtF,EAAAsF,YAAA2M,KACA,OAAAjS,EAAAsF,YAAA2M,KAMA,IAAAoxE,EAAArjF,EAAA0kB,WACA+L,EAAA/L,EAAA9hB,KAAA5C,GAAAmD,MAAA,MAEA,gBAAAstB,EAAA,CACA4yD,IAAAh0D,UAAAg0D,EAAAviF,QAAA,OAAAuiF,EAAAviF,QAAA,KACA,MACAuiF,EAAA5yD,CACA,CAEA,OAAA4yD,GAAA,WACA,C,iBCzCA,IACA,IAAAr7C,EAAApoC,EAAA,MAEA,UAAAooC,EAAAs7C,WAAA,mBACAzjF,EAAAC,QAAAkoC,EAAAs7C,QACA,OAAAnjF,GAEAN,EAAAC,QAAAF,EAAA,KACA,C,WCRA,UAAA4C,OAAAzC,SAAA,YAEAF,EAAAC,QAAA,SAAAwjF,SAAA1nC,EAAA2nC,GACA,GAAAA,EAAA,CACA3nC,EAAA4nC,OAAAD,EACA3nC,EAAAn5C,UAAAD,OAAAzC,OAAAwjF,EAAA9gF,UAAA,CACA6C,YAAA,CACAlB,MAAAw3C,EACAp7B,WAAA,MACAsnC,SAAA,KACAD,aAAA,OAGA,CACA,CACA,MAEAhoD,EAAAC,QAAA,SAAAwjF,SAAA1nC,EAAA2nC,GACA,GAAAA,EAAA,CACA3nC,EAAA4nC,OAAAD,EACA,IAAAE,SAAA,aACAA,SAAAhhF,UAAA8gF,EAAA9gF,UACAm5C,EAAAn5C,UAAA,IAAAghF,SACA7nC,EAAAn5C,UAAA6C,YAAAs2C,CACA,CACA,CACA,C,WCxBA,MAAA8nC,SAAAvqE,GACAA,IAAA,aACAA,IAAA,iBACAA,EAAAwqE,OAAA,WAEAD,SAAA57B,SAAA3uC,GACAuqE,SAAAvqE,IACAA,EAAA2uC,WAAA,cACA3uC,EAAArM,SAAA,mBACAqM,EAAAyqE,iBAAA,SAEAF,SAAAG,SAAA1qE,GACAuqE,SAAAvqE,IACAA,EAAA0qE,WAAA,cACA1qE,EAAA1M,QAAA,mBACA0M,EAAA2qE,iBAAA,SAEAJ,SAAAK,OAAA5qE,GACAuqE,SAAA57B,SAAA3uC,IACAuqE,SAAAG,SAAA1qE,GAEAuqE,SAAAM,UAAA7qE,GACAuqE,SAAAK,OAAA5qE,WACAA,EAAA8qE,aAAA,WAEApkF,EAAAC,QAAA4jF,Q,WCjBA,SAAAQ,MAAA5hE,EAAAiqD,GACA,GAAAA,EAAA,WAAA2X,MAAA5hE,GAAA6hE,MAAA5X,GACA,KAAA/mE,gBAAA0+E,OAAA,WAAAA,MAAA5hE,GAEA9c,KAAA8c,MACA,CAQA4hE,MAAAzhF,UAAAu+D,OAAA,KACAkjB,MAAAzhF,UAAA2hF,OAAA,IASAF,MAAAzhF,UAAA8mE,IAAA,SAAAA,IAAAgD,GACAA,IAAA,SAAAA,EAAAl9C,UAAA,GAAAk9C,EAKA,GAAAA,EAAAnrE,SAAA,GACAmrE,IAAAr1D,MAAA,IAEAq1D,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GACAA,EAAA,GAAAA,EAAA,GAEAA,IAAAp1D,KAAA,GACA,CAEA,IAAA4yD,EAAAwC,EAAAl9C,UAAA,KACA26C,EAAAuC,EAAAl9C,UAAA,KACA0K,EAAAwyC,EAAAl9C,UAAA,KAEA,OAAAmjB,SAAAu3B,EAAA,IAAAv3B,SAAAw3B,EAAA,IAAAx3B,SAAAzY,EAAA,IACA,EAWAmqD,MAAAzhF,UAAAomE,IAAA,SAAAA,IAAAkB,EAAAC,EAAAjwC,GACA,IAAAg8C,EAAAhM,EAAA,MACA8H,EAAA7H,EAAA,MACAiF,EAAAl1C,EAAA,MAEA,OAAAv0B,KAAA5B,KAAAmyE,EAAAlE,EAAA5C,EACA,EAWAiV,MAAAzhF,UAAAmB,KAAA,SAAAA,KAAAmmE,EAAAC,EAAAjwC,GACA,IAAAg8C,EAAA3wE,KAAA05D,MAAAiL,GACA8H,EAAAzsE,KAAA05D,MAAAkL,GACAiF,EAAA7pE,KAAA05D,MAAA/kC,GAEA,UAAAg8C,EAAA,GAAAlE,EAAA,EAAA5C,CACA,EAQAiV,MAAAzhF,UAAAwE,MAAA,SAAAA,QACA,OAAAzB,KAAAw7D,OAAA,QAAAx7D,KAAA4+E,MACA,EASAF,MAAAzhF,UAAA0hF,MAAA,SAAAA,MAAA5X,GACA,OAAA/mE,KAAAw7D,OAAA,QAAAx7D,KAAAqjE,IAAA3mE,MAAAsD,UAAA+jE,IAAAgD,IAAA/mE,KAAA4+E,OAAA5+E,KAAA8c,KAAA9c,KAAAyB,OACA,EAMApH,EAAAC,QAAAokF,K,WC3GA,IAAAG,EAAA,IAGA,IAAAC,EAAA,kBAGA,IAAAC,EAAA,4CAGA,IAAAC,EAAA,8CAGA,IAAAC,EAAA,kBACAC,EAAA,iCACAC,EAAA,kBACAC,EAAA,kBACAC,EAAA,4BACAC,EAAA,uBACAC,EAAA,+CACAC,EAAA,kBACAC,EAAA,+JACAC,EAAA,4BACAC,EAAA,iBACAC,EAAAN,EAAAC,EAAAC,EAAAC,EAGA,IAAAI,EAAA,OACAC,EAAA,IAAAb,EAAA,IACAc,EAAA,IAAAH,EAAA,IACAI,EAAA,IAAAd,EAAAC,EAAA,IACAc,EAAA,OACAC,EAAA,IAAAd,EAAA,IACAe,EAAA,IAAAd,EAAA,IACAe,EAAA,KAAAnB,EAAAW,EAAAK,EAAAb,EAAAC,EAAAK,EAAA,IACAW,EAAA,2BACAC,EAAA,MAAAN,EAAA,IAAAK,EAAA,IACAE,EAAA,KAAAtB,EAAA,IACAuB,EAAA,kCACAC,EAAA,qCACAC,EAAA,IAAAhB,EAAA,IACAiB,EAAA,UAGA,IAAAC,EAAA,MAAAT,EAAA,IAAAC,EAAA,IACAS,EAAA,MAAAH,EAAA,IAAAN,EAAA,IACAU,EAAA,MAAAjB,EAAA,yBACAkB,EAAA,MAAAlB,EAAA,yBACAmB,EAAAV,EAAA,IACAW,EAAA,IAAAtB,EAAA,KACAuB,EAAA,MAAAP,EAAA,OAAAJ,EAAAC,EAAAC,GAAA9uE,KAAA,SAAAsvE,EAAAD,EAAA,KACAG,EAAAF,EAAAD,EAAAE,EACAE,EAAA,OAAAlB,EAAAM,EAAAC,GAAA9uE,KAAA,SAAAwvE,EACAE,EAAA,OAAAd,EAAAP,EAAA,IAAAA,EAAAQ,EAAAC,EAAAX,GAAAnuE,KAAA,SAGA,IAAA2vE,EAAApK,OAAA2I,EAAA,KAMA,IAAA0B,EAAArK,OAAA8I,EAAA,KAGA,IAAAwB,EAAAtK,OAAAmJ,EAAA,MAAAA,EAAA,KAAAgB,EAAAF,EAAA,KAGA,IAAAM,EAAAvK,OAAA,CACAwJ,EAAA,IAAAP,EAAA,IAAAW,EAAA,OAAAf,EAAAW,EAAA,KAAA/uE,KAAA,SACAkvE,EAAA,IAAAE,EAAA,OAAAhB,EAAAW,EAAAE,EAAA,KAAAjvE,KAAA,SACA+uE,EAAA,IAAAE,EAAA,IAAAE,EACAJ,EAAA,IAAAK,EACAd,EACAmB,GACAzvE,KAAA,UAGA,IAAA+vE,EAAAxK,OAAA,IAAAyJ,EAAA1B,EAAAC,EAAAC,EAAAQ,EAAA,KAGA,IAAAgC,EAAA,sEAGA,IAAAC,EAAA,CAEA,gDACA,gDACA,gBACA,gBACA,gCACA,gCACA,gCACA,gCACA,gBACA,gDACA,gDACA,gCACA,gCACA,wBACA,kBACA,kBACA,SAEA,wBACA,wBACA,gCACA,gCACA,gCACA,wCACA,wCACA,gCACA,gCACA,gCACA,wCACA,wCACA,gBACA,wBACA,wCACA,wCACA,gCACA,gCACA,wBACA,wBACA,wBACA,wBACA,gCACA,gCACA,wBACA,wBACA,gDACA,gDACA,gBACA,wBACA,wBACA,wBACA,kBACA,kBACA,mBAIA,IAAAC,SAAAz3B,QAAA,UAAAA,eAAAptD,iBAAAotD,OAGA,IAAA03B,SAAA/N,MAAA,UAAAA,WAAA/2E,iBAAA+2E,KAGA,IAAAvhB,EAAAqvB,GAAAC,GAAAhkF,SAAA,cAAAA,GAcA,SAAAikF,YAAA9N,EAAA5V,EAAA3N,EAAAsxB,GACA,IAAA39E,GAAA,EACAzI,EAAAq4E,IAAAr4E,OAAA,EAEA,GAAAomF,GAAApmF,EAAA,CACA80D,EAAAujB,IAAA5vE,EACA,CACA,QAAAA,EAAAzI,EAAA,CACA80D,EAAA2N,EAAA3N,EAAAujB,EAAA5vE,KAAA4vE,EACA,CACA,OAAAvjB,CACA,CASA,SAAAuxB,aAAA7sB,GACA,OAAAA,EAAA1jD,MAAA,GACA,CASA,SAAAwwE,WAAA9sB,GACA,OAAAA,EAAAzhB,MAAAorC,IAAA,EACA,CASA,SAAAoD,eAAAjO,GACA,gBAAA/2E,GACA,OAAA+2E,GAAA,KAAA5vE,UAAA4vE,EAAA/2E,EACA,CACA,CAUA,IAAAilF,EAAAD,eAAAP,GASA,SAAAS,WAAAjtB,GACA,OAAAssB,EAAA9gD,KAAAw0B,EACA,CASA,SAAAktB,eAAAltB,GACA,OAAAusB,EAAA/gD,KAAAw0B,EACA,CASA,SAAAmtB,cAAAntB,GACA,OAAAitB,WAAAjtB,GACAotB,eAAAptB,GACA6sB,aAAA7sB,EACA,CASA,SAAAotB,eAAAptB,GACA,OAAAA,EAAAzhB,MAAA6tC,IAAA,EACA,CASA,SAAAiB,aAAArtB,GACA,OAAAA,EAAAzhB,MAAA8tC,IAAA,EACA,CAGA,IAAAiB,EAAA1lF,OAAAC,UAOA,IAAA0lF,GAAAD,EAAAxjE,SAGA,IAAA/N,GAAAqhD,EAAArhD,OAGA,IAAAyxE,GAAAzxE,MAAAlU,UAAAqH,UACAu+E,GAAAD,MAAA1jE,SAAA5a,UAWA,SAAAw+E,UAAA7O,EAAAlnE,EAAAmT,GACA,IAAA7b,GAAA,EACAzI,EAAAq4E,EAAAr4E,OAEA,GAAAmR,EAAA,GACAA,KAAAnR,EAAA,EAAAA,EAAAmR,CACA,CACAmT,IAAAtkB,IAAAskB,EACA,GAAAA,EAAA,GACAA,GAAAtkB,CACA,CACAA,EAAAmR,EAAAmT,EAAA,EAAAA,EAAAnT,IAAA,EACAA,KAAA,EAEA,IAAAgP,EAAAre,MAAA9B,GACA,QAAAyI,EAAAzI,EAAA,CACAmgB,EAAA1X,GAAA4vE,EAAA5vE,EAAA0I,EACA,CACA,OAAAgP,CACA,CAUA,SAAAgnE,aAAAnkF,GAEA,UAAAA,GAAA,UACA,OAAAA,CACA,CACA,GAAAokF,SAAApkF,GAAA,CACA,OAAAikF,MAAAzlF,KAAAwB,GAAA,EACA,CACA,IAAAmd,EAAAnd,EAAA,GACA,OAAAmd,GAAA,OAAAnd,IAAAigF,EAAA,KAAA9iE,CACA,CAWA,SAAAknE,UAAAhP,EAAAlnE,EAAAmT,GACA,IAAAtkB,EAAAq4E,EAAAr4E,OACAskB,MAAA5b,UAAA1I,EAAAskB,EACA,OAAAnT,GAAAmT,GAAAtkB,EAAAq4E,EAAA6O,UAAA7O,EAAAlnE,EAAAmT,EACA,CASA,SAAAgjE,gBAAAznD,GACA,gBAAA25B,GACAA,EAAAl2C,SAAAk2C,GAEA,IAAA+tB,EAAAd,WAAAjtB,GACAmtB,cAAAntB,GACA9wD,UAEA,IAAA8+E,EAAAD,EACAA,EAAA,GACA/tB,EAAA51B,OAAA,GAEA,IAAA6jD,EAAAF,EACAF,UAAAE,EAAA,GAAAxxE,KAAA,IACAyjD,EAAAz3D,MAAA,GAEA,OAAAylF,EAAA3nD,KAAA4nD,CACA,CACA,CASA,SAAAC,iBAAAvjF,GACA,gBAAAq1D,GACA,OAAA2sB,YAAAwB,MAAAC,OAAApuB,GAAAwB,QAAA0qB,EAAA,KAAAvhF,EAAA,GACA,CACA,CA0BA,SAAA0jF,aAAA7kF,GACA,QAAAA,aAAA,QACA,CAmBA,SAAAokF,SAAApkF,GACA,cAAAA,GAAA,UACA6kF,aAAA7kF,IAAA+jF,GAAAvlF,KAAAwB,IAAAkgF,CACA,CAuBA,SAAA5/D,SAAAtgB,GACA,OAAAA,GAAA,QAAAmkF,aAAAnkF,EACA,CAsBA,IAAAswD,GAAAo0B,kBAAA,SAAAvnE,EAAA07D,EAAApzE,GACAozE,IAAAv2C,cACA,OAAAnlB,GAAA1X,EAAAq/E,WAAAjM,KACA,IAiBA,SAAAiM,WAAAtuB,GACA,OAAAuuB,GAAAzkE,SAAAk2C,GAAAl0B,cACA,CAoBA,SAAAsiD,OAAApuB,GACAA,EAAAl2C,SAAAk2C,GACA,OAAAA,KAAAwB,QAAAooB,EAAAoD,GAAAxrB,QAAA2qB,EAAA,GACA,CAmBA,IAAAoC,GAAAT,gBAAA,eAqBA,SAAAK,MAAAnuB,EAAAwuB,EAAAC,GACAzuB,EAAAl2C,SAAAk2C,GACAwuB,EAAAC,EAAAv/E,UAAAs/E,EAEA,GAAAA,IAAAt/E,UAAA,CACA,OAAAg+E,eAAAltB,GAAAqtB,aAAArtB,GAAA8sB,WAAA9sB,EACA,CACA,OAAAA,EAAAzhB,MAAAiwC,IAAA,EACA,CAEAvpF,EAAAC,QAAA40D,E,iBCplBA,MAAAltC,EAAA5nB,EAAA,MAQAC,EAAAC,QAAA0nB,GAAAub,IACAA,EAAA3gC,QAAA,KAAA2gC,EAAA3gC,UACA,OAAA2gC,CAAA,G,iBCVA,MAAAumD,aAAA1pF,EAAA,MACA,MAAA2pF,UAAA3pF,EAAA,MACA,MAAAkhC,UAAA0oD,WAAA5pF,EAAA,MAOA,MAAA6pF,UACA,WAAAnkF,CAAAokF,EAAA,IACA,IAAAA,EAAAC,OAAA,CACAD,EAAAC,OAAA7oD,EAAA8oD,IAAAD,MACA,CAEAnkF,KAAAqkF,UAAA,IAAAP,EAAAI,GACAlkF,KAAAskF,OAAA,IAAAP,EAAAG,GACAlkF,KAAAlD,QAAAonF,CACA,CASA,SAAA1F,CAAAjhD,EAAA2mD,GACAlkF,KAAAqkF,UAAA7F,UACAx+E,KAAAskF,OAAA9F,UAAAjhD,EAAA2mD,GACAA,GAGA3mD,EAAAymD,GAAA,GAAAzmD,EAAA63C,SAAA73C,EAAA3gC,UACA,OAAA2gC,CACA,EASAljC,EAAAC,QAAA4pF,GAAA,IAAAD,UAAAC,GAKA7pF,EAAAC,QAAAiqF,OAAAN,S,iBCjDA,MAAA5lF,EAAAjE,EAAA,MACA,MAAAoqF,QAAAR,WAAA5pF,EAAA,MAKAiE,EAAAlE,QAAA,KAMA,MAAAsqF,EAAA,MAMA,MAAAX,UACA,WAAAhkF,CAAAokF,EAAA,IACA,GAAAA,EAAA7lF,OAAA,CACA2B,KAAA0kF,UAAAR,EAAA7lF,OACA,CAEA2B,KAAAlD,QAAAonF,CACA,CAQA,gBAAAQ,CAAAC,GACA,MAAAC,EAAA5nF,OAAAmG,KAAAwhF,GAAArjE,QAAA,CAAAC,EAAA6zD,KACA7zD,EAAA6zD,GAAAqP,EAAA7jD,KAAA+jD,EAAAvP,IACAuP,EAAAvP,GAAA1jE,MAAA+yE,GACAE,EAAAvP,GAEA,OAAA7zD,CAAA,GACA,IAEAuiE,UAAAe,UAAA7nF,OAAAwJ,OAAA,GAAAs9E,UAAAe,WAAA,GAAAD,GACA,OAAAd,UAAAe,SACA,CAQA,SAAAH,CAAAC,GACA,OAAAb,UAAAY,UAAAC,EACA,CAMA,QAAAG,CAAA9hD,EAAAoyC,EAAAx4E,GACA,UAAAA,IAAA,aACAA,EAAAw4E,CACA,CAMA,IAAA13E,MAAAwzB,QAAA4yD,UAAAe,UAAA7hD,IAAA,CACA,OAAA3kC,EAAAylF,UAAAe,UAAA7hD,IAAApmC,EACA,CAMA,QAAAjB,EAAA,EAAAugE,EAAA4nB,UAAAe,UAAA7hD,GAAApnC,OAAAD,EAAAugE,EAAAvgE,IAAA,CACAiB,EAAAyB,EAAAylF,UAAAe,UAAA7hD,GAAArnC,IAAAiB,EACA,CAEA,OAAAA,CACA,CAOA,SAAA4hF,CAAAjhD,EAAA2mD,GACA,GAAAA,EAAAloF,YAAAuhC,EAAAymD,KAAA,UACAzmD,EAAAymD,GAAAhkF,KAAA8kF,SAAAvnD,EAAAinD,GAAAjnD,EAAA63C,MAAA73C,EAAAymD,GACA,CAEA,GAAAE,EAAA9O,OAAA8O,EAAAloF,MAAAkoF,EAAAtnF,QAAA,CACA2gC,EAAA63C,MAAAp1E,KAAA8kF,SAAAvnD,EAAAinD,GAAAjnD,EAAA63C,MACA,CAEA,GAAA8O,EAAAloF,KAAAkoF,EAAAtnF,QAAA,CACA2gC,EAAA3gC,QAAAoD,KAAA8kF,SAAAvnD,EAAAinD,GAAAjnD,EAAA63C,MAAA73C,EAAA3gC,QACA,CAEA,OAAA2gC,CACA,EASAljC,EAAAC,QAAA4pF,GAAA,IAAAJ,UAAAI,GAKA7pF,EAAAC,QAAAwpF,UACAzpF,EAAAC,QAAAiqF,OACAT,S,iBCvHA,MAAA9hE,EAAA5nB,EAAA,MASA,SAAA2qF,QAAAC,GACA,IAAAA,EAAA5gF,MAAA6gF,eAAA,CACA,MACA,CAEA,OAAA1nD,IACA,IAAAh1B,EAAAg1B,EACA,QAAA5hC,EAAA,EAAAA,EAAAqpF,EAAAppF,OAAAD,IAAA,CACA4M,EAAAy8E,EAAArpF,GAAA6iF,UAAAj2E,EAAAy8E,EAAArpF,GAAAmB,SACA,IAAAyL,EAAA,CACA,YACA,CACA,CAEA,OAAAA,CAAA,CAEA,CAOA,SAAA08E,cAAAC,GACA,UAAAA,EAAA1G,YAAA,YACA,UAAAx7E,MAAA,CACA,2EACA,qCACA,gCACA2O,KAAA,MACA,CAEA,WACA,CASAtX,EAAAC,QAAA,IAAA0qF,KACA,MAAAG,EAAAnjE,EAAA+iE,QAAAC,IACA,MAAAI,EAAAD,IACAC,EAAAb,OAAAY,EAAAZ,OACA,OAAAa,CAAA,EAQA/qF,EAAAC,QAAAyqF,e,iBC9DA,MAAA/iE,EAAA5nB,EAAA,MACA,MAAAoqF,QAAAR,WAAA5pF,EAAA,MASAC,EAAAC,QAAA0nB,GAAA,CAAAqjE,GAAA9+E,QAAA++E,YACA,GAAAD,aAAAriF,MAAA,CACA,MAAAu6B,EAAAvgC,OAAAwJ,OAAA,GAAA6+E,EAAA,CACAjQ,MAAAiQ,EAAAjQ,MACAoP,IAAAa,EAAAb,IAAAa,EAAAjQ,MACAx4E,QAAAyoF,EAAAzoF,QACAonF,IAAAqB,EAAArB,IAAAqB,EAAAzoF,UAGA,GAAA2J,EAAAg3B,EAAAh3B,MAAA8+E,EAAA9+E,MACA,GAAA++E,EAAA/nD,EAAA+nD,MAAAD,EAAAC,MACA,OAAA/nD,CACA,CAEA,KAAA8nD,EAAAzoF,mBAAAoG,OAAA,OAAAqiF,EAIA,MAAAviF,EAAAuiF,EAAAzoF,QACAI,OAAAwJ,OAAA6+E,EAAAviF,GACAuiF,EAAAzoF,QAAAkG,EAAAlG,QACAyoF,EAAArB,GAAAlhF,EAAAlG,QAGA,GAAA2J,EAAA8+E,EAAA9+E,MAAAzD,EAAAyD,MACA,GAAA++E,EAAAD,EAAAC,MAAAxiF,EAAAwiF,MACA,OAAAD,CAAA,G,WCjCA,MAAAE,2BAAAviF,MACA,WAAAlD,CAAA0lF,GACA/hF,MAAA,qFACA+hF,EAAAtmE,WAAAxN,MAAA,cAEA1O,MAAA0J,kBAAA1M,KAAAulF,mBACA,EAOAlrF,EAAAC,QAAAkrF,IACA,GAAAA,EAAA5pF,OAAA,GACA,UAAA2pF,mBAAAC,EACA,CAOA,SAAAjB,OAAAznF,EAAA,IACAkD,KAAAlD,SACA,CAEAynF,OAAAtnF,UAAAuhF,UAAAgH,EAQA,SAAAC,iBAAAvB,GACA,WAAAK,OAAAL,EACA,CAMAuB,iBAAAlB,cACA,OAAAkB,gBAAA,C,iBC1CA,MAAAzjE,EAAA1nB,EAAA0nB,OAAA5nB,EAAA,MAOAE,EAAA6pF,OAAA/pF,EAAA,MAQA,SAAAsrF,aAAAj5E,EAAAk5E,GACA3oF,OAAA2B,eAAAqjB,EAAAvV,EAAA,CACA,GAAAsK,GACA,OAAA4uE,GACA,EACAtjC,aAAA,MAEA,CAKAqjC,aAAA,2BAAAtrF,EAAA,SACAsrF,aAAA,4BAAAtrF,EAAA,SACAsrF,aAAA,yBAAAtrF,EAAA,SACAsrF,aAAA,6BAAAtrF,EAAA,SACAsrF,aAAA,8BAAAtrF,EAAA,SACAsrF,aAAA,0BAAAtrF,EAAA,SACAsrF,aAAA,2BAAAtrF,EAAA,SACAsrF,aAAA,8BAAAtrF,EAAA,SACAsrF,aAAA,8BAAAtrF,EAAA,SACAsrF,aAAA,wBAAAtrF,EAAA,SACAsrF,aAAA,+BAAAtrF,EAAA,SACAsrF,aAAA,iCAAAtrF,EAAA,SACAsrF,aAAA,4BAAAtrF,EAAA,SACAsrF,aAAA,4BAAAtrF,EAAA,SACAsrF,aAAA,2BAAAtrF,EAAA,SACAsrF,aAAA,+BAAAtrF,EAAA,SACAsrF,aAAA,gCAAAtrF,EAAA,Q,iBCjDA,MAAA4nB,EAAA5nB,EAAA,MACA,MAAA4pF,WAAA5pF,EAAA,MACA,MAAAuvB,EAAAvvB,EAAA,MAMA,SAAAwrF,SAAAzoF,EAAAyB,GAIA,UAAAA,IAAA,SACA,OAAAA,EAAAsgB,WACA,OAAAtgB,CACA,CAQAvE,EAAAC,QAAA0nB,GAAA,CAAAub,EAAA2mD,KACA,MAAA2B,EAAAl8D,EAAAm8D,UAAA5B,GACA3mD,EAAAymD,GAAA6B,EAAAtoD,EAAA2mD,EAAA0B,mBAAA1B,EAAA6B,OACA,OAAAxoD,CAAA,G,iBC1BA,MAAAvb,EAAA5nB,EAAA,MAQAC,EAAAC,QAAA0nB,GAAA,CAAAub,EAAA2mD,KACA,GAAAA,EAAAtnF,QAAA,CACA2gC,EAAA3gC,QAAA,IAAAsnF,EAAA8B,UAAAzoD,EAAA3gC,UACA,OAAA2gC,CACA,CAEAA,EAAAyoD,MAAA9B,EAAA8B,MACA,OAAAzoD,CAAA,G,iBCfA,MAAAumD,aAAA1pF,EAAA,MAMAC,EAAAC,QAAA4wB,IACA44D,EAAAY,UAAAx5D,EAAA7sB,QAAA6sB,GACA,OAAAA,CAAA,C,iBCRA,MAAAlJ,EAAA5nB,EAAA,MACA,MAAA4pF,WAAA5pF,EAAA,MACA,MAAAyrF,EAAAzrF,EAAA,MASAC,EAAAC,QAAA0nB,GAAAub,IACA,MAAA0oD,EAAA,GACA,GAAA1oD,EAAA3gC,QAAA,CACAqpF,EAAA,YAAA1oD,EAAA3gC,eACA2gC,EAAA3gC,OACA,CAEA,GAAA2gC,EAAA2oD,UAAA,CACAD,EAAA,cAAA1oD,EAAA2oD,iBACA3oD,EAAA2oD,SACA,CAEAD,EAAA,WAAA1oD,EACAA,EAAAymD,GAAA6B,EAAAI,GACA,OAAA1oD,CAAA,G,iBCzBA,MAAAvb,EAAA5nB,EAAA,MAEA,SAAA+rF,WAAA5oD,EAAA6oD,EAAAC,GACA,MAAAC,EAAAF,EAAA9kE,QAAA,CAAAC,EAAApkB,KACAokB,EAAApkB,GAAAogC,EAAApgC,UACAogC,EAAApgC,GACA,OAAAokB,CAAA,GACA,IACA,MAAAte,EAAAjG,OAAAmG,KAAAo6B,GAAAjc,QAAA,CAAAC,EAAApkB,KACAokB,EAAApkB,GAAAogC,EAAApgC,UACAogC,EAAApgC,GACA,OAAAokB,CAAA,GACA,IAEAvkB,OAAAwJ,OAAA+2B,EAAA+oD,EAAA,CACAD,IAAApjF,IAEA,OAAAs6B,CACA,CAEA,SAAAgpD,SAAAhpD,EAAAipD,EAAAH,GACA9oD,EAAA8oD,GAAAG,EAAAllE,QAAA,CAAAC,EAAApkB,KACAokB,EAAApkB,GAAAogC,EAAApgC,UACAogC,EAAApgC,GACA,OAAAokB,CAAA,GACA,IACA,OAAAgc,CACA,CAMAljC,EAAAC,QAAA0nB,GAAA,CAAAub,EAAA2mD,EAAA,MACA,IAAAmC,EAAA,WACA,GAAAnC,EAAA/mF,IAAA,CACAkpF,EAAAnC,EAAA/mF,GACA,CAEA,IAAAipF,EAAA,GACA,IAAAlC,EAAAiC,aAAAjC,EAAAqC,SAAA,CACAH,EAAA7qF,KAAA,SACA6qF,EAAA7qF,KAAA,UACA,CAEA,GAAA2oF,EAAAiC,WAAA,CACAC,EAAAlC,EAAAiC,UACA,CAEA,GAAAC,EAAAxqF,OAAA,GACA,OAAAuqF,WAAA5oD,EAAA6oD,EAAAC,EACA,CAEA,GAAAnC,EAAAqC,SAAA,CACA,OAAAA,SAAAhpD,EAAA2mD,EAAAqC,SAAAF,EACA,CAEA,OAAA9oD,CAAA,G,uBCzDA,MAAAvb,EAAA5nB,EAAA,MACA,MAAAqsF,EAAArsF,EAAA,KAOAC,EAAAC,QAAA0nB,GAAAub,IACA,MAAAmpD,GAAA,IAAAlmF,KACAR,KAAAglE,KAAA0hB,GAAA1mF,KAAA2mF,UAAAD,GACA1mF,KAAA2mF,SAAAD,EACAnpD,EAAAkpD,GAAA,IAAAA,EAAAzmF,KAAAglE,QAEA,OAAAznC,CAAA,G,iBCcA,IAAAl/B,EAAA,GACAhE,EAAA,WAAAgE,EAEAA,EAAAuoF,OAAA,GAEA,IAAApkD,EAAApoC,EAAA,MACA,IAAAysF,EAAAxoF,EAAAyoF,OAAA1sF,EAAA,MACA,IAAA2sF,EAAA/pF,OAAAgqF,iBACA,IAAAC,EAAA,IAAA/P,OAAA,YAEA74E,EAAA6oF,cAAA9sF,EAAA,oBAEA,UAAAiE,EAAAlE,UAAA,aACAkE,EAAAlE,QAAAkE,EAAA6oF,kBAAA,KACA,CAEA7oF,EAAA8oF,OAAA,WACA9oF,EAAAlE,QAAA,IACA,EAEAkE,EAAA+oF,QAAA,WACA/oF,EAAAlE,QAAA,KACA,EAEAkE,EAAAgpF,YAAAhpF,EAAAipF,MAAA,SAAAnU,GACA,UAAAA,GAAAvc,QAAA,iBACA,EAGA,IAAA2wB,EAAAlpF,EAAAkpF,QAAA,SAAAA,QAAApU,EAAAwL,GACA,IAAAtgF,EAAAlE,QAAA,CACA,OAAAg5E,EAAA,EACA,CAEA,IAAAqU,EAAAX,EAAAlI,GAGA,IAAA6I,GAAA7I,KAAAtgF,EAAA,CAGA,OAAAA,EAAAsgF,GAAAxL,EACA,CAEA,OAAAqU,EAAArvB,KAAAgb,EAAAqU,EAAAr8E,KACA,EAEA,IAAAs8E,EAAA,sBACA,IAAAC,mBAAA,SAAAvU,GACA,UAAAA,IAAA,UACA,UAAAzqE,UAAA,oBACA,CACA,OAAAyqE,EAAAvc,QAAA6wB,EAAA,OACA,EAEA,SAAA36E,MAAA66E,GACA,IAAAC,EAAA,SAAAA,UACA,OAAAC,WAAAnrF,MAAAkrF,QAAAjrF,UACA,EACAirF,EAAAD,UAGAC,EAAAE,UAAAC,EACA,OAAAH,CACA,CAEA,IAAAd,EAAA,WACA,IAAAkB,EAAA,GACAnB,EAAAta,KAAAsa,EAAAxiB,KACArnE,OAAAmG,KAAA0jF,GAAAxnD,SAAA,SAAAliC,GACA0pF,EAAA1pF,GAAA8qF,QACA,IAAA/Q,OAAAwQ,mBAAAb,EAAA1pF,GAAAgO,OAAA,KACA68E,EAAA7qF,GAAA,CACA4Z,IAAA,WACA,OAAAjK,MAAA9M,KAAA2nF,QAAAzjF,OAAA/G,GACA,EAEA,IACA,OAAA6qF,CACA,CAbA,GAeA,IAAAD,EAAAhB,GAAA,SAAA1oF,SAAA,GAAAyoF,GAEA,SAAAe,aACA,IAAApqF,EAAAC,MAAAT,UAAAU,MAAAP,KAAAT,WAEA,IAAAw2E,EAAA11E,EAAAxB,KAAA,SAAAuV,GAEA,GAAAA,GAAA,MAAAA,EAAA1R,cAAA8Y,OAAA,CACA,OAAApH,CACA,MACA,OAAAgxB,EAAA0lD,QAAA12E,EACA,CACA,IAAAG,KAAA,KAEA,IAAAtT,EAAAlE,UAAAg5E,EAAA,CACA,OAAAA,CACA,CAEA,IAAAgV,EAAAhV,EAAA73E,QAAA,UAEA,IAAA8sF,EAAApoF,KAAA2nF,QAEA,IAAAhsF,EAAAysF,EAAAxsF,OACA,MAAAD,IAAA,CACA,IAAAwK,EAAA0gF,EAAAuB,EAAAzsF,IACAw3E,EAAAhtE,EAAAgyD,KAAAgb,EAAAvc,QAAAzwD,EAAA8hF,QAAA9hF,EAAAgyD,MAAAhyD,EAAAgF,MACA,GAAAg9E,EAAA,CACAhV,IAAAvc,QAAAqwB,GAAA,SAAAtzC,GACA,OAAAxtC,EAAAgF,MAAAwoC,EAAAxtC,EAAAgyD,IACA,GACA,CACA,CAEA,OAAAgb,CACA,CAEA90E,EAAAgqF,SAAA,SAAAC,GACA,UAAAA,IAAA,UACAvqF,QAAAC,IAAA,8DACA,qEACA,iEACA,2CACA,+DACA,uCACA,sCACA,MACA,CACA,QAAA2gF,KAAA2J,EAAA,EACA,SAAA3J,GACAtgF,EAAAsgF,GAAA,SAAAxL,GACA,UAAAmV,EAAA3J,KAAA,UACA,IAAA4J,EAAApV,EACA,QAAAx3E,KAAA2sF,EAAA3J,GAAA,CACA4J,EAAAlqF,EAAAiqF,EAAA3J,GAAAhjF,IAAA4sF,EACA,CACA,OAAAA,CACA,CACA,OAAAlqF,EAAAiqF,EAAA3J,IAAAxL,EACA,CACA,EAXA,CAWAwL,EACA,CACA,EAEA,SAAAxnC,OACA,IAAA6wC,EAAA,GACAhrF,OAAAmG,KAAA2jF,GAAAznD,SAAA,SAAA5yB,GACAu7E,EAAAv7E,GAAA,CACAsK,IAAA,WACA,OAAAjK,MAAA,CAAAL,GACA,EAEA,IACA,OAAAu7E,CACA,CAEA,IAAAQ,EAAA,SAAAA,UAAAvsF,EAAAk3E,GACA,IAAAsV,EAAAtV,EAAAzhE,MAAA,IACA+2E,IAAAxsF,OACA,OAAAwsF,EAAA92E,KAAA,GACA,EAGAtT,EAAAqqF,KAAAtuF,EAAA,MACAiE,EAAAsqF,MAAAvuF,EAAA,MAGAiE,EAAAuqF,KAAA,GACAvqF,EAAAuqF,KAAAC,QAAAzuF,EAAA,IAAAA,CAAAiE,GACAA,EAAAuqF,KAAAE,MAAA1uF,EAAA,KAAAA,CAAAiE,GACAA,EAAAuqF,KAAAG,QAAA3uF,EAAA,KAAAA,CAAAiE,GACAA,EAAAuqF,KAAA/oF,OAAAzF,EAAA,KAAAA,CAAAiE,GAEA,QAAApC,KAAAoC,EAAAuqF,KAAA,EACA,SAAA3sF,GACAoC,EAAApC,GAAA,SAAAk3E,GACA,OAAAqV,EAAAnqF,EAAAuqF,KAAA3sF,GAAAk3E,EACA,CACA,EAJA,CAIAl3E,EACA,CAEA8qF,EAAA1oF,EAAA84C,O,WClNA98C,EAAA,oBAAA2uF,WAAAlsE,EAAAhgB,GACA,IAAAif,EAAA,GACAe,KAAA,8BACAA,IAAApL,MAAA,IACA,IAAAg3E,EAAA,CACAp0D,EAAA,8BACAC,EAAA,0BACAqhC,EAAA,cACA0jB,EAAA,0BACA3+E,EAAA,6BACA,KACA+7C,EAAA,MACA8tB,EAAA,MACAE,EAAA,0BACA/oE,EAAA,MACA46B,EAAA,MACA6uC,EAAA,kBACAR,EAAA,MACAjzB,EAAA,0BACAE,EAAA,0BACAo3C,EAAA,6BACA,SACAjyC,EAAA,UACAivB,EAAA,MACA1B,EAAA,0BACAI,EAAA,kBACAlP,EAAA,cACA7jB,EAAA,UACApQ,EAAA,MACA0jC,EAAA,kBACAt9B,EAAA,kBACAu9B,EAAA,cACAO,EAAA,WAEA5oD,EAAAuiB,SAAA,SAAAu2B,GACAA,IAAA10B,cACA,IAAAgoD,EAAAR,EAAA9yB,IAAA,MACA,IAAAuzB,EAAAvpF,KAAA2mB,MAAA3mB,KAAAC,SAAAqpF,EAAAttF,QACA,UAAA8sF,EAAA9yB,KAAA,aACA75C,GAAA2sE,EAAA9yB,GAAAuzB,EACA,MACAptE,GAAA65C,CACA,CACA,IACA,OAAA75C,CACA,C,WC5CA1hB,EAAA,oBAAAsuF,MAAA7rE,EAAAhgB,GACAggB,KAAA,mBACA,IAAAssE,EAAA,CACAC,GAAA,CACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,SAEAC,KAAA,CACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,iBAEAC,IAAA,CACA,gBACA,gBACA,gBACA,YACA,gBACA,eAGA,IAAAvtF,EAAA,GAAAkI,OAAAklF,EAAAC,GAAAD,EAAAE,KAAAF,EAAAG,KAEA,SAAAv0D,aAAAw0D,GACA,IAAAjlB,EAAA3kE,KAAA2mB,MAAA3mB,KAAAC,SAAA2pF,GACA,OAAAjlB,CACA,CAEA,SAAAklB,OAAAC,GACA,IAAAC,EAAA,MACA3tF,EAAAqU,QAAA,SAAA1U,GACAguF,EAAAhuF,IAAA+tF,CACA,IACA,OAAAC,CACA,CAGA,SAAAC,QAAA9sE,EAAAhgB,GACA,IAAAif,EAAA,GACA,IAAA8tE,EACA,IAAAjlB,EACA9nE,KAAA,GACAA,EAAA,aACAA,EAAA,oBAAAA,EAAA,WACAA,EAAA,cACAA,EAAA,qBAAAA,EAAA,YACAA,EAAA,eACAA,EAAA,sBAAAA,EAAA,aACAA,EAAA,eACAA,EAAA,sBAAAA,EAAA,eACAggB,IAAApL,MAAA,IACA,IAAAkzD,KAAA9nD,EAAA,CACA,GAAA2sE,OAAA7kB,GAAA,CACA,QACA,CACA7oD,IAAAe,EAAA8nD,GACAilB,EAAA,CAAAR,GAAA,EAAAC,KAAA,EAAAC,IAAA,GACA,OAAAzsF,EAAA42B,MACA,WACAm2D,EAAAR,GAAAr0D,aAAA,GACA60D,EAAAN,IAAAv0D,aAAA,GACA60D,EAAAP,KAAAt0D,aAAA,GACA,MACA,WACA60D,EAAAR,GAAAr0D,aAAA,MACA60D,EAAAN,IAAAv0D,aAAA,KACA60D,EAAAP,KAAAt0D,aAAA,MACA,MACA,QACA60D,EAAAR,GAAAr0D,aAAA,KACA60D,EAAAN,IAAAv0D,aAAA,KACA60D,EAAAP,KAAAt0D,aAAA,KACA,MAGA,IAAA8hD,EAAA,oBACA,QAAAwC,KAAAxC,EAAA,CACA,IAAAzyE,EAAAyyE,EAAAwC,GACA,QAAA39E,EAAA,EAAAA,GAAAkuF,EAAAxlF,GAAA1I,IAAA,CACA,GAAAmB,EAAAuH,GAAA,CACA0X,IAAAqtE,EAAA/kF,GAAA2wB,aAAAo0D,EAAA/kF,GAAAzI,QACA,CACA,CACA,CACA,CACA,OAAAmgB,CACA,CAEA,OAAA6tE,QAAA9sE,EAAAhgB,EACA,C,UC5GAzC,EAAA,oBAAAgE,GACA,gBAAAyrF,EAAAnuF,EAAA8sF,GACA,GAAAqB,IAAA,WAAAA,EACA,OAAAnuF,EAAA,GACA,cAAA0C,EAAAkyE,IAAAuZ,GACA,cAAAzrF,EAAA0zE,MAAA+X,GACA,cAAAzrF,EAAAorE,KAAAqgB,GAEA,CACA,C,WCTAzvF,EAAA,oBAAAgE,GAEA,IAAA0rF,EAAA,0CACA,gBAAAD,EAAAnuF,EAAA8sF,GACA,GAAAqB,IAAA,KACA,OAAAA,CACA,MACA,OAAAzrF,EAAA0rF,EAAApuF,IAAAouF,EAAAnuF,SAAAkuF,EACA,CACA,CACA,C,WCVAzvF,EAAA,oBAAAgE,GACA,IAAA2rF,EAAA,qDACA,2DACA,uEACA,gBAAAF,EAAAnuF,EAAA8sF,GACA,OAAAqB,IAAA,IAAAA,EACAzrF,EACA2rF,EAAApqF,KAAA05D,MAAA15D,KAAAC,UAAAmqF,EAAApuF,OAAA,MACAkuF,EACA,CACA,C,WCVAzvF,EAAA,oBAAAgE,GACA,gBAAAyrF,EAAAnuF,EAAA8sF,GACA,OAAA9sF,EAAA,MAAAmuF,EAAAzrF,EAAA4rF,QAAAH,EACA,CACA,C,WCqBA,IAAAhD,EAAA,GACAzsF,EAAA,WAAAysF,EAEA,IAAAoD,EAAA,CACAzoF,MAAA,MAEA0oF,KAAA,OACAC,IAAA,OACAC,OAAA,OACAC,UAAA,OACAL,QAAA,OACAM,OAAA,OACAC,cAAA,OAEAjhB,MAAA,QACAgH,IAAA,QACAlE,MAAA,QACA4F,OAAA,QACAxI,KAAA,QACA2E,QAAA,QACAhE,KAAA,QACA2H,MAAA,QACA1N,KAAA,QACAkI,KAAA,QAEAke,UAAA,QACAC,YAAA,QACAC,aAAA,QACAC,WAAA,QACAC,cAAA,QACAC,WAAA,QACAC,YAAA,QAEAC,QAAA,QACAC,MAAA,QACAC,QAAA,QACAC,SAAA,QACAC,OAAA,QACAC,UAAA,QACAC,OAAA,QACAC,QAAA,QACAC,OAAA,SACAC,OAAA,SAEAC,YAAA,SACAC,cAAA,SACAC,eAAA,SACAC,aAAA,SACAC,gBAAA,SACAC,aAAA,SACAC,cAAA,SAGAC,QAAA,QACAC,MAAA,QACAC,QAAA,QACAC,SAAA,QACAC,OAAA,QACAC,UAAA,QACAC,OAAA,QACAC,QAAA,SAIAxvF,OAAAmG,KAAA+mF,GAAA7qD,SAAA,SAAAliC,GACA,IAAAglC,EAAA+nD,EAAA/sF,GACA,IAAAwhF,EAAAmI,EAAA3pF,GAAA,GACAwhF,EAAAxmB,KAAA,KAAAh2B,EAAA,OACAw8C,EAAAxzE,MAAA,KAAAg3B,EAAA,MACA,G,UCpEA9nC,EAAAC,QAAA,SAAAmyF,EAAAC,GACAA,KAAA7xF,QAAA6xF,MAAA,GAEA,IAAAC,EAAAD,EAAApxF,QAAA,MACA,IAAAkgE,EAAA,UAAA56B,KAAA6rD,GAAA,QACA,IAAA9zB,EAAA+zB,EAAApxF,QAAAkgE,EAAAixB,GAEA,OAAA9zB,KAAA,IAAAg0B,KAAA,OAAAh0B,EAAAg0B,EACA,C,iBCPA,IAAAhqC,EAAAvoD,EAAA,MACA,IAAAwyF,EAAAxyF,EAAA,KAEA,IAAAU,EAAAD,QAAAC,IAEA,IAAA+xF,OAAA,EACA,GAAAD,EAAA,aAAAA,EAAA,cAAAA,EAAA,gBACAC,EAAA,KACA,SAAAD,EAAA,UAAAA,EAAA,WAAAA,EAAA,eACAA,EAAA,iBACAC,EAAA,IACA,CACA,mBAAA/xF,EAAA,CACA+xF,EAAA/xF,EAAAgyF,YAAAlxF,SAAA,GACAoxC,SAAAlyC,EAAAgyF,YAAA,OACA,CAEA,SAAAC,eAAA3X,GACA,GAAAA,IAAA,GACA,YACA,CAEA,OACAA,QACA4X,SAAA,KACAC,OAAA7X,GAAA,EACA8X,OAAA9X,GAAA,EAEA,CAEA,SAAA8R,cAAAvzE,GACA,GAAAk5E,IAAA,OACA,QACA,CAEA,GAAAD,EAAA,cAAAA,EAAA,eACAA,EAAA,oBACA,QACA,CAEA,GAAAA,EAAA,cACA,QACA,CAEA,GAAAj5E,MAAAw5E,OAAAN,IAAA,MACA,QACA,CAEA,IAAAntF,EAAAmtF,EAAA,IAEA,GAAAhyF,QAAAuyF,WAAA,SAOA,IAAAC,EAAA1qC,EAAA2qC,UAAA57E,MAAA,KACA,GAAA9J,OAAA/M,QAAA0yF,SAAA5kB,KAAAj3D,MAAA,aACA9J,OAAAylF,EAAA,SAAAzlF,OAAAylF,EAAA,YACA,OAAAzlF,OAAAylF,EAAA,cACA,CAEA,QACA,CAEA,UAAAvyF,EAAA,CACA,gDAAAwB,MAAA,SAAA+8D,GACA,OAAAA,KAAAv+D,CACA,KAAAA,EAAA0yF,UAAA,YACA,QACA,CAEA,OAAA9tF,CACA,CAEA,wBAAA5E,EAAA,CACA,sCAAA8lC,KAAA9lC,EAAA2yF,kBAAA,GAEA,CAEA,oBAAA3yF,EAAA,CACA,IAAA4yF,EAAA1gD,UAAAlyC,EAAA6yF,sBAAA,IAAAj8E,MAAA,YAEA,OAAA5W,EAAA8yF,cACA,gBACA,OAAAF,GAAA,MACA,YACA,SACA,qBACA,SAGA,CAEA,oBAAA9sD,KAAA9lC,EAAA+yF,MAAA,CACA,QACA,CAEA,0DAAAjtD,KAAA9lC,EAAA+yF,MAAA,CACA,QACA,CAEA,iBAAA/yF,EAAA,CACA,QACA,CAEA,GAAAA,EAAA+yF,OAAA,QACA,OAAAnuF,CACA,CAEA,OAAAA,CACA,CAEA,SAAAouF,gBAAAn6E,GACA,IAAAyhE,EAAA8R,cAAAvzE,GACA,OAAAo5E,eAAA3X,EACA,CAEA/6E,EAAAC,QAAA,CACA4sF,cAAA4G,gBACAC,OAAAD,gBAAAjzF,QAAAkzF,QACAC,OAAAF,gBAAAjzF,QAAAmzF,Q,iBC7IA,IAAA3vF,EAAAjE,EAAA,MACAC,EAAA,WAAAgE,C,iBCNA,MAAAi9B,UAAAkpD,QAAAR,WAAA5pF,EAAA,MAEA,MAAA2pF,OACA,WAAAjkF,CAAAokF,EAAA,CAAAC,OAAA7oD,EAAA2yD,IAAA9J,SACAnkF,KAAAkuF,SAAAnK,OAAAoK,iBAAAjK,EAAAC,OAAAD,EAAAkK,QACApuF,KAAAlD,QAAAonF,CACA,CAOA,sBAAAmK,CAAAlK,GACA,MAAAmK,EAAAtxF,OAAAmG,KAAAghF,GAAAloF,KAAAm5E,KAAAx5E,SACA,OAAAgE,KAAAD,OAAA2uF,EACA,CAUA,sBAAAC,CAAAnZ,EAAAgZ,EAAAI,GACA,MAAAC,EAAAD,EAAA,EAAApZ,EAAAx5E,OACA,MAAA8yF,EAAA9uF,KAAA2mB,MAAAkoE,EAAAL,EAAAxyF,QACA,MAAA+yF,EAAA,GAAAP,MAAAQ,OAAAF,KACA,OAAAC,EAAAhxF,MAAA,EAAA8wF,EACA,CASA,uBAAAN,CAAAhK,EAAAiK,EAAA,KACA,MAAAI,EAAAzK,OAAAsK,gBAAAlK,GACA,OAAAnnF,OAAAmG,KAAAghF,GAAA7iE,QAAA,CAAAC,EAAA6zD,KACA7zD,EAAA6zD,GAAA2O,OAAAwK,gBAAAnZ,EAAAgZ,EAAAI,GACA,OAAAjtE,CAAA,GACA,GACA,CAaA,SAAAi9D,CAAAjhD,EAAA2mD,GACA3mD,EAAA3gC,QAAA,GAAAoD,KAAAkuF,SAAA3wD,EAAAinD,MAAAjnD,EAAA3gC,UACA,GAAA2gC,EAAAymD,GAAA,CACAzmD,EAAAymD,GAAA,GAAAhkF,KAAAkuF,SAAA3wD,EAAAinD,MAAAjnD,EAAAymD,IACA,CAEA,OAAAzmD,CACA,EASAljC,EAAAC,QAAA4pF,GAAA,IAAAH,OAAAG,GAEA7pF,EAAAC,QAAAypF,OACA1pF,EAAAC,QAAAiqF,OACAR,M,iBChFA,MAAAmE,EAAA9tF,EAAA,cACA,MAAA4nB,EAAA5nB,EAAA,MACA,MAAAoqF,QAAAR,UAAA6K,SAAAz0F,EAAA,MAQAC,EAAAC,QAAA0nB,GAAA,CAAAub,EAAA2mD,EAAA,MAMA,MAAA4K,EAAA9xF,OAAAwJ,OAAA,GAAA+2B,UAIAuxD,EAAAtK,UACAsK,EAAA9K,UACA8K,EAAAD,GAEAtxD,EAAAymD,GAAAkE,EAAA4G,EAAA,MAAA5K,EAAA6K,OAAA,KAAA7K,EAAAY,UACA,OAAAvnD,CAAA,G,iBCzBA,MAAAymD,WAAA5pF,EAAA,MAEA,MAAA40F,OACA,WAAAlvF,CAAAmvF,GACAjvF,KAAAkvF,SAAAD,CACA,CAEA,SAAAzQ,CAAAjhD,GACAA,EAAAymD,GAAAhkF,KAAAkvF,SAAA3xD,GACA,OAAAA,CACA,EASAljC,EAAAC,QAAA4pF,GAAA,IAAA8K,OAAA9K,GAEA7pF,EAAAC,QAAA00F,OACA30F,EAAAC,QAAAiqF,OACAyK,M,iBCtBA,MAAAhtE,EAAA5nB,EAAA,MACA,MAAA4pF,WAAA5pF,EAAA,MACA,MAAAyrF,EAAAzrF,EAAA,MAYAC,EAAAC,QAAA0nB,GAAAub,IACA,MAAA4xD,EAAAtJ,EAAA7oF,OAAAwJ,OAAA,GAAA+2B,EAAA,CACA63C,MAAA9wE,UACA1H,QAAA0H,UACA8qF,MAAA9qF,aAGA,MAAAqqF,EAAApxD,EAAAoxD,SAAApxD,EAAAoxD,QAAApxD,EAAA63C,QAAA,GACA,GAAA+Z,IAAA,MACA5xD,EAAAymD,GAAA,GAAAzmD,EAAA63C,SAAAuZ,KAAApxD,EAAA3gC,WAAAuyF,GACA,MACA5xD,EAAAymD,GAAA,GAAAzmD,EAAA63C,SAAAuZ,KAAApxD,EAAA3gC,SACA,CAEA,OAAA2gC,CAAA,G,iBC7BA,MAAAiF,EAAApoC,EAAA,MACA,MAAAy0F,SAAAz0F,EAAA,MAQA,MAAAi1F,EAAA,gBAMA,MAAAC,EAAA,MAEA,MAAAC,SACA,WAAAzvF,CAAAokF,GACAlkF,KAAAlD,QAAAonF,CACA,CAWA,MAAAsL,CAAAjyD,EAAAwL,GACA,MAAA1jC,EAAAk4B,EAAA3gC,QACA,MAAAwyF,EAAA7xD,EAAAsxD,IAAAtxD,EAAA6xD,OAAA,GACA,MAAAK,EAAApqF,EAAAsuC,MAAA27C,GACA,MAAAI,EAAAD,KAAA7zF,QAAA,EAgBA,MAAA+zF,EAAA5mD,EAAAntC,OAAA8zF,EACA,MAAAE,EAAAD,EAAAP,EAAAxzF,OACA,MAAAi0F,EAAAD,EAAA,EACAR,EAAA5kE,OAAAolE,GAAA,EAAAA,GACA,GAMA,MAAAE,EAAAD,EAAAj0F,OACA,GAAAk0F,EAAA,CACA,QAAAn0F,EAAA,EAAAA,EAAAm0F,EAAAn0F,IAAA,CACAqB,OAAAwJ,OAAA+2B,EAAAsyD,EAAAl0F,GACA,CACA,CAEA4hC,EAAA3gC,QAAA4lC,EAAAxgB,OAAA3c,KAAA+pF,GACA,OAAA7xD,CACA,CAWA,SAAAihD,CAAAjhD,GACA,MAAAl4B,EAAAk4B,EAAA3gC,QACA,MAAAwyF,EAAA7xD,EAAAsxD,IAAAtxD,EAAA6xD,MAGA,IAAAA,MAAAxzF,OAAA,CACA,OAAA2hC,CACA,CAIA,MAAAwL,EAAA1jC,KAAAsuC,OAAAtuC,EAAAsuC,MAAA07C,GAIA,IAAAtmD,IAAAqmD,KAAAxzF,QAAA,CACA,MAAAi0F,EAAAT,EAAAxzF,OAAA,EACAwzF,EAAA5kE,OAAA,GACA4kE,EAMA,MAAAU,EAAAD,EAAAj0F,OACA,GAAAk0F,EAAA,CACA,QAAAn0F,EAAA,EAAAA,EAAAm0F,EAAAn0F,IAAA,CACAqB,OAAAwJ,OAAA+2B,EAAAsyD,EAAAl0F,GACA,CACA,CAEA,OAAA4hC,CACA,CAEA,GAAAwL,EAAA,CACA,OAAA/oC,KAAAwvF,OAAAjyD,EAAAwL,EACA,CAEA,OAAAxL,CACA,EASAljC,EAAAC,QAAA4pF,GAAA,IAAAqL,SAAArL,E,iBCjIA,MAAAvG,EAAAvjF,EAAA,MACA,MAAA4nB,EAAA5nB,EAAA,MAUAC,EAAAC,QAAA0nB,GAAA,CAAAub,EAAA2mD,EAAA,MACA,GAAAA,EAAAliE,OAAA,CACAub,EAAA2oD,iBAAAhC,EAAAliE,SAAA,WACAkiE,EAAAliE,SACA27D,EAAA37D,OAAA,IAAAxhB,KAAA0jF,EAAAliE,OACA,CAEA,IAAAub,EAAA2oD,UAAA,CACA3oD,EAAA2oD,WAAA,IAAA1lF,MAAAyY,aACA,CAEA,GAAAirE,EAAA6L,MAAA,CACAxyD,EAAA2mD,EAAA6L,OAAAxyD,EAAA2oD,SACA,CAEA,OAAA3oD,CAAA,G,iBC1BA,MAAAl/B,EAAAjE,EAAA,MACA,MAAA4nB,EAAA5nB,EAAA,MACA,MAAA4pF,WAAA5pF,EAAA,MAQAC,EAAAC,QAAA0nB,GAAA,CAAAub,EAAA2mD,KACA,GAAAA,EAAA9O,QAAA,OACA73C,EAAA63C,MAAA/2E,EAAAipF,MAAA/pD,EAAA63C,MACA,CAEA,GAAA8O,EAAAtnF,UAAA,OACA2gC,EAAA3gC,QAAAyB,EAAAipF,MAAA1uE,OAAA2kB,EAAA3gC,SACA,CAEA,GAAAsnF,EAAAzpC,MAAA,OAAAld,EAAAymD,GAAA,CACAzmD,EAAAymD,GAAA3lF,EAAAipF,MAAA1uE,OAAA2kB,EAAAymD,IACA,CAEA,OAAAzmD,CAAA,G,UCrBA,IAAAonC,EAAA,IACA,IAAAhzB,EAAAgzB,EAAA,GACA,IAAAD,EAAA/yB,EAAA,GACA,IAAA2nC,EAAA5U,EAAA,GACA,IAAAQ,EAAAoU,EAAA,EACA,IAAAnU,EAAAmU,EAAA,OAgBAj/E,EAAAC,QAAA,SAAA6nC,EAAArlC,GACAA,KAAA,GACA,IAAAmuB,SAAAkX,EACA,GAAAlX,IAAA,UAAAkX,EAAAvmC,OAAA,GACA,OAAAwsC,MAAAjG,EACA,SAAAlX,IAAA,UAAA+kE,SAAA7tD,GAAA,CACA,OAAArlC,EAAAmzF,KAAAC,QAAA/tD,GAAAguD,SAAAhuD,EACA,CACA,UAAAn/B,MACA,wDACA0mB,KAAAC,UAAAwY,GAEA,EAUA,SAAAiG,MAAA+qC,GACAA,EAAAv6D,OAAAu6D,GACA,GAAAA,EAAAv3E,OAAA,KACA,MACA,CACA,IAAA+3C,EAAA,mIAAAib,KACAukB,GAEA,IAAAx/B,EAAA,CACA,MACA,CACA,IAAA9B,EAAA+gC,WAAAj/B,EAAA,IACA,IAAA1oB,GAAA0oB,EAAA,UAAAzS,cACA,OAAAjW,GACA,YACA,WACA,UACA,SACA,QACA,OAAA4mB,EAAAszB,EACA,YACA,WACA,QACA,OAAAtzB,EAAAqzB,EACA,WACA,UACA,QACA,OAAArzB,EAAAynC,EACA,YACA,WACA,UACA,SACA,QACA,OAAAznC,EAAA6yB,EACA,cACA,aACA,WACA,UACA,QACA,OAAA7yB,EAAAF,EACA,cACA,aACA,WACA,UACA,QACA,OAAAE,EAAA8yB,EACA,mBACA,kBACA,YACA,WACA,SACA,OAAA9yB,EACA,QACA,OAAAvtC,UAEA,CAUA,SAAA6rF,SAAA1J,GACA,IAAA2J,EAAAxwF,KAAAi7E,IAAA4L,GACA,GAAA2J,GAAA9W,EAAA,CACA,OAAA15E,KAAA05D,MAAAmtB,EAAAnN,GAAA,GACA,CACA,GAAA8W,GAAA1rB,EAAA,CACA,OAAA9kE,KAAA05D,MAAAmtB,EAAA/hB,GAAA,GACA,CACA,GAAA0rB,GAAAz+C,EAAA,CACA,OAAA/xC,KAAA05D,MAAAmtB,EAAA90C,GAAA,GACA,CACA,GAAAy+C,GAAAzrB,EAAA,CACA,OAAA/kE,KAAA05D,MAAAmtB,EAAA9hB,GAAA,GACA,CACA,OAAA8hB,EAAA,IACA,CAUA,SAAAyJ,QAAAzJ,GACA,IAAA2J,EAAAxwF,KAAAi7E,IAAA4L,GACA,GAAA2J,GAAA9W,EAAA,CACA,OAAA+W,OAAA5J,EAAA2J,EAAA9W,EAAA,MACA,CACA,GAAA8W,GAAA1rB,EAAA,CACA,OAAA2rB,OAAA5J,EAAA2J,EAAA1rB,EAAA,OACA,CACA,GAAA0rB,GAAAz+C,EAAA,CACA,OAAA0+C,OAAA5J,EAAA2J,EAAAz+C,EAAA,SACA,CACA,GAAAy+C,GAAAzrB,EAAA,CACA,OAAA0rB,OAAA5J,EAAA2J,EAAAzrB,EAAA,SACA,CACA,OAAA8hB,EAAA,KACA,CAMA,SAAA4J,OAAA5J,EAAA2J,EAAAv+C,EAAAplC,GACA,IAAA6jF,EAAAF,GAAAv+C,EAAA,IACA,OAAAjyC,KAAA05D,MAAAmtB,EAAA50C,GAAA,IAAAplC,GAAA6jF,EAAA,OACA,C,iBC/JA,IAAA7jF,EAAArS,EAAA,MASAC,EAAAC,QAAA,SAAAi2F,IAAA/1F,GACA,IAAAg2F,EAAA,EACA5xF,EAOA,SAAA6xF,UACA,GAAAD,EAAA,OAAA5xF,EAEA4xF,EAAA,EACA5xF,EAAApE,EAAAkC,MAAAsD,KAAArD,WACAnC,EAAA,KAEA,OAAAoE,CACA,CAWA6xF,QAAA7S,YAAAnxE,EAAAjS,GACA,OAAAi2F,OACA,C,iBCxCA,IAAAC,EAAAt2F,EAAA,MACAC,EAAAC,UAAAo2F,EAAA95C,WAAA85C,EAAArgC,KAAAgD,SAAAj5D,EAAA,OAAA4oC,OAAA,oBAEA,IAAAotB,EAAAsgC,EAAAtgC,UACAC,EAAAqgC,EAAArgC,KACAH,EAAAwgC,EAAAxgC,KACAD,EAAAygC,EAAAzgC,KACA0gC,EAAAD,EAAAC,MACAC,EAAAF,EAAAE,SACAC,EAAAH,EAAAG,MACA7gC,EAAA0gC,EAAA1gC,QACA8gC,EAAAJ,EAAAI,OA4DAzgC,EAAA2C,eAAA,SAAAA,eAAApc,GAGA,UAAAA,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAAk5D,kBAAAxC,OAAApa,GAEA,IAAA4b,EAAA,IAAAnC,EAEA,GAAAzZ,EAAA+b,KAAA,CACA,IAAAo+B,EACAC,EACA,QAAAz6D,EAAA,EAAA56B,EAAA46B,EAAAqgB,EAAA+b,KAAA/2D,SAAA26B,EAAA,CACAy6D,EAAAx+B,EACA,IAAAu+B,EAAAn6C,EAAA+b,KAAAp8B,IAAA,YAAAw6D,EAAA,WAAAn1F,OACAo1F,EAAAx+B,EAAAy+B,OAAAF,EAAA,YACA,GAAAA,EAAAtkF,MAAAskF,EAAAtkF,KAAA7Q,OACA42D,EAAA0+B,MAAA31F,KAAAy1F,EAAAjvE,SAAAgvE,EAAAtkF,MACA,GAAAskF,EAAAI,YACA,IAAAx1F,EAAA,EAAAA,EAAAo1F,EAAAI,YAAAv1F,SAAAD,EACAq1F,EAAA5tF,IAAA6sD,EAAA+C,eAAA+9B,EAAAI,YAAAx1F,GAAAo1F,EAAAK,SACA,GAAAL,EAAA3+B,SACA,IAAAz2D,EAAA,EAAAA,EAAAo1F,EAAA3+B,SAAAx2D,SAAAD,EACAq1F,EAAA5tF,IAAA8sD,EAAA8C,eAAA+9B,EAAA3+B,SAAAz2D,KACA,GAAAo1F,EAAAM,UACA,IAAA11F,EAAA,EAAAA,EAAAo1F,EAAAM,UAAAz1F,SAAAD,EACAq1F,EAAA5tF,IAAAutF,EAAA39B,eAAA+9B,EAAAM,UAAA11F,KACA,GAAAo1F,EAAAnxD,QACA,IAAAjkC,EAAA,EAAAA,EAAAo1F,EAAAnxD,QAAAhkC,SAAAD,EACAq1F,EAAA5tF,IAAA4sD,EAAAgD,eAAA+9B,EAAAnxD,QAAAjkC,KACA,IAAAuoF,EAAAoN,sBAAAP,EAAAj0F,QAAAxC,EAAAi3F,aACA,GAAArN,EAAA,CACA,IAAAsN,EAAAx0F,OAAAmG,KAAA+gF,GACA,IAAAvoF,EAAA,EAAAA,EAAA61F,EAAA51F,SAAAD,EACAq1F,EAAAS,UAAAD,EAAA71F,GAAAuoF,EAAAsN,EAAA71F,IACA,CACA,CACA,CAEA,OAAA62D,CACA,EAOAnC,EAAApzD,UAAA+0D,aAAA,SAAAA,aAAAo/B,GACA,IAAA51F,EAAAlB,EAAAk5D,kBAAAj5D,SACAm3F,2BAAA1xF,KAAAxE,EAAAm3D,KAAAy+B,GACA,OAAA51F,CACA,EAGA,SAAAk2F,2BAAAC,EAAAT,EAAAE,GAGA,IAAAz+B,EAAAr4D,EAAAu4D,oBAAAt4D,OAAA,CAAAkS,KAAAklF,EAAA5vE,WAAA4vE,EAAAC,SAAA/nE,UAAA,GAAA+sC,QAAA,+BACA,GAAAw6B,EACAz+B,EAAAy+B,SACA,KAAAO,aAAAthC,GACAsC,EAAA,WAAAg/B,EAAAC,SAAA/nE,UAAA,GAGA,QAAAluB,EAAA,EAAA80D,EAAA90D,EAAAg2F,EAAAE,YAAAj2F,SAAAD,EACA,IAAA80D,EAAAkhC,EAAAG,aAAAn2F,cAAAs0D,EACA0C,EAAAw+B,YAAA51F,KAAAk1D,EAAAuB,aAAAo/B,SACA,GAAA3gC,aAAAP,EACAyC,EAAAP,SAAA72D,KAAAk1D,EAAAuB,qBACA,GAAAvB,aAAAkgC,EACAh+B,EAAA0+B,UAAA91F,KAAAk1D,EAAAuB,aAAAo/B,SACA,GAAA3gC,aAAAT,EACA2C,EAAA/yB,QAAArkC,KAAAk1D,EAAAuB,qBACA,GAAAvB,aAAAL,EACAshC,2BAAAjhC,EAAAygC,EAAAE,GAGAz+B,EAAA71D,QAAAi1F,oBAAAJ,EAAA70F,QAAAxC,EAAAi3F,aAGA,GAAA5+B,EAAAw+B,YAAAv1F,OAAA+2D,EAAAP,SAAAx2D,OAAA+2D,EAAA0+B,UAAAz1F,OAAA+2D,EAAA/yB,QAAAhkC,OACAs1F,EAAA31F,KAAAo3D,EACA,CAuCA,IAAAq/B,EAAA,EAQA/hC,EAAA+C,eAAA,SAAAA,eAAApc,EAAAw6C,GAGA,UAAAx6C,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAA23F,gBAAAjhC,OAAApa,GAGA,IAAA3rB,EAAA,IAAAglC,EAAArZ,EAAAnqC,KAAA7Q,OAAAg7C,EAAAnqC,KAAA,OAAAulF,IAAAV,sBAAA16C,EAAA95C,QAAAxC,EAAA43F,iBACAv2F,EAEA,GAAAi7C,EAAAu7C,UACA,IAAAx2F,EAAA,EAAAA,EAAAi7C,EAAAu7C,UAAAv2F,SAAAD,EACAsvB,EAAA7nB,IAAAytF,EAAA79B,eAAApc,EAAAu7C,UAAAx2F,KACA,GAAAi7C,EAAAmN,MACA,IAAApoD,EAAA,EAAAA,EAAAi7C,EAAAmN,MAAAnoD,SAAAD,EAAA,CACA,IAAAooD,EAAA4sC,EAAA39B,eAAApc,EAAAmN,MAAApoD,GAAAy1F,GACAnmE,EAAA7nB,IAAA2gD,GACA,GAAAnN,EAAAmN,MAAApoD,GAAAuB,eAAA,cACA+tB,EAAAmnE,YAAAx7C,EAAAmN,MAAApoD,GAAA02F,YAAAjvF,IAAA2gD,EACA,CACA,GAAAnN,EAAAy6C,UACA,IAAA11F,EAAA,EAAAA,EAAAi7C,EAAAy6C,UAAAz1F,SAAAD,EACAsvB,EAAA7nB,IAAAutF,EAAA39B,eAAApc,EAAAy6C,UAAA11F,GAAAy1F,IACA,GAAAx6C,EAAA07C,WACA,IAAA32F,EAAA,EAAAA,EAAAi7C,EAAA07C,WAAA12F,SAAAD,EAAA,CACAsvB,EAAA7nB,IAAA6sD,EAAA+C,eAAApc,EAAA07C,WAAA32F,GAAAy1F,IACA,GAAAx6C,EAAA07C,WAAA32F,GAAAmB,SAAA85C,EAAA07C,WAAA32F,GAAAmB,QAAAs0B,SACAnG,EAAAwmE,UAAA,iBACA,CACA,GAAA76C,EAAAwb,SACA,IAAAz2D,EAAA,EAAAA,EAAAi7C,EAAAwb,SAAAx2D,SAAAD,EACAsvB,EAAA7nB,IAAA8sD,EAAA8C,eAAApc,EAAAwb,SAAAz2D,KACA,GAAAi7C,EAAA27C,gBAAA37C,EAAA27C,eAAA32F,OAAA,CACAqvB,EAAAunE,WAAA,GACA,IAAA72F,EAAA,EAAAA,EAAAi7C,EAAA27C,eAAA32F,SAAAD,EACAsvB,EAAAunE,WAAAj3F,KAAA,CAAAq7C,EAAA27C,eAAA52F,GAAAoR,MAAA6pC,EAAA27C,eAAA52F,GAAAukB,KACA,CACA,GAAA02B,EAAA67C,eAAA77C,EAAA67C,cAAA72F,QAAAg7C,EAAA87C,cAAA97C,EAAA87C,aAAA92F,OAAA,CACAqvB,EAAA0nE,SAAA,GACA,GAAA/7C,EAAA67C,cACA,IAAA92F,EAAA,EAAAA,EAAAi7C,EAAA67C,cAAA72F,SAAAD,EACAsvB,EAAA0nE,SAAAp3F,KAAA,CAAAq7C,EAAA67C,cAAA92F,GAAAoR,MAAA6pC,EAAA67C,cAAA92F,GAAAukB,MACA,GAAA02B,EAAA87C,aACA,IAAA/2F,EAAA,EAAAA,EAAAi7C,EAAA87C,aAAA92F,SAAAD,EACAsvB,EAAA0nE,SAAAp3F,KAAAq7C,EAAA87C,aAAA/2F,GACA,CAEA,OAAAsvB,CACA,EAOAglC,EAAAhzD,UAAA+0D,aAAA,SAAAA,aAAAo/B,GACA,IAAAx6C,EAAAt8C,EAAA23F,gBAAA13F,OAAA,CAAAkS,KAAAzM,KAAAyM,OACA9Q,EAEA,IAAAA,EAAA,EAAAA,EAAAqE,KAAA4yF,YAAAh3F,SAAAD,EAAA,CACA,IAAAk3F,EACAj8C,EAAAmN,MAAAxoD,KAAAs3F,EAAA7yF,KAAA8yF,aAAAn3F,GAAAq2D,aAAAo/B,IACA,GAAApxF,KAAA8yF,aAAAn3F,aAAAi1F,EAAA,CACA,IAAAmC,EAAAC,iBAAAhzF,KAAA8yF,aAAAn3F,GAAAo3F,QAAA/yF,KAAA8yF,aAAAn3F,GAAAs3F,iBACAC,EAAAF,iBAAAhzF,KAAA8yF,aAAAn3F,GAAAsvB,KAAAjrB,KAAA8yF,aAAAn3F,GAAAw3F,cACAC,EAAAF,IAAA,IAAAA,IAAA,GACAlzF,KAAA8yF,aAAAn3F,GAAAw3F,cAAAE,UAAArzF,KAAA4O,OAAA5O,KAAA8yF,aAAAn3F,GAAAw3F,eAAAnzF,KAAA8yF,aAAAn3F,GAAAsvB,KACA3mB,UACAsyC,EAAA07C,WAAA/2F,KAAAjB,EAAA23F,gBAAA13F,OAAA,CACAkS,KAAAomF,EAAA73D,SACA+oB,MAAA,CACAzpD,EAAAg5F,qBAAA/4F,OAAA,CAAAkS,KAAA,MAAA8mF,OAAA,EAAAvN,MAAA,EAAA/6D,KAAA8nE,IACAz4F,EAAAg5F,qBAAA/4F,OAAA,CAAAkS,KAAA,QAAA8mF,OAAA,EAAAvN,MAAA,EAAA/6D,KAAAioE,EAAAl4D,SAAAo4D,KAEAt2F,QAAAxC,EAAA43F,eAAA33F,OAAA,CAAA62B,SAAA,SAEA,CACA,CACA,IAAAz1B,EAAA,EAAAA,EAAAqE,KAAAoyF,YAAAx2F,SAAAD,EACAi7C,EAAAu7C,UAAA52F,KAAAyE,KAAAwzF,aAAA73F,GAAAq2D,gBACA,IAAAr2D,EAAA,EAAAA,EAAAqE,KAAA6xF,YAAAj2F,SAAAD,EAAA,CACA,GAAAqE,KAAA8xF,aAAAn2F,aAAAg1F,EACA/5C,EAAAmN,MAAAxoD,KAAAyE,KAAA8xF,aAAAn2F,GAAAq2D,aAAAo/B,SACA,GAAApxF,KAAA8xF,aAAAn2F,aAAAs0D,EACArZ,EAAA07C,WAAA/2F,KAAAyE,KAAA8xF,aAAAn2F,GAAAq2D,aAAAo/B,SACA,GAAApxF,KAAA8xF,aAAAn2F,aAAAu0D,EACAtZ,EAAAwb,SAAA72D,KAAAyE,KAAA8xF,aAAAn2F,GAAAq2D,eAEA,CACA,GAAAhyD,KAAAwyF,WACA,IAAA72F,EAAA,EAAAA,EAAAqE,KAAAwyF,WAAA52F,SAAAD,EACAi7C,EAAA27C,eAAAh3F,KAAAjB,EAAA23F,gBAAAwB,eAAAl5F,OAAA,CAAAwS,MAAA/M,KAAAwyF,WAAA72F,GAAA,GAAAukB,IAAAlgB,KAAAwyF,WAAA72F,GAAA,MACA,GAAAqE,KAAA2yF,SACA,IAAAh3F,EAAA,EAAAA,EAAAqE,KAAA2yF,SAAA/2F,SAAAD,EACA,UAAAqE,KAAA2yF,SAAAh3F,KAAA,SACAi7C,EAAA87C,aAAAn3F,KAAAyE,KAAA2yF,SAAAh3F,SAEAi7C,EAAA67C,cAAAl3F,KAAAjB,EAAA23F,gBAAAyB,cAAAn5F,OAAA,CAAAwS,MAAA/M,KAAA2yF,SAAAh3F,GAAA,GAAAukB,IAAAlgB,KAAA2yF,SAAAh3F,GAAA,MAEAi7C,EAAA95C,QAAAi1F,oBAAA/xF,KAAAlD,QAAAxC,EAAA43F,gBAEA,OAAAt7C,CACA,EAqEA,IAAA+8C,EAAA,oDAQAhD,EAAA39B,eAAA,SAAAA,eAAApc,EAAAw6C,GAGA,UAAAx6C,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAA23F,gBAAAjhC,OAAApa,GAEA,UAAAA,EAAA28C,SAAA,SACA,MAAAvwF,MAAA,oBAGA,IAAA4wF,EACA,GAAAh9C,EAAA5b,UAAA4b,EAAA5b,SAAAp/B,OACAg4F,EAAAh9C,EAAA5b,cAEA44D,EAAAC,mBAAAj9C,EAAA3rB,MAGA,IAAA6oE,EACA,OAAAl9C,EAAAovC,OAEA,OAAA8N,EAAAxvF,UAAA,MACA,OAAAwvF,EAAA,iBACA,OAAAA,EAAA,iBACA,cAAA9wF,MAAA,kBAAA4zC,EAAAovC,OAGA,IAAA+N,EAAAn9C,EAAAm9C,SACA,GAAAn9C,EAAAm9C,WAAAzvF,UAAA,CACAyvF,IAAAn4F,OAAAm4F,EAAAzvF,SACA,CACA,IAAAy/C,EAAA,IAAA4sC,EACA/5C,EAAAnqC,KAAA7Q,OAAAg7C,EAAAnqC,KAAA,QAAAmqC,EAAA28C,OACA38C,EAAA28C,OACAK,EACAE,EACAC,GAGAhwC,EAAAjnD,QAAAw0F,sBAAA16C,EAAA95C,QAAAxC,EAAA05F,cAEA,GAAAp9C,EAAAq9C,cAAAr9C,EAAAq9C,aAAAr4F,OAAA,CACA,IAAAq4F,EAAAr9C,EAAAq9C,aACA,OAAAA,GACA,sBACAA,EAAA,KACA,MACA,wBACAA,EAAA,MACA,MACA,QACA,IAAAtgD,EAAAggD,EAAA/kC,KAAAqlC,GACA,GAAAtgD,EACAsgD,EAAAjnD,SAAAinD,GACA,MAEAlwC,EAAA0tC,UAAA,UAAAwC,EACA,CAEA,GAAAC,uBAAAt9C,EAAA3rB,MAAA,CACA,GAAAmmE,IAAA,UACA,GAAAx6C,EAAA95C,UAAA85C,EAAA95C,QAAAq3F,OACApwC,EAAA0tC,UAAA,eACA,WAAA76C,EAAA95C,SAAA85C,EAAA95C,QAAAq3F,QACApwC,EAAA0tC,UAAA,eACA,CAEA,OAAA1tC,CACA,EAOA4sC,EAAA1zF,UAAA+0D,aAAA,SAAAA,aAAAo/B,GACA,IAAAx6C,EAAAt8C,EAAAg5F,qBAAA/4F,OAAA,CAAAkS,KAAAzM,KAAAyM,KAAA8mF,OAAAvzF,KAAA4pB,KAEA,GAAA5pB,KAAA/D,IAAA,CAEA26C,EAAA3rB,KAAA,GACA2rB,EAAA5b,SAAA01D,EAAAluD,KAAA4xD,QAAAp0F,KAAAyM,MACAmqC,EAAAovC,MAAA,CAEA,MAGA,OAAApvC,EAAA3rB,KAAA+nE,iBAAAhzF,KAAAirB,KAAAjrB,KAAAjE,UAAAo3F,eACA,QACA,QACA,QACAv8C,EAAA5b,SAAAh7B,KAAAmzF,aAAAE,UAAArzF,KAAA4O,OAAA5O,KAAAmzF,cAAAnzF,KAAAirB,KACA,MAIA,OAAAjrB,KAAAq0F,MACA,eAAAz9C,EAAAovC,MAAA,QACA,eAAApvC,EAAAovC,MAAA,QACA,QAAApvC,EAAAovC,MAAA,QAGA,CAGApvC,EAAAm9C,SAAA/zF,KAAAs0F,eAAAt0F,KAAAs0F,eAAA1lF,OAAAgjF,SAAA5xF,KAAAu0F,OAGA,GAAAv0F,KAAAw0F,OACA,IAAA59C,EAAAy7C,WAAAryF,KAAA4O,OAAAwjF,YAAA92F,QAAA0E,KAAAw0F,SAAA,EACA,MAAAxxF,MAAA,iBAEA,GAAAhD,KAAAlD,QAAA,CACA85C,EAAA95C,QAAAi1F,oBAAA/xF,KAAAlD,QAAAxC,EAAA05F,cACA,GAAAh0F,KAAAlD,QAAA,iBACA85C,EAAAq9C,aAAAr7E,OAAA5Y,KAAAlD,QAAA,WACA,CAEA,GAAAs0F,IAAA,UACA,IAAApxF,KAAAm0F,QACAv9C,EAAA95C,UAAA85C,EAAA95C,QAAAxC,EAAA05F,aAAAz5F,WAAA45F,OAAA,KACA,SAAAn0F,KAAAm0F,QACAv9C,EAAA95C,UAAA85C,EAAA95C,QAAAxC,EAAA05F,aAAAz5F,WAAA45F,OAAA,KAEA,OAAAv9C,CACA,EA2BA,IAAA69C,EAAA,EAOAvkC,EAAA8C,eAAA,SAAAA,eAAApc,GAGA,UAAAA,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAAo6F,oBAAA1jC,OAAApa,GAGA,IAAAv6C,EAAA,GACA,GAAAu6C,EAAAh4C,MACA,QAAAjD,EAAA,EAAAA,EAAAi7C,EAAAh4C,MAAAhD,SAAAD,EAAA,CACA,IAAA8Q,EAAAmqC,EAAAh4C,MAAAjD,GAAA8Q,KACA7N,EAAAg4C,EAAAh4C,MAAAjD,GAAA43F,QAAA,EACAl3F,EAAAoQ,KAAA7Q,OAAA6Q,EAAA,OAAA7N,IACA,CAEA,WAAAsxD,EACAtZ,EAAAnqC,MAAAmqC,EAAAnqC,KAAA7Q,OAAAg7C,EAAAnqC,KAAA,OAAAgoF,IACAp4F,EACAi1F,sBAAA16C,EAAA95C,QAAAxC,EAAAq6F,aAEA,EAMAzkC,EAAAjzD,UAAA+0D,aAAA,SAAAA,eAGA,IAAA31D,EAAA,GACA,QAAAV,EAAA,EAAA61F,EAAAx0F,OAAAmG,KAAAnD,KAAA3D,QAAAV,EAAA61F,EAAA51F,SAAAD,EACAU,EAAAd,KAAAjB,EAAAs6F,yBAAAr6F,OAAA,CAAAkS,KAAA+kF,EAAA71F,GAAA43F,OAAAvzF,KAAA3D,OAAAm1F,EAAA71F,OAEA,OAAArB,EAAAo6F,oBAAAn6F,OAAA,CACAkS,KAAAzM,KAAAyM,KACA7N,MAAAvC,EACAS,QAAAi1F,oBAAA/xF,KAAAlD,QAAAxC,EAAAq6F,cAEA,EAWA,IAAAE,EAAA,EAOAhE,EAAA79B,eAAA,SAAAA,eAAApc,GAGA,UAAAA,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAAw6F,qBAAA9jC,OAAApa,GAEA,WAAAi6C,EAEAj6C,EAAAnqC,MAAAmqC,EAAAnqC,KAAA7Q,OAAAg7C,EAAAnqC,KAAA,QAAAooF,IAGA,EAMAhE,EAAA5zF,UAAA+0D,aAAA,SAAAA,eACA,OAAA13D,EAAAw6F,qBAAAv6F,OAAA,CACAkS,KAAAzM,KAAAyM,MAGA,EAkBA,IAAAsoF,EAAA,EAOA/kC,EAAAgD,eAAA,SAAAA,eAAApc,GAGA,UAAAA,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAA06F,uBAAAhkC,OAAApa,GAEA,IAAAhX,EAAA,IAAAowB,EAAApZ,EAAAnqC,MAAAmqC,EAAAnqC,KAAA7Q,OAAAg7C,EAAAnqC,KAAA,UAAAsoF,IAAAzD,sBAAA16C,EAAA95C,QAAAxC,EAAA26F,iBACA,GAAAr+C,EAAAhrC,OACA,QAAAjQ,EAAA,EAAAA,EAAAi7C,EAAAhrC,OAAAhQ,SAAAD,EACAikC,EAAAx8B,IAAA0tF,EAAA99B,eAAApc,EAAAhrC,OAAAjQ,KAEA,OAAAikC,CACA,EAMAowB,EAAA/yD,UAAA+0D,aAAA,SAAAA,eAGA,IAAA9yB,EAAA,GACA,QAAAvjC,EAAA,EAAAA,EAAAqE,KAAA8xD,aAAAl2D,SAAAD,EACAujC,EAAA3jC,KAAAyE,KAAAk1F,cAAAv5F,GAAAq2D,gBAEA,OAAA13D,EAAA06F,uBAAAz6F,OAAA,CACAkS,KAAAzM,KAAAyM,KACAb,OAAAszB,EACApiC,QAAAi1F,oBAAA/xF,KAAAlD,QAAAxC,EAAA26F,iBAEA,EAqBA,IAAAE,EAAA,EAOArE,EAAA99B,eAAA,SAAAA,eAAApc,GAGA,UAAAA,EAAAh7C,SAAA,SACAg7C,EAAAt8C,EAAA86F,sBAAApkC,OAAApa,GAEA,WAAAk6C,EAEAl6C,EAAAnqC,MAAAmqC,EAAAnqC,KAAA7Q,OAAAg7C,EAAAnqC,KAAA,SAAA0oF,IACA,MACAv+C,EAAAy+C,UACAz+C,EAAA0+C,WACA/4F,QAAAq6C,EAAA2+C,iBACAh5F,QAAAq6C,EAAA4+C,iBACAlE,sBAAA16C,EAAA95C,QAAAxC,EAAAm7F,eAEA,EAMA3E,EAAA7zF,UAAA+0D,aAAA,SAAAA,eACA,OAAA13D,EAAA86F,sBAAA76F,OAAA,CACAkS,KAAAzM,KAAAyM,KACA4oF,UAAAr1F,KAAAwxD,oBAAAxxD,KAAAwxD,oBAAAogC,SAAA5xF,KAAAuxD,YACA+jC,WAAAt1F,KAAA0xD,qBAAA1xD,KAAA0xD,qBAAAkgC,SAAA5xF,KAAAyxD,aACA8jC,gBAAAv1F,KAAA+S,cACAyiF,gBAAAx1F,KAAA6P,eACA/S,QAAAi1F,oBAAA/xF,KAAAlD,QAAAxC,EAAAm7F,gBAEA,EAKA,SAAA5B,mBAAA5oE,GACA,OAAAA,GAEA,sBACA,qBACA,qBACA,sBACA,qBACA,uBACA,uBACA,oBACA,sBACA,sBACA,uBACA,yBACA,yBACA,uBACA,uBAEA,MAAAjoB,MAAA,iBAAAioB,EACA,CAGA,SAAAipE,uBAAAjpE,GACA,OAAAA,GACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,YAEA,YACA,CAGA,SAAA+nE,iBAAA/nE,EAAAkoE,GACA,OAAAloE,GAEA,sBACA,qBACA,qBACA,sBACA,qBACA,uBACA,uBACA,oBACA,sBACA,sBACA,uBACA,yBACA,yBACA,uBACA,uBAEA,GAAAkoE,aAAAjjC,EACA,UACA,GAAAijC,aAAAljC,EACA,OAAAkjC,EAAAuC,MAAA,MACA,MAAA1yF,MAAA,iBAAAioB,EACA,CAGA,SAAAqmE,sBAAAx0F,EAAAmuB,GACA,IAAAnuB,EACA,OAAAwH,UACA,IAAAikF,EAAA,GACA,QAAA5sF,EAAA,EAAAooD,EAAA5mD,EAAAglC,EAAAxmC,EAAAsvB,EAAA2nE,YAAAh3F,SAAAD,EACA,IAAAwB,GAAA4mD,EAAA94B,EAAA6nE,aAAAn3F,IAAA8Q,QAAA,sBACA,GAAA3P,EAAAI,eAAAC,GAAA,CACAglC,EAAArlC,EAAAK,GACA,GAAA4mD,EAAAovC,wBAAAjjC,UAAA/tB,IAAA,UAAA4hB,EAAAovC,aAAAwC,WAAAxzD,KAAA79B,UACA69B,EAAA4hB,EAAAovC,aAAAwC,WAAAxzD,GACAomD,EAAAhtF,KAAAq6F,WAAAz4F,GAAAglC,EACA,CACA,OAAAomD,EAAA3sF,OAAA80F,EAAAluD,KAAAuuB,SAAAw3B,GAAAjkF,SACA,CAGA,SAAAytF,oBAAAj1F,EAAAmuB,GACA,IAAAnuB,EACA,OAAAwH,UACA,IAAAikF,EAAA,GACA,QAAA5sF,EAAA,EAAA61F,EAAAx0F,OAAAmG,KAAArG,GAAAK,EAAAglC,EAAAxmC,EAAA61F,EAAA51F,SAAAD,EAAA,CACAwmC,EAAArlC,EAAAK,EAAAq0F,EAAA71F,IACA,GAAAwB,IAAA,UACA,SACA,IAAA4mD,EAAA94B,EAAA4qE,OAAA14F,GACA,IAAA4mD,OAAA94B,EAAA4qE,OAAA14F,EAAAuzF,EAAAluD,KAAA0sB,UAAA/xD,KACA,SACAorF,EAAAhtF,KAAA4B,EAAAglC,EACA,CACA,OAAAomD,EAAA3sF,OAAAqvB,EAAAimC,WAAAw/B,EAAAluD,KAAAuuB,SAAAw3B,IAAAjkF,SACA,CAGA,SAAA+uF,UAAAp0E,EAAA4pD,GACA,IAAAitB,EAAA72E,EAAA2yE,SAAAlgF,MAAA,KACAqkF,EAAAltB,EAAA+oB,SAAAlgF,MAAA,KACA/V,EAAA,EACA46B,EAAA,EACA6uC,EAAA2wB,EAAAn6F,OAAA,EACA,KAAAqjB,aAAAoxC,IAAAwY,aAAAzY,EACA,MAAAz0D,EAAAm6F,EAAAl6F,QAAA26B,EAAA6uC,GAAA0wB,EAAAn6F,KAAAo6F,EAAAx/D,GAAA,CACA,IAAAtyB,EAAA4kE,EAAA7lC,OAAA8yD,EAAAn6F,KAAA,MACA,GAAAsI,IAAA,MAAAA,IAAA4kE,EACA,QACAtyC,CACA,MAEA,KAAA56B,EAAAm6F,EAAAl6F,QAAA26B,EAAA6uC,GAAA0wB,EAAAn6F,KAAAo6F,EAAAx/D,KAAA56B,IAAA46B,GACA,OAAAw/D,EAAAp4F,MAAA44B,GAAA5kB,KAAA,IACA,CAGA,SAAAikF,WAAAziB,GACA,OAAAA,EAAAtpD,UAAA,KACAspD,EAAAtpD,UAAA,GACA+sC,QAAA,gCAAAC,EAAAC,GAAA,UAAAA,EAAA51B,aAAA,GACA,C,iBC31BA7mC,EAAAC,QAAAF,EAAA,K,WCFAC,EAAAC,QAAAo6D,OAEA,IAAAshC,EAAA,QAsBA,SAAAthC,OAAAjoD,EAAAmjD,GACA,IAAAomC,EAAAp1D,KAAAn0B,GAAA,CACAA,EAAA,mBAAAA,EAAA,SACAmjD,EAAA,CAAAa,OAAA,CAAAkE,OAAA,CAAAlE,OAAA,CAAAmE,SAAA,CAAAnE,OAAAb,MACA,CACA8E,OAAAjoD,GAAAmjD,CACA,CAWA8E,OAAA,OAUAuhC,IAAA,CACAJ,OAAA,CACAK,SAAA,CACAjrE,KAAA,SACArB,GAAA,GAEAhrB,MAAA,CACAqsB,KAAA,QACArB,GAAA,OAMA,IAAAusE,EAEAzhC,OAAA,YAUA0hC,SAAAD,EAAA,CACAN,OAAA,CACAt8E,QAAA,CACA0R,KAAA,QACArB,GAAA,GAEApQ,MAAA,CACAyR,KAAA,QACArB,GAAA,OAMA8qC,OAAA,aAUA2hC,UAAAF,IAGAzhC,OAAA,SAOA4hC,MAAA,CACAT,OAAA,MAIAnhC,OAAA,UASA6hC,OAAA,CACAV,OAAA,CACAA,OAAA,CACA9C,QAAA,SACA9nE,KAAA,QACArB,GAAA,KAkBA4sE,MAAA,CACA7mC,OAAA,CACAhZ,KAAA,CACA8/C,MAAA,CACA,YACA,cACA,cACA,YACA,cACA,eAIAZ,OAAA,CACAa,UAAA,CACAzrE,KAAA,YACArB,GAAA,GAEA+sE,YAAA,CACA1rE,KAAA,SACArB,GAAA,GAEAgtE,YAAA,CACA3rE,KAAA,SACArB,GAAA,GAEAitE,UAAA,CACA5rE,KAAA,OACArB,GAAA,GAEAktE,YAAA,CACA7rE,KAAA,SACArB,GAAA,GAEAmtE,UAAA,CACA9rE,KAAA,YACArB,GAAA,KAKAotE,UAAA,CACA36F,OAAA,CACA46F,WAAA,IAWAC,UAAA,CACArB,OAAA,CACAx5F,OAAA,CACAg4F,KAAA,WACAppE,KAAA,QACArB,GAAA,OAMA8qC,OAAA,YASAyiC,YAAA,CACAtB,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,SACArB,GAAA,KAYAwtE,WAAA,CACAvB,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,QACArB,GAAA,KAYAytE,WAAA,CACAxB,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,QACArB,GAAA,KAYA0tE,YAAA,CACAzB,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,SACArB,GAAA,KAYA2tE,WAAA,CACA1B,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,QACArB,GAAA,KAYA4tE,YAAA,CACA3B,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,SACArB,GAAA,KAYA6tE,UAAA,CACA5B,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,OACArB,GAAA,KAYA8tE,YAAA,CACA7B,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,SACArB,GAAA,KAYA+tE,WAAA,CACA9B,OAAA,CACAj3F,MAAA,CACAqsB,KAAA,QACArB,GAAA,OAMA8qC,OAAA,cASAkjC,UAAA,CACA/B,OAAA,CACAgC,MAAA,CACAxD,KAAA,WACAppE,KAAA,SACArB,GAAA,OAqBA8qC,OAAA39C,IAAA,SAAAA,IAAA47C,GACA,OAAA+B,OAAA/B,IAAA,IACA,C,iBCzYA,IAAAmlC,EAAAx9F,EAEA,IAAA41D,EAAA91D,EAAA,MACAooC,EAAApoC,EAAA,MAWA,SAAA29F,2BAAAj0F,EAAAigD,EAAAi0C,EAAAC,GACA,IAAAC,EAAA,MAEA,GAAAn0C,EAAAovC,aAAA,CACA,GAAApvC,EAAAovC,wBAAAjjC,EAAA,CAAApsD,EACA,eAAAm0F,GACA,QAAA57F,EAAA0nD,EAAAovC,aAAA92F,OAAA8G,EAAAnG,OAAAmG,KAAA9G,GAAAV,EAAA,EAAAA,EAAAwH,EAAAvH,SAAAD,EAAA,CAEA,GAAAU,EAAA8G,EAAAxH,MAAAooD,EAAAo0C,cAAAD,EAAA,CAAAp0F,EACA,WADAA,CAEA,4CAAAm0F,OACA,IAAAl0C,EAAAq0C,SAAAt0F,EAEA,SACAo0F,EAAA,IACA,CACAp0F,EACA,UAAAX,EAAAxH,GADAmI,CAEA,WAAAzH,EAAA8G,EAAAxH,IAFAmI,CAGA,SAAAm0F,EAAA57F,EAAA8G,EAAAxH,IAHAmI,CAIA,QACA,CAAAA,EACA,IACA,MAAAA,EACA,4BAAAm0F,EADAn0F,CAEA,sBAAAigD,EAAA6tC,SAAA,oBAFA9tF,CAGA,gCAAAm0F,EAAAD,EAAAC,EACA,MACA,IAAAI,EAAA,MACA,OAAAt0C,EAAA94B,MACA,aACA,YAAAnnB,EACA,kBAAAm0F,KACA,MACA,aACA,cAAAn0F,EACA,cAAAm0F,KACA,MACA,YACA,aACA,eAAAn0F,EACA,YAAAm0F,KACA,MACA,aACAI,EAAA,KAEA,YACA,aACA,cACA,eAAAv0F,EACA,gBADAA,CAEA,6CAAAm0F,IAAAI,EAFAv0F,CAGA,iCAAAm0F,EAHAn0F,CAIA,uBAAAm0F,IAJAn0F,CAKA,iCAAAm0F,EALAn0F,CAMA,UAAAm0F,IANAn0F,CAOA,iCAAAm0F,EAPAn0F,CAQA,+DAAAm0F,MAAAI,EAAA,WACA,MACA,YAAAv0F,EACA,4BAAAm0F,EADAn0F,CAEA,wEAAAm0F,MAFAn0F,CAGA,2BAAAm0F,EAHAn0F,CAIA,UAAAm0F,KACA,MACA,aAAAn0F,EACA,kBAAAm0F,KACA,MACA,WAAAn0F,EACA,mBAAAm0F,KACA,MAKA,CACA,OAAAn0F,CAEA,CAOAg0F,EAAA5mC,WAAA,SAAAA,WAAAonC,GAEA,IAAAzC,EAAAyC,EAAA1F,YACA,IAAA9uF,EAAA0+B,EAAAszB,QAAA,MAAAwiC,EAAA7rF,KAAA,cAAA+1B,CACA,6BADAA,CAEA,YACA,IAAAqzD,EAAAj6F,OAAA,OAAAkI,EACA,wBACAA,EACA,uBACA,QAAAnI,EAAA,EAAAA,EAAAk6F,EAAAj6F,SAAAD,EAAA,CACA,IAAAooD,EAAA8xC,EAAAl6F,GAAAI,UACAk8F,EAAAz1D,EAAA+1D,SAAAx0C,EAAAt3C,MAGA,GAAAs3C,EAAA9nD,IAAA,CAAA6H,EACA,WAAAm0F,EADAn0F,CAEA,4BAAAm0F,EAFAn0F,CAGA,sBAAAigD,EAAA6tC,SAAA,oBAHA9tF,CAIA,SAAAm0F,EAJAn0F,CAKA,oDAAAm0F,GACAF,2BAAAj0F,EAAAigD,EAAApoD,EAAAs8F,EAAA,UAAAF,CACA,IADAA,CAEA,IAGA,SAAAh0C,EAAAq0C,SAAA,CAAAt0F,EACA,WAAAm0F,EADAn0F,CAEA,0BAAAm0F,EAFAn0F,CAGA,sBAAAigD,EAAA6tC,SAAA,mBAHA9tF,CAIA,SAAAm0F,EAJAn0F,CAKA,iCAAAm0F,GACAF,2BAAAj0F,EAAAigD,EAAApoD,EAAAs8F,EAAA,MAAAF,CACA,IADAA,CAEA,IAGA,MACA,KAAAh0C,EAAAovC,wBAAAjjC,GAAApsD,EACA,iBAAAm0F,GACAF,2BAAAj0F,EAAAigD,EAAApoD,EAAAs8F,GACA,KAAAl0C,EAAAovC,wBAAAjjC,GAAApsD,EACA,IACA,CACA,QAAAA,EACA,WAEA,EAWA,SAAA00F,yBAAA10F,EAAAigD,EAAAi0C,EAAAC,GAEA,GAAAl0C,EAAAovC,aAAA,CACA,GAAApvC,EAAAovC,wBAAAjjC,EAAApsD,EACA,yFAAAm0F,EAAAD,EAAAC,IAAAD,EAAAC,UACAn0F,EACA,gCAAAm0F,EAAAD,EAAAC,EACA,MACA,IAAAI,EAAA,MACA,OAAAt0C,EAAA94B,MACA,aACA,YAAAnnB,EACA,6CAAAm0F,SACA,MACA,aACAI,EAAA,KAEA,YACA,aACA,cACA,eAAAv0F,EACA,4BAAAm0F,EADAn0F,CAEA,uCAAAm0F,MAFAn0F,CAGA,OAHAA,CAIA,4IAAAm0F,QAAAI,EAAA,UAAAJ,GACA,MACA,YAAAn0F,EACA,gHAAAm0F,WACA,MACA,QAAAn0F,EACA,UAAAm0F,KACA,MAEA,CACA,OAAAn0F,CAEA,CAOAg0F,EAAA/mC,SAAA,SAAAA,SAAAunC,GAEA,IAAAzC,EAAAyC,EAAA1F,YAAAj1F,QAAA+M,KAAA83B,EAAAi2D,mBACA,IAAA5C,EAAAj6F,OACA,OAAA4mC,EAAAszB,SAAAtzB,CAAA,aACA,IAAA1+B,EAAA0+B,EAAAszB,QAAA,UAAAwiC,EAAA7rF,KAAA,YAAA+1B,CACA,SADAA,CAEA,OAFAA,CAGA,YAEA,IAAAk2D,EAAA,GACAC,EAAA,GACAC,EAAA,GACAj9F,EAAA,EACA,KAAAA,EAAAk6F,EAAAj6F,SAAAD,EACA,IAAAk6F,EAAAl6F,GAAA64F,QACAqB,EAAAl6F,GAAAI,UAAAq8F,SAAAM,EACA7C,EAAAl6F,GAAAM,IAAA08F,EACAC,GAAAr9F,KAAAs6F,EAAAl6F,IAEA,GAAA+8F,EAAA98F,OAAA,CAAAkI,EACA,6BACA,IAAAnI,EAAA,EAAAA,EAAA+8F,EAAA98F,SAAAD,EAAAmI,EACA,SAAA0+B,EAAA+1D,SAAAG,EAAA/8F,GAAA8Q,OACA3I,EACA,IACA,CAEA,GAAA60F,EAAA/8F,OAAA,CAAAkI,EACA,8BACA,IAAAnI,EAAA,EAAAA,EAAAg9F,EAAA/8F,SAAAD,EAAAmI,EACA,SAAA0+B,EAAA+1D,SAAAI,EAAAh9F,GAAA8Q,OACA3I,EACA,IACA,CAEA,GAAA80F,EAAAh9F,OAAA,CAAAkI,EACA,mBACA,IAAAnI,EAAA,EAAAA,EAAAi9F,EAAAh9F,SAAAD,EAAA,CACA,IAAAooD,EAAA60C,EAAAj9F,GACAs8F,EAAAz1D,EAAA+1D,SAAAx0C,EAAAt3C,MACA,GAAAs3C,EAAAovC,wBAAAjjC,EAAApsD,EACA,6BAAAm0F,EAAAl0C,EAAAovC,aAAAwC,WAAA5xC,EAAAo0C,aAAAp0C,EAAAo0C,kBACA,GAAAp0C,EAAAksC,KAAAnsF,EACA,iBADAA,CAEA,gCAAAigD,EAAAo0C,YAAAU,IAAA90C,EAAAo0C,YAAAW,KAAA/0C,EAAAo0C,YAAAY,SAFAj1F,CAGA,oEAAAm0F,EAHAn0F,CAIA,QAJAA,CAKA,6BAAAm0F,EAAAl0C,EAAAo0C,YAAAj5E,WAAA6kC,EAAAo0C,YAAAa,iBACA,GAAAj1C,EAAA0L,MAAA,CACA,IAAAwpC,EAAA,IAAAv7F,MAAAT,UAAAU,MAAAP,KAAA2mD,EAAAo0C,aAAAxmF,KAAA,SACA7N,EACA,6BAAAm0F,EAAAr/E,OAAA88C,aAAAh5D,MAAAkc,OAAAmrC,EAAAo0C,aADAr0F,CAEA,QAFAA,CAGA,SAAAm0F,EAAAgB,EAHAn1F,CAIA,6CAAAm0F,IAJAn0F,CAKA,IACA,MAAAA,EACA,SAAAm0F,EAAAl0C,EAAAo0C,YACA,CAAAr0F,EACA,IACA,CACA,IAAAo1F,EAAA,MACA,IAAAv9F,EAAA,EAAAA,EAAAk6F,EAAAj6F,SAAAD,EAAA,CACA,IAAAooD,EAAA8xC,EAAAl6F,GACA0I,EAAAi0F,EAAAxF,aAAAx3F,QAAAyoD,GACAk0C,EAAAz1D,EAAA+1D,SAAAx0C,EAAAt3C,MACA,GAAAs3C,EAAA9nD,IAAA,CACA,IAAAi9F,EAAA,CAAAA,EAAA,KAAAp1F,EACA,UACA,CAAAA,EACA,0CAAAm0F,IADAn0F,CAEA,SAAAm0F,EAFAn0F,CAGA,kCACA00F,yBAAA10F,EAAAigD,EAAA1/C,EAAA4zF,EAAA,WAAAO,CACA,IACA,SAAAz0C,EAAAq0C,SAAA,CAAAt0F,EACA,uBAAAm0F,IADAn0F,CAEA,SAAAm0F,EAFAn0F,CAGA,iCAAAm0F,GACAO,yBAAA10F,EAAAigD,EAAA1/C,EAAA4zF,EAAA,MAAAO,CACA,IACA,MAAA10F,EACA,uCAAAm0F,EAAAl0C,EAAAt3C,MACA+rF,yBAAA10F,EAAAigD,EAAA1/C,EAAA4zF,GACA,GAAAl0C,EAAAywC,OAAA1wF,EACA,eADAA,CAEA,SAAA0+B,EAAA+1D,SAAAx0C,EAAAywC,OAAA/nF,MAAAs3C,EAAAt3C,KACA,CACA3I,EACA,IACA,CACA,OAAAA,EACA,WAEA,C,iBC3SAzJ,EAAAC,QAAAq4C,QAEA,IAAAud,EAAA91D,EAAA,MACA++F,EAAA/+F,EAAA,KACAooC,EAAApoC,EAAA,MAEA,SAAAg/F,QAAAr1C,GACA,2BAAAA,EAAAt3C,KAAA,GACA,CAOA,SAAAkmC,QAAA2lD,GAEA,IAAAx0F,EAAA0+B,EAAAszB,QAAA,UAAAwiC,EAAA7rF,KAAA,UAAA+1B,CACA,6BADAA,CAEA,qBAFAA,CAGA,qDAAA81D,EAAA1F,YAAAviF,QAAA,SAAA0zC,GAAA,OAAAA,EAAA9nD,GAAA,IAAAL,OAAA,eAHA4mC,CAIA,kBAJAA,CAKA,oBACA,GAAA81D,EAAA5C,MAAA5xF,EACA,gBADAA,CAEA,SACAA,EACA,kBAEA,IAAAnI,EAAA,EACA,KAAAA,EAAA28F,EAAA1F,YAAAh3F,SAAAD,EAAA,CACA,IAAAooD,EAAAu0C,EAAAxF,aAAAn3F,GAAAI,UACAkvB,EAAA84B,EAAAovC,wBAAAjjC,EAAA,QAAAnM,EAAA94B,KACAnpB,EAAA,IAAA0gC,EAAA+1D,SAAAx0C,EAAAt3C,MAAA3I,EACA,aAAAigD,EAAAn6B,IAGA,GAAAm6B,EAAA9nD,IAAA,CAAA6H,EACA,4BAAAhC,EADAgC,CAEA,QAAAhC,EAFAgC,CAGA,6BAEA,GAAAq1F,EAAAzpC,SAAA3L,EAAAgvC,WAAAzuF,UAAAR,EACA,OAAAq1F,EAAAzpC,SAAA3L,EAAAgvC,eACAjvF,EACA,UAEA,GAAAq1F,EAAAzpC,SAAAzkC,KAAA3mB,UAAAR,EACA,WAAAq1F,EAAAzpC,SAAAzkC,SACAnnB,EACA,cAEAA,EACA,mBADAA,CAEA,sBAFAA,CAGA,oBAHAA,CAIA,0BAAAigD,EAAAgvC,QAJAjvF,CAKA,WAEA,GAAAq1F,EAAAE,MAAApuE,KAAA3mB,UAAAR,EACA,uCAAAnI,QACAmI,EACA,eAAAmnB,GAEAnnB,EACA,QADAA,CAEA,WAFAA,CAGA,qBAHAA,CAIA,QAJAA,CAKA,IALAA,CAMA,KAEA,GAAAq1F,EAAAlJ,KAAAlsC,EAAAgvC,WAAAzuF,UAAAR,EACA,qDAAAhC,QACAgC,EACA,cAAAhC,EAGA,SAAAiiD,EAAAq0C,SAAA,CAAAt0F,EAEA,uBAAAhC,IAFAgC,CAGA,QAAAhC,GAGA,GAAAq3F,EAAAhF,OAAAlpE,KAAA3mB,UAAAR,EACA,iBADAA,CAEA,0BAFAA,CAGA,kBAHAA,CAIA,kBAAAhC,EAAAmpB,EAJAnnB,CAKA,SAGA,GAAAq1F,EAAAE,MAAApuE,KAAA3mB,UAAAR,EAAAigD,EAAAovC,aAAAuC,MACA,+BACA,0CAAA5zF,EAAAnG,QACAmI,EACA,kBAAAhC,EAAAmpB,EAGA,SAAAkuE,EAAAE,MAAApuE,KAAA3mB,UAAAR,EAAAigD,EAAAovC,aAAAuC,MACA,yBACA,oCAAA5zF,EAAAnG,QACAmI,EACA,YAAAhC,EAAAmpB,GACAnnB,EACA,QADAA,CAEA,IAEA,CAAAA,EACA,WADAA,CAEA,kBAFAA,CAGA,QAHAA,CAKA,IALAA,CAMA,KAGA,IAAAnI,EAAA,EAAAA,EAAA28F,EAAAxF,aAAAl3F,SAAAD,EAAA,CACA,IAAA29F,EAAAhB,EAAAxF,aAAAn3F,GACA,GAAA29F,EAAAC,SAAAz1F,EACA,4BAAAw1F,EAAA7sF,KADA3I,CAEA,4CAAAs1F,QAAAE,GACA,CAEA,OAAAx1F,EACA,WAEA,C,iBC/HAzJ,EAAAC,QAAAk/F,QAEA,IAAAtpC,EAAA91D,EAAA,MACA++F,EAAA/+F,EAAA,KACAooC,EAAApoC,EAAA,MAWA,SAAAq/F,eAAA31F,EAAAigD,EAAAi0C,EAAAl2F,GACA,OAAAiiD,EAAAovC,aAAAuC,MACA5xF,EAAA,+CAAAk0F,EAAAl2F,GAAAiiD,EAAAn6B,IAAA,UAAAm6B,EAAAn6B,IAAA,UACA9lB,EAAA,oDAAAk0F,EAAAl2F,GAAAiiD,EAAAn6B,IAAA,SACA,CAOA,SAAA4vE,QAAAlB,GAEA,IAAAx0F,EAAA0+B,EAAAszB,QAAA,UAAAwiC,EAAA7rF,KAAA,UAAA+1B,CACA,SADAA,CAEA,qBAEA,IAAA7mC,EAAAmG,EAGA,IAAA+zF,EAAAyC,EAAA1F,YAAAj1F,QAAA+M,KAAA83B,EAAAi2D,mBAEA,QAAA98F,EAAA,EAAAA,EAAAk6F,EAAAj6F,SAAAD,EAAA,CACA,IAAAooD,EAAA8xC,EAAAl6F,GAAAI,UACAsI,EAAAi0F,EAAAxF,aAAAx3F,QAAAyoD,GACA94B,EAAA84B,EAAAovC,wBAAAjjC,EAAA,QAAAnM,EAAA94B,KACAyuE,EAAAP,EAAAE,MAAApuE,GACAnpB,EAAA,IAAA0gC,EAAA+1D,SAAAx0C,EAAAt3C,MAGA,GAAAs3C,EAAA9nD,IAAA,CACA6H,EACA,kDAAAhC,EAAAiiD,EAAAt3C,KADA3I,CAEA,mDAAAhC,EAFAgC,CAGA,4CAAAigD,EAAAn6B,IAAA,WAAAuvE,EAAAp6C,OAAAgF,EAAAgvC,SAAAhvC,EAAAgvC,SACA,GAAA2G,IAAAp1F,UAAAR,EACA,oEAAAO,EAAAvC,QACAgC,EACA,wCAAA41F,EAAAzuE,EAAAnpB,GACAgC,EACA,IADAA,CAEA,IAGA,SAAAigD,EAAAq0C,SAAA,CAAAt0F,EACA,2BAAAhC,KAGA,GAAAiiD,EAAAowC,QAAAgF,EAAAhF,OAAAlpE,KAAA3mB,UAAA,CAAAR,EAEA,uBAAAigD,EAAAn6B,IAAA,SAFA9lB,CAGA,+BAAAhC,EAHAgC,CAIA,cAAAmnB,EAAAnpB,EAJAgC,CAKA,aAGA,MAAAA,EAEA,+BAAAhC,GACA,GAAA43F,IAAAp1F,UACAm1F,eAAA31F,EAAAigD,EAAA1/C,EAAAvC,EAAA,YACAgC,EACA,0BAAAigD,EAAAn6B,IAAA,EAAA8vE,KAAA,EAAAzuE,EAAAnpB,EAEA,CAAAgC,EACA,IAGA,MACA,GAAAigD,EAAA41C,SAAA71F,EACA,iDAAAhC,EAAAiiD,EAAAt3C,MAEA,GAAAitF,IAAAp1F,UACAm1F,eAAA31F,EAAAigD,EAAA1/C,EAAAvC,QACAgC,EACA,uBAAAigD,EAAAn6B,IAAA,EAAA8vE,KAAA,EAAAzuE,EAAAnpB,EAEA,CACA,CAEA,OAAAgC,EACA,WAEA,C,iBClGAzJ,EAAAC,QAAA41D,KAGA,IAAA0pC,EAAAx/F,EAAA,QACA81D,KAAAjzD,UAAAD,OAAAzC,OAAAq/F,EAAA38F,YAAA6C,YAAAowD,MAAA2pC,UAAA,OAEA,IAAAzpC,EAAAh2D,EAAA,MACAooC,EAAApoC,EAAA,MAcA,SAAA81D,KAAAzjD,EAAApQ,EAAAS,EAAAg9F,EAAAC,EAAAC,GACAJ,EAAAx8F,KAAA4C,KAAAyM,EAAA3P,GAEA,GAAAT,cAAA,SACA,MAAAqM,UAAA,4BAMA1I,KAAA21F,WAAA,GAMA31F,KAAA3D,OAAAW,OAAAzC,OAAAyF,KAAA21F,YAMA31F,KAAA85F,UAMA95F,KAAA+5F,YAAA,GAMA/5F,KAAAg6F,gBAMAh6F,KAAA2yF,SAAAruF,UAMA,GAAAjI,EACA,QAAA8G,EAAAnG,OAAAmG,KAAA9G,GAAAV,EAAA,EAAAA,EAAAwH,EAAAvH,SAAAD,EACA,UAAAU,EAAA8G,EAAAxH,MAAA,SACAqE,KAAA21F,WAAA31F,KAAA3D,OAAA8G,EAAAxH,IAAAU,EAAA8G,EAAAxH,KAAAwH,EAAAxH,EACA,CAgBAu0D,KAAAmD,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,IAAAqqC,EAAA,IAAA/pC,KAAAzjD,EAAAmjD,EAAAvzD,OAAAuzD,EAAA9yD,QAAA8yD,EAAAkqC,QAAAlqC,EAAAmqC,UACAE,EAAAtH,SAAA/iC,EAAA+iC,SACA,OAAAsH,CACA,EAOA/pC,KAAAjzD,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,UAAA/wD,KAAAlD,QACA,gBAAAkD,KAAAg6F,cACA,SAAAh6F,KAAA3D,OACA,WAAA2D,KAAA2yF,UAAA3yF,KAAA2yF,SAAA/2F,OAAAoE,KAAA2yF,SAAAruF,UACA,UAAA61F,EAAAn6F,KAAA85F,QAAAx1F,UACA,WAAA61F,EAAAn6F,KAAA+5F,SAAAz1F,WAEA,EAYA4rD,KAAAjzD,UAAAmG,IAAA,SAAAA,IAAAqJ,EAAAmd,EAAAkwE,EAAAh9F,GAGA,IAAA0lC,EAAA43D,SAAA3tF,GACA,MAAA/D,UAAA,yBAEA,IAAA85B,EAAA+L,UAAA3kB,GACA,MAAAlhB,UAAA,yBAEA,GAAA1I,KAAA3D,OAAAoQ,KAAAnI,UACA,MAAAtB,MAAA,mBAAAyJ,EAAA,QAAAzM,MAEA,GAAAA,KAAAq6F,aAAAzwE,GACA,MAAA5mB,MAAA,MAAA4mB,EAAA,mBAAA5pB,MAEA,GAAAA,KAAAs6F,eAAA7tF,GACA,MAAAzJ,MAAA,SAAAyJ,EAAA,oBAAAzM,MAEA,GAAAA,KAAA21F,WAAA/rE,KAAAtlB,UAAA,CACA,KAAAtE,KAAAlD,SAAAkD,KAAAlD,QAAAy9F,aACA,MAAAv3F,MAAA,gBAAA4mB,EAAA,OAAA5pB,MACAA,KAAA3D,OAAAoQ,GAAAmd,CACA,MACA5pB,KAAA21F,WAAA31F,KAAA3D,OAAAoQ,GAAAmd,GAAAnd,EAEA,GAAA3P,EAAA,CACA,GAAAkD,KAAAg6F,gBAAA11F,UACAtE,KAAAg6F,cAAA,GACAh6F,KAAAg6F,cAAAvtF,GAAA3P,GAAA,IACA,CAEAkD,KAAA+5F,SAAAttF,GAAAqtF,GAAA,KACA,OAAA95F,IACA,EASAkwD,KAAAjzD,UAAA2Z,OAAA,SAAAA,OAAAnK,GAEA,IAAA+1B,EAAA43D,SAAA3tF,GACA,MAAA/D,UAAA,yBAEA,IAAAy5B,EAAAniC,KAAA3D,OAAAoQ,GACA,GAAA01B,GAAA,KACA,MAAAn/B,MAAA,SAAAyJ,EAAA,uBAAAzM,aAEAA,KAAA21F,WAAAxzD,UACAniC,KAAA3D,OAAAoQ,UACAzM,KAAA+5F,SAAAttF,GACA,GAAAzM,KAAAg6F,qBACAh6F,KAAAg6F,cAAAvtF,GAEA,OAAAzM,IACA,EAOAkwD,KAAAjzD,UAAAo9F,aAAA,SAAAA,aAAAzwE,GACA,OAAAwmC,EAAAiqC,aAAAr6F,KAAA2yF,SAAA/oE,EACA,EAOAsmC,KAAAjzD,UAAAq9F,eAAA,SAAAA,eAAA7tF,GACA,OAAA2jD,EAAAkqC,eAAAt6F,KAAA2yF,SAAAlmF,EACA,C,iBCpMApS,EAAAC,QAAAq2F,MAGA,IAAAiJ,EAAAx/F,EAAA,QACAu2F,MAAA1zF,UAAAD,OAAAzC,OAAAq/F,EAAA38F,YAAA6C,YAAA6wF,OAAAkJ,UAAA,QAEA,IAAA3pC,EAAA91D,EAAA,MACA++F,EAAA/+F,EAAA,KACAooC,EAAApoC,EAAA,MAEA,IAAA61D,EAEA,IAAAuqC,EAAA,+BAuBA7J,MAAAt9B,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,WAAA+gC,MAAAlkF,EAAAmjD,EAAAhmC,GAAAgmC,EAAA3kC,KAAA2kC,EAAAykC,KAAAzkC,EAAA2kC,OAAA3kC,EAAA9yD,QAAA8yD,EAAAkqC,QACA,EAgBA,SAAAnJ,MAAAlkF,EAAAmd,EAAAqB,EAAAopE,EAAAE,EAAAz3F,EAAAg9F,GAEA,GAAAt3D,EAAAi4D,SAAApG,GAAA,CACAyF,EAAAvF,EACAz3F,EAAAu3F,EACAA,EAAAE,EAAAjwF,SACA,SAAAk+B,EAAAi4D,SAAAlG,GAAA,CACAuF,EAAAh9F,EACAA,EAAAy3F,EACAA,EAAAjwF,SACA,CAEAs1F,EAAAx8F,KAAA4C,KAAAyM,EAAA3P,GAEA,IAAA0lC,EAAA+L,UAAA3kB,MAAA,EACA,MAAAlhB,UAAA,qCAEA,IAAA85B,EAAA43D,SAAAnvE,GACA,MAAAviB,UAAA,yBAEA,GAAA2rF,IAAA/vF,YAAAk2F,EAAA55D,KAAAyzD,IAAAn1E,WAAAgiB,eACA,MAAAx4B,UAAA,8BAEA,GAAA6rF,IAAAjwF,YAAAk+B,EAAA43D,SAAA7F,GACA,MAAA7rF,UAAA,2BAMA,GAAA2rF,IAAA,mBACAA,EAAA,UACA,CACAr0F,KAAAq0F,YAAA,WAAAA,EAAA/vF,UAMAtE,KAAAirB,OAMAjrB,KAAA4pB,KAMA5pB,KAAAu0F,UAAAjwF,UAMAtE,KAAAu5F,SAAAlF,IAAA,WAMAr0F,KAAA25F,UAAA35F,KAAAu5F,SAMAv5F,KAAAo4F,SAAA/D,IAAA,WAMAr0F,KAAA/D,IAAA,MAMA+D,KAAApD,QAAA,KAMAoD,KAAAw0F,OAAA,KAMAx0F,KAAAm4F,YAAA,KAMAn4F,KAAAi0F,aAAA,KAMAj0F,KAAAiwF,KAAAztD,EAAA4sB,KAAA+pC,EAAAlJ,KAAAhlE,KAAA3mB,UAAA,MAMAtE,KAAAyvD,MAAAxkC,IAAA,QAMAjrB,KAAAmzF,aAAA,KAMAnzF,KAAAs0F,eAAA,KAMAt0F,KAAA06F,eAAA,KAOA16F,KAAA26F,QAAA,KAMA36F,KAAA85F,SACA,CAQA98F,OAAA2B,eAAAgyF,MAAA1zF,UAAA,UACA8Z,IAAA,WAEA,GAAA/W,KAAA26F,UAAA,KACA36F,KAAA26F,QAAA36F,KAAA46F,UAAA,kBACA,OAAA56F,KAAA26F,OACA,IAMAhK,MAAA1zF,UAAAw0F,UAAA,SAAAA,UAAAhlF,EAAA7N,EAAAi8F,GACA,GAAApuF,IAAA,SACAzM,KAAA26F,QAAA,KACA,OAAAf,EAAA38F,UAAAw0F,UAAAr0F,KAAA4C,KAAAyM,EAAA7N,EAAAi8F,EACA,EAuBAlK,MAAA1zF,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,OAAA/wD,KAAAq0F,OAAA,YAAAr0F,KAAAq0F,MAAA/vF,UACA,OAAAtE,KAAAirB,KACA,KAAAjrB,KAAA4pB,GACA,SAAA5pB,KAAAu0F,OACA,UAAAv0F,KAAAlD,QACA,UAAAq9F,EAAAn6F,KAAA85F,QAAAx1F,WAEA,EAOAqsF,MAAA1zF,UAAAlB,QAAA,SAAAA,UAEA,GAAAiE,KAAA5D,SACA,OAAA4D,KAEA,IAAAA,KAAAm4F,YAAAgB,EAAAzpC,SAAA1vD,KAAAirB,SAAA3mB,UAAA,CACAtE,KAAAmzF,cAAAnzF,KAAA06F,eAAA16F,KAAA06F,eAAA9rF,OAAA5O,KAAA4O,QAAAksF,iBAAA96F,KAAAirB,MACA,GAAAjrB,KAAAmzF,wBAAAljC,EACAjwD,KAAAm4F,YAAA,UAEAn4F,KAAAm4F,YAAAn4F,KAAAmzF,aAAA92F,OAAAW,OAAAmG,KAAAnD,KAAAmzF,aAAA92F,QAAA,GACA,SAAA2D,KAAAlD,SAAAkD,KAAAlD,QAAAi+F,gBAAA,CAEA/6F,KAAAm4F,YAAA,IACA,CAGA,GAAAn4F,KAAAlD,SAAAkD,KAAAlD,QAAA,kBACAkD,KAAAm4F,YAAAn4F,KAAAlD,QAAA,WACA,GAAAkD,KAAAmzF,wBAAAjjC,UAAAlwD,KAAAm4F,cAAA,SACAn4F,KAAAm4F,YAAAn4F,KAAAmzF,aAAA92F,OAAA2D,KAAAm4F,YACA,CAGA,GAAAn4F,KAAAlD,QAAA,CACA,GAAAkD,KAAAlD,QAAAq3F,SAAA,MAAAn0F,KAAAlD,QAAAq3F,SAAA7vF,WAAAtE,KAAAmzF,gBAAAnzF,KAAAmzF,wBAAAjjC,UACAlwD,KAAAlD,QAAAq3F,OACA,IAAAn3F,OAAAmG,KAAAnD,KAAAlD,SAAAlB,OACAoE,KAAAlD,QAAAwH,SACA,CAGA,GAAAtE,KAAAiwF,KAAA,CACAjwF,KAAAm4F,YAAA31D,EAAA4sB,KAAA4rC,WAAAh7F,KAAAm4F,YAAAn4F,KAAAirB,KAAAuU,OAAA,UAGA,GAAAxiC,OAAA62E,OACA72E,OAAA62E,OAAA7zE,KAAAm4F,YAEA,SAAAn4F,KAAAyvD,cAAAzvD,KAAAm4F,cAAA,UACA,IAAAz/B,EACA,GAAAl2B,EAAA2yB,OAAAv0B,KAAA5gC,KAAAm4F,aACA31D,EAAA2yB,OAAAnE,OAAAhxD,KAAAm4F,YAAAz/B,EAAAl2B,EAAAy4D,UAAAz4D,EAAA2yB,OAAAv5D,OAAAoE,KAAAm4F,cAAA,QAEA31D,EAAAw5B,KAAAv/D,MAAAuD,KAAAm4F,YAAAz/B,EAAAl2B,EAAAy4D,UAAAz4D,EAAAw5B,KAAApgE,OAAAoE,KAAAm4F,cAAA,GACAn4F,KAAAm4F,YAAAz/B,CACA,CAGA,GAAA14D,KAAA/D,IACA+D,KAAAi0F,aAAAzxD,EAAA04D,iBACA,GAAAl7F,KAAAo4F,SACAp4F,KAAAi0F,aAAAzxD,EAAA24D,gBAEAn7F,KAAAi0F,aAAAj0F,KAAAm4F,YAGA,GAAAn4F,KAAA4O,kBAAAqhD,EACAjwD,KAAA4O,OAAAwnC,KAAAn5C,UAAA+C,KAAAyM,MAAAzM,KAAAi0F,aAEA,OAAA2F,EAAA38F,UAAAlB,QAAAqB,KAAA4C,KACA,EAsBA2wF,MAAArX,EAAA,SAAA8hB,cAAAC,EAAAzH,EAAAE,EAAAG,GAGA,UAAAL,IAAA,WACAA,EAAApxD,EAAA84D,aAAA1H,GAAAnnF,UAGA,GAAAmnF,cAAA,SACAA,EAAApxD,EAAA+4D,aAAA3H,GAAAnnF,KAEA,gBAAA+uF,eAAAv+F,EAAAmyB,GACAoT,EAAA84D,aAAAr+F,EAAA6C,aACAsD,IAAA,IAAAutF,MAAAvhE,EAAAisE,EAAAzH,EAAAE,EAAA,CAAA92B,QAAAi3B,IACA,CACA,EAgBAtD,MAAA8K,WAAA,SAAA3V,UAAA4V,GACAzrC,EAAAyrC,CACA,C,iBCvXA,IAAA9mC,EAAAv6D,EAAAC,QAAAF,EAAA,MAEAw6D,EAAA9nD,MAAA,QAmBA,SAAAgV,KAAAC,EAAAywC,EAAAzyD,GACA,UAAAyyD,IAAA,YACAzyD,EAAAyyD,EACAA,EAAA,IAAAoC,EAAAvE,IACA,UAAAmC,EACAA,EAAA,IAAAoC,EAAAvE,KACA,OAAAmC,EAAA1wC,KAAAC,EAAAhiB,EACA,CA0BA60D,EAAA9yC,UAUA,SAAAqxC,SAAApxC,EAAAywC,GACA,IAAAA,EACAA,EAAA,IAAAoC,EAAAvE,KACA,OAAAmC,EAAAW,SAAApxC,EACA,CAEA6yC,EAAAzB,kBAGAyB,EAAA4kC,QAAAp/F,EAAA,MACAw6D,EAAAjiB,QAAAv4C,EAAA,MACAw6D,EAAA+mC,SAAAvhG,EAAA,MACAw6D,EAAAkjC,UAAA19F,EAAA,MAGAw6D,EAAAglC,iBAAAx/F,EAAA,MACAw6D,EAAAxE,UAAAh2D,EAAA,MACAw6D,EAAAvE,KAAAj2D,EAAA,MACAw6D,EAAA1E,KAAA91D,EAAA,MACAw6D,EAAA3E,KAAA71D,EAAA,MACAw6D,EAAA+7B,MAAAv2F,EAAA,MACAw6D,EAAAi8B,MAAAz2F,EAAA,MACAw6D,EAAAg8B,SAAAx2F,EAAA,MACAw6D,EAAA5E,QAAA51D,EAAA,MACAw6D,EAAAk8B,OAAA12F,EAAA,MAGAw6D,EAAAgnC,QAAAxhG,EAAA,MACAw6D,EAAAinC,SAAAzhG,EAAA,MAGAw6D,EAAAukC,MAAA/+F,EAAA,KACAw6D,EAAApyB,KAAApoC,EAAA,MAGAw6D,EAAAglC,iBAAA6B,WAAA7mC,EAAAvE,MACAuE,EAAAxE,UAAAqrC,WAAA7mC,EAAA3E,KAAA2E,EAAA5E,QAAA4E,EAAA1E,MACA0E,EAAAvE,KAAAorC,WAAA7mC,EAAA3E,MACA2E,EAAA+7B,MAAA8K,WAAA7mC,EAAA3E,K,iBCtGA,IAAA2E,EAAAt6D,EAQAs6D,EAAA9nD,MAAA,UAGA8nD,EAAAknC,OAAA1hG,EAAA,MACAw6D,EAAAmnC,aAAA3hG,EAAA,MACAw6D,EAAAonC,OAAA5hG,EAAA,MACAw6D,EAAAqnC,aAAA7hG,EAAA,KAGAw6D,EAAApyB,KAAApoC,EAAA,MACAw6D,EAAAsnC,IAAA9hG,EAAA,MACAw6D,EAAAunC,MAAA/hG,EAAA,IACAw6D,EAAAkxB,oBAOA,SAAAA,YACAlxB,EAAApyB,KAAAi5D,aACA7mC,EAAAknC,OAAAL,WAAA7mC,EAAAmnC,cACAnnC,EAAAonC,OAAAP,WAAA7mC,EAAAqnC,aACA,CAGAnW,W,iBClCA,IAAAlxB,EAAAv6D,EAAAC,QAAAF,EAAA,MAEAw6D,EAAA9nD,MAAA,OAGA8nD,EAAAwnC,SAAAhiG,EAAA,MACAw6D,EAAAxsB,MAAAhuC,EAAA,MACAw6D,EAAAF,OAAAt6D,EAAA,MAGAw6D,EAAAvE,KAAAorC,WAAA7mC,EAAA3E,KAAA2E,EAAAxsB,MAAAwsB,EAAAF,O,iBCVAr6D,EAAAC,QAAAs2F,SAGA,IAAAD,EAAAv2F,EAAA,QACAw2F,SAAA3zF,UAAAD,OAAAzC,OAAAo2F,EAAA1zF,YAAA6C,YAAA8wF,UAAAiJ,UAAA,WAEA,IAAAV,EAAA/+F,EAAA,KACAooC,EAAApoC,EAAA,MAcA,SAAAw2F,SAAAnkF,EAAAmd,EAAAmpE,EAAA9nE,EAAAnuB,EAAAg9F,GACAnJ,EAAAvzF,KAAA4C,KAAAyM,EAAAmd,EAAAqB,EAAA3mB,oBAAAxH,EAAAg9F,GAGA,IAAAt3D,EAAA43D,SAAArH,GACA,MAAArqF,UAAA,4BAMA1I,KAAA+yF,UAMA/yF,KAAAizF,gBAAA,KAGAjzF,KAAA/D,IAAA,IACA,CAuBA20F,SAAAv9B,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,WAAAghC,SAAAnkF,EAAAmjD,EAAAhmC,GAAAgmC,EAAAmjC,QAAAnjC,EAAA3kC,KAAA2kC,EAAA9yD,QAAA8yD,EAAAkqC,QACA,EAOAlJ,SAAA3zF,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,UAAA/wD,KAAA+yF,QACA,OAAA/yF,KAAAirB,KACA,KAAAjrB,KAAA4pB,GACA,SAAA5pB,KAAAu0F,OACA,UAAAv0F,KAAAlD,QACA,UAAAq9F,EAAAn6F,KAAA85F,QAAAx1F,WAEA,EAKAssF,SAAA3zF,UAAAlB,QAAA,SAAAA,UACA,GAAAiE,KAAA5D,SACA,OAAA4D,KAGA,GAAAm5F,EAAAp6C,OAAA/+C,KAAA+yF,WAAAzuF,UACA,MAAAtB,MAAA,qBAAAhD,KAAA+yF,SAEA,OAAApC,EAAA1zF,UAAAlB,QAAAqB,KAAA4C,KACA,EAYA4wF,SAAAtX,EAAA,SAAA+iB,iBAAAhB,EAAAiB,EAAAC,GAGA,UAAAA,IAAA,WACAA,EAAA/5D,EAAA84D,aAAAiB,GAAA9vF,UAGA,GAAA8vF,cAAA,SACAA,EAAA/5D,EAAA+4D,aAAAgB,GAAA9vF,KAEA,gBAAA+vF,kBAAAv/F,EAAAmyB,GACAoT,EAAA84D,aAAAr+F,EAAA6C,aACAsD,IAAA,IAAAwtF,SAAAxhE,EAAAisE,EAAAiB,EAAAC,GACA,CACA,C,iBC5HAliG,EAAAC,QAAAshG,QAEA,IAAAp5D,EAAApoC,EAAA,MASA,SAAAwhG,QAAAa,GAEA,GAAAA,EACA,QAAAt5F,EAAAnG,OAAAmG,KAAAs5F,GAAA9gG,EAAA,EAAAA,EAAAwH,EAAAvH,SAAAD,EACAqE,KAAAmD,EAAAxH,IAAA8gG,EAAAt5F,EAAAxH,GACA,CAyBAigG,QAAArhG,OAAA,SAAAA,OAAAkiG,GACA,OAAAz8F,KAAAiyD,MAAA13D,OAAAkiG,EACA,EAUAb,QAAAzqC,OAAA,SAAAA,OAAAv0D,EAAA8/F,GACA,OAAA18F,KAAAiyD,MAAAd,OAAAv0D,EAAA8/F,EACA,EAUAd,QAAAe,gBAAA,SAAAA,gBAAA//F,EAAA8/F,GACA,OAAA18F,KAAAiyD,MAAA0qC,gBAAA//F,EAAA8/F,EACA,EAWAd,QAAA5qC,OAAA,SAAAA,OAAA4rC,GACA,OAAA58F,KAAAiyD,MAAAjB,OAAA4rC,EACA,EAWAhB,QAAAiB,gBAAA,SAAAA,gBAAAD,GACA,OAAA58F,KAAAiyD,MAAA4qC,gBAAAD,EACA,EASAhB,QAAAkB,OAAA,SAAAA,OAAAlgG,GACA,OAAAoD,KAAAiyD,MAAA6qC,OAAAlgG,EACA,EASAg/F,QAAA1qC,WAAA,SAAAA,WAAAgjB,GACA,OAAAl0E,KAAAiyD,MAAAf,WAAAgjB,EACA,EAUA0nB,QAAA7qC,SAAA,SAAAA,SAAAn0D,EAAAE,GACA,OAAAkD,KAAAiyD,MAAAlB,SAAAn0D,EAAAE,EACA,EAMA8+F,QAAA3+F,UAAA+kC,OAAA,SAAAA,SACA,OAAAhiC,KAAAiyD,MAAAlB,SAAA/wD,KAAAwiC,EAAA03D,cACA,C,iBCvIA7/F,EAAAC,QAAAw2F,OAGA,IAAA8I,EAAAx/F,EAAA,QACA02F,OAAA7zF,UAAAD,OAAAzC,OAAAq/F,EAAA38F,YAAA6C,YAAAgxF,QAAA+I,UAAA,SAEA,IAAAr3D,EAAApoC,EAAA,MAiBA,SAAA02F,OAAArkF,EAAAwe,EAAAsmC,EAAAE,EAAA1+C,EAAAlD,EAAA/S,EAAAg9F,EAAAiD,GAGA,GAAAv6D,EAAAi4D,SAAA1nF,GAAA,CACAjW,EAAAiW,EACAA,EAAAlD,EAAAvL,SACA,SAAAk+B,EAAAi4D,SAAA5qF,GAAA,CACA/S,EAAA+S,EACAA,EAAAvL,SACA,CAGA,KAAA2mB,IAAA3mB,WAAAk+B,EAAA43D,SAAAnvE,IACA,MAAAviB,UAAA,yBAGA,IAAA85B,EAAA43D,SAAA7oC,GACA,MAAA7oD,UAAA,gCAGA,IAAA85B,EAAA43D,SAAA3oC,GACA,MAAA/oD,UAAA,iCAEAkxF,EAAAx8F,KAAA4C,KAAAyM,EAAA3P,GAMAkD,KAAAirB,QAAA,MAMAjrB,KAAAuxD,cAMAvxD,KAAA+S,gBAAA,KAAAzO,UAMAtE,KAAAyxD,eAMAzxD,KAAA6P,iBAAA,KAAAvL,UAMAtE,KAAAwxD,oBAAA,KAMAxxD,KAAA0xD,qBAAA,KAMA1xD,KAAA85F,UAKA95F,KAAA+8F,eACA,CAsBAjM,OAAAz9B,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,WAAAkhC,OAAArkF,EAAAmjD,EAAA3kC,KAAA2kC,EAAA2B,YAAA3B,EAAA6B,aAAA7B,EAAA78C,cAAA68C,EAAA//C,eAAA+/C,EAAA9yD,QAAA8yD,EAAAkqC,QAAAlqC,EAAAmtC,cACA,EAOAjM,OAAA7zF,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,OAAA/wD,KAAAirB,OAAA,OAAAjrB,KAAAirB,MAAA3mB,UACA,cAAAtE,KAAAuxD,YACA,gBAAAvxD,KAAA+S,cACA,eAAA/S,KAAAyxD,aACA,iBAAAzxD,KAAA6P,eACA,UAAA7P,KAAAlD,QACA,UAAAq9F,EAAAn6F,KAAA85F,QAAAx1F,UACA,gBAAAtE,KAAA+8F,eAEA,EAKAjM,OAAA7zF,UAAAlB,QAAA,SAAAA,UAGA,GAAAiE,KAAA5D,SACA,OAAA4D,KAEAA,KAAAwxD,oBAAAxxD,KAAA4O,OAAAouF,WAAAh9F,KAAAuxD,aACAvxD,KAAA0xD,qBAAA1xD,KAAA4O,OAAAouF,WAAAh9F,KAAAyxD,cAEA,OAAAmoC,EAAA38F,UAAAlB,QAAAqB,KAAA4C,KACA,C,iBC9JA3F,EAAAC,QAAA81D,UAGA,IAAAwpC,EAAAx/F,EAAA,QACAg2D,UAAAnzD,UAAAD,OAAAzC,OAAAq/F,EAAA38F,YAAA6C,YAAAswD,WAAAypC,UAAA,YAEA,IAAAlJ,EAAAv2F,EAAA,MACAooC,EAAApoC,EAAA,MACAy2F,EAAAz2F,EAAA,MAEA,IAAA61D,EACAD,EACAE,EAqBAE,UAAAiD,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,WAAAQ,UAAA3jD,EAAAmjD,EAAA9yD,SAAAmgG,QAAArtC,EAAAa,OACA,EASA,SAAAysC,YAAAjpB,EAAAimB,GACA,KAAAjmB,KAAAr4E,QACA,OAAA0I,UACA,IAAAiE,EAAA,GACA,QAAA5M,EAAA,EAAAA,EAAAs4E,EAAAr4E,SAAAD,EACA4M,EAAA0rE,EAAAt4E,GAAA8Q,MAAAwnE,EAAAt4E,GAAAqmC,OAAAk4D,GACA,OAAA3xF,CACA,CAEA6nD,UAAA8sC,wBAQA9sC,UAAAiqC,aAAA,SAAAA,aAAA1H,EAAA/oE,GACA,GAAA+oE,EACA,QAAAh3F,EAAA,EAAAA,EAAAg3F,EAAA/2F,SAAAD,EACA,UAAAg3F,EAAAh3F,KAAA,UAAAg3F,EAAAh3F,GAAA,IAAAiuB,GAAA+oE,EAAAh3F,GAAA,GAAAiuB,EACA,YACA,YACA,EAQAwmC,UAAAkqC,eAAA,SAAAA,eAAA3H,EAAAlmF,GACA,GAAAkmF,EACA,QAAAh3F,EAAA,EAAAA,EAAAg3F,EAAA/2F,SAAAD,EACA,GAAAg3F,EAAAh3F,KAAA8Q,EACA,YACA,YACA,EAaA,SAAA2jD,UAAA3jD,EAAA3P,GACA88F,EAAAx8F,KAAA4C,KAAAyM,EAAA3P,GAMAkD,KAAAywD,OAAAnsD,UAOAtE,KAAA8xF,aAAA,IACA,CAEA,SAAAqL,WAAAziG,GACAA,EAAAo3F,aAAA,KACA,OAAAp3F,CACA,CAQAsC,OAAA2B,eAAAyxD,UAAAnzD,UAAA,eACA8Z,IAAA,WACA,OAAA/W,KAAA8xF,eAAA9xF,KAAA8xF,aAAAtvD,EAAA46D,QAAAp9F,KAAAywD,QACA,IA2BAL,UAAAnzD,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,OAAA13D,EAAAuuB,SAAA,CACA,UAAA/wD,KAAAlD,QACA,SAAAogG,YAAAl9F,KAAA6xF,YAAAqI,IAEA,EAOA9pC,UAAAnzD,UAAAggG,QAAA,SAAAA,QAAAI,GACA,IAAA1L,EAAA3xF,KAEA,GAAAq9F,EAAA,CACA,QAAAC,EAAAtgG,OAAAmG,KAAAk6F,GAAA1hG,EAAA,EAAA80D,EAAA90D,EAAA2hG,EAAA1hG,SAAAD,EAAA,CACA80D,EAAA4sC,EAAAC,EAAA3hG,IACAg2F,EAAAvuF,KACAqtD,EAAAolC,SAAAvxF,UACA2rD,EAAAoD,SACA5C,EAAAp0D,SAAAiI,UACA4rD,EAAAmD,SACA5C,EAAAvxB,UAAA56B,UACA0rD,EAAAqD,SACA5C,EAAA7mC,KAAAtlB,UACAqsF,EAAAt9B,SACAjD,UAAAiD,UAAAiqC,EAAA3hG,GAAA80D,GAEA,CACA,CACA,OAAAzwD,IACA,EAOAowD,UAAAnzD,UAAA8Z,IAAA,SAAAA,IAAAtK,GACA,OAAAzM,KAAAywD,QAAAzwD,KAAAywD,OAAAhkD,IACA,IACA,EASA2jD,UAAAnzD,UAAAsgG,QAAA,SAAAA,QAAA9wF,GACA,GAAAzM,KAAAywD,QAAAzwD,KAAAywD,OAAAhkD,aAAAyjD,EACA,OAAAlwD,KAAAywD,OAAAhkD,GAAApQ,OACA,MAAA2G,MAAA,iBAAAyJ,EACA,EASA2jD,UAAAnzD,UAAAmG,IAAA,SAAAA,IAAA8wE,GAEA,KAAAA,aAAAyc,GAAAzc,EAAAqgB,SAAAjwF,WAAA4vE,aAAAjkB,GAAAikB,aAAA2c,GAAA3c,aAAAhkB,GAAAgkB,aAAAlkB,GAAAkkB,aAAA9jB,WACA,MAAA1nD,UAAA,wCAEA,IAAA1I,KAAAywD,OACAzwD,KAAAywD,OAAA,OACA,CACA,IAAA+sC,EAAAx9F,KAAA+W,IAAAm9D,EAAAznE,MACA,GAAA+wF,EAAA,CACA,GAAAA,aAAAptC,WAAA8jB,aAAA9jB,aAAAotC,aAAAvtC,GAAAutC,aAAAxtC,GAAA,CAEA,IAAAS,EAAA+sC,EAAA3L,YACA,QAAAl2F,EAAA,EAAAA,EAAA80D,EAAA70D,SAAAD,EACAu4E,EAAA9wE,IAAAqtD,EAAA90D,IACAqE,KAAA4W,OAAA4mF,GACA,IAAAx9F,KAAAywD,OACAzwD,KAAAywD,OAAA,GACAyjB,EAAAryC,WAAA27D,EAAA1gG,QAAA,KAEA,MACA,MAAAkG,MAAA,mBAAAkxE,EAAAznE,KAAA,QAAAzM,KACA,CACA,CACAA,KAAAywD,OAAAyjB,EAAAznE,MAAAynE,EACAA,EAAAupB,MAAAz9F,MACA,OAAAm9F,WAAAn9F,KACA,EASAowD,UAAAnzD,UAAA2Z,OAAA,SAAAA,OAAAs9D,GAEA,KAAAA,aAAA0lB,GACA,MAAAlxF,UAAA,qCACA,GAAAwrE,EAAAtlE,SAAA5O,KACA,MAAAgD,MAAAkxE,EAAA,uBAAAl0E,aAEAA,KAAAywD,OAAAyjB,EAAAznE,MACA,IAAAzP,OAAAmG,KAAAnD,KAAAywD,QAAA70D,OACAoE,KAAAywD,OAAAnsD,UAEA4vE,EAAAwpB,SAAA19F,MACA,OAAAm9F,WAAAn9F,KACA,EAQAowD,UAAAnzD,UAAAg0F,OAAA,SAAAA,OAAAviF,EAAAkhD,GAEA,GAAAptB,EAAA43D,SAAA1rF,GACAA,IAAAgD,MAAA,UACA,IAAAhU,MAAAwzB,QAAAxiB,GACA,MAAAhG,UAAA,gBACA,GAAAgG,KAAA9S,QAAA8S,EAAA,QACA,MAAA1L,MAAA,yBAEA,IAAA26F,EAAA39F,KACA,MAAA0O,EAAA9S,OAAA,GACA,IAAAgiG,EAAAlvF,EAAAmmC,QACA,GAAA8oD,EAAAltC,QAAAktC,EAAAltC,OAAAmtC,GAAA,CACAD,IAAAltC,OAAAmtC,GACA,KAAAD,aAAAvtC,WACA,MAAAptD,MAAA,4CACA,MACA26F,EAAAv6F,IAAAu6F,EAAA,IAAAvtC,UAAAwtC,GACA,CACA,GAAAhuC,EACA+tC,EAAAV,QAAArtC,GACA,OAAA+tC,CACA,EAMAvtC,UAAAnzD,UAAAw1D,WAAA,SAAAA,aACA,IAAAhC,EAAAzwD,KAAA6xF,YAAAl2F,EAAA,EACA,MAAAA,EAAA80D,EAAA70D,UACA60D,EAAA90D,aAAAy0D,UACAK,EAAA90D,KAAA82D,kBAEAhC,EAAA90D,KAAAI,UACA,OAAAiE,KAAAjE,SACA,EASAq0D,UAAAnzD,UAAA+lC,OAAA,SAAAA,OAAAt0B,EAAAmvF,EAAAC,GAGA,UAAAD,IAAA,WACAC,EAAAD,EACAA,EAAAv5F,SACA,SAAAu5F,IAAAngG,MAAAwzB,QAAA2sE,GACAA,EAAA,CAAAA,GAEA,GAAAr7D,EAAA43D,SAAA1rF,MAAA9S,OAAA,CACA,GAAA8S,IAAA,IACA,OAAA1O,KAAAwyD,KACA9jD,IAAAgD,MAAA,IACA,UAAAhD,EAAA9S,OACA,OAAAoE,KAGA,GAAA0O,EAAA,QACA,OAAA1O,KAAAwyD,KAAAxvB,OAAAt0B,EAAA/Q,MAAA,GAAAkgG,GAGA,IAAAE,EAAA/9F,KAAA+W,IAAArI,EAAA,IACA,GAAAqvF,EAAA,CACA,GAAArvF,EAAA9S,SAAA,GACA,IAAAiiG,KAAAviG,QAAAyiG,EAAAj+F,cAAA,EACA,OAAAi+F,CACA,SAAAA,aAAA3tC,YAAA2tC,IAAA/6D,OAAAt0B,EAAA/Q,MAAA,GAAAkgG,EAAA,OACA,OAAAE,CAGA,MACA,QAAApiG,EAAA,EAAAA,EAAAqE,KAAA6xF,YAAAj2F,SAAAD,EACA,GAAAqE,KAAA8xF,aAAAn2F,aAAAy0D,YAAA2tC,EAAA/9F,KAAA8xF,aAAAn2F,GAAAqnC,OAAAt0B,EAAAmvF,EAAA,OACA,OAAAE,EAGA,GAAA/9F,KAAA4O,SAAA,MAAAkvF,EACA,YACA,OAAA99F,KAAA4O,OAAAo0B,OAAAt0B,EAAAmvF,EACA,EAoBAztC,UAAAnzD,UAAA+/F,WAAA,SAAAA,WAAAtuF,GACA,IAAAqvF,EAAA/9F,KAAAgjC,OAAAt0B,EAAA,CAAAuhD,IACA,IAAA8tC,EACA,MAAA/6F,MAAA,iBAAA0L,GACA,OAAAqvF,CACA,EASA3tC,UAAAnzD,UAAA+gG,WAAA,SAAAA,WAAAtvF,GACA,IAAAqvF,EAAA/9F,KAAAgjC,OAAAt0B,EAAA,CAAAwhD,IACA,IAAA6tC,EACA,MAAA/6F,MAAA,iBAAA0L,EAAA,QAAA1O,MACA,OAAA+9F,CACA,EASA3tC,UAAAnzD,UAAA69F,iBAAA,SAAAA,iBAAApsF,GACA,IAAAqvF,EAAA/9F,KAAAgjC,OAAAt0B,EAAA,CAAAuhD,EAAAC,IACA,IAAA6tC,EACA,MAAA/6F,MAAA,yBAAA0L,EAAA,QAAA1O,MACA,OAAA+9F,CACA,EASA3tC,UAAAnzD,UAAAghG,cAAA,SAAAA,cAAAvvF,GACA,IAAAqvF,EAAA/9F,KAAAgjC,OAAAt0B,EAAA,CAAAshD,IACA,IAAA+tC,EACA,MAAA/6F,MAAA,oBAAA0L,EAAA,QAAA1O,MACA,OAAA+9F,CACA,EAGA3tC,UAAAqrC,WAAA,SAAAC,EAAAwC,EAAAC,GACAluC,EAAAyrC,EACA1rC,EAAAkuC,EACAhuC,EAAAiuC,CACA,C,iBC/aA9jG,EAAAC,QAAAs/F,iBAEAA,iBAAAC,UAAA,mBAEA,IAAAr3D,EAAApoC,EAAA,MAEA,IAAAi2D,EAUA,SAAAupC,iBAAAntF,EAAA3P,GAEA,IAAA0lC,EAAA43D,SAAA3tF,GACA,MAAA/D,UAAA,yBAEA,GAAA5L,IAAA0lC,EAAAi4D,SAAA39F,GACA,MAAA4L,UAAA,6BAMA1I,KAAAlD,UAMAkD,KAAA+8F,cAAA,KAMA/8F,KAAAyM,OAMAzM,KAAA4O,OAAA,KAMA5O,KAAA5D,SAAA,MAMA4D,KAAA85F,QAAA,KAMA95F,KAAA+hB,SAAA,IACA,CAEA/kB,OAAAgqF,iBAAA4S,iBAAA38F,UAAA,CAQAu1D,KAAA,CACAz7C,IAAA,WACA,IAAA4mF,EAAA39F,KACA,MAAA29F,EAAA/uF,SAAA,KACA+uF,IAAA/uF,OACA,OAAA+uF,CACA,GASA/L,SAAA,CACA76E,IAAA,WACA,IAAArI,EAAA,CAAA1O,KAAAyM,MACAkxF,EAAA39F,KAAA4O,OACA,MAAA+uF,EAAA,CACAjvF,EAAAuN,QAAA0hF,EAAAlxF,MACAkxF,IAAA/uF,MACA,CACA,OAAAF,EAAAiD,KAAA,IACA,KASAioF,iBAAA38F,UAAA+kC,OAAA,SAAAA,SACA,MAAAh/B,OACA,EAOA42F,iBAAA38F,UAAAwgG,MAAA,SAAAA,MAAA7uF,GACA,GAAA5O,KAAA4O,QAAA5O,KAAA4O,WACA5O,KAAA4O,OAAAgI,OAAA5W,MACAA,KAAA4O,SACA5O,KAAA5D,SAAA,MACA,IAAAo2D,EAAA5jD,EAAA4jD,KACA,GAAAA,aAAAnC,EACAmC,EAAA4rC,WAAAp+F,KACA,EAOA45F,iBAAA38F,UAAAygG,SAAA,SAAAA,SAAA9uF,GACA,IAAA4jD,EAAA5jD,EAAA4jD,KACA,GAAAA,aAAAnC,EACAmC,EAAA6rC,cAAAr+F,MACAA,KAAA4O,OAAA,KACA5O,KAAA5D,SAAA,KACA,EAMAw9F,iBAAA38F,UAAAlB,QAAA,SAAAA,UACA,GAAAiE,KAAA5D,SACA,OAAA4D,KACA,GAAAA,KAAAwyD,gBAAAnC,EACArwD,KAAA5D,SAAA,KACA,OAAA4D,IACA,EAOA45F,iBAAA38F,UAAA29F,UAAA,SAAAA,UAAAnuF,GACA,GAAAzM,KAAAlD,QACA,OAAAkD,KAAAlD,QAAA2P,GACA,OAAAnI,SACA,EASAs1F,iBAAA38F,UAAAw0F,UAAA,SAAAA,UAAAhlF,EAAA7N,EAAAi8F,GACA,IAAAA,IAAA76F,KAAAlD,SAAAkD,KAAAlD,QAAA2P,KAAAnI,WACAtE,KAAAlD,UAAAkD,KAAAlD,QAAA,KAAA2P,GAAA7N,EACA,OAAAoB,IACA,EASA45F,iBAAA38F,UAAAqhG,gBAAA,SAAAA,gBAAA7xF,EAAA7N,EAAA2/F,GACA,IAAAv+F,KAAA+8F,cAAA,CACA/8F,KAAA+8F,cAAA,EACA,CACA,IAAAA,EAAA/8F,KAAA+8F,cACA,GAAAwB,EAAA,CAGA,IAAAC,EAAAzB,EAAA0B,MAAA,SAAAD,GACA,OAAAxhG,OAAAC,UAAAC,eAAAE,KAAAohG,EAAA/xF,EACA,IACA,GAAA+xF,EAAA,CAEA,IAAAE,EAAAF,EAAA/xF,GACA+1B,EAAAm8D,YAAAD,EAAAH,EAAA3/F,EACA,MAEA4/F,EAAA,GACAA,EAAA/xF,GAAA+1B,EAAAm8D,YAAA,GAAAJ,EAAA3/F,GACAm+F,EAAAxhG,KAAAijG,EACA,CACA,MAEA,IAAAI,EAAA,GACAA,EAAAnyF,GAAA7N,EACAm+F,EAAAxhG,KAAAqjG,EACA,CACA,OAAA5+F,IACA,EAQA45F,iBAAA38F,UAAA4kC,WAAA,SAAAA,WAAA/kC,EAAA+9F,GACA,GAAA/9F,EACA,QAAAqG,EAAAnG,OAAAmG,KAAArG,GAAAnB,EAAA,EAAAA,EAAAwH,EAAAvH,SAAAD,EACAqE,KAAAyxF,UAAAtuF,EAAAxH,GAAAmB,EAAAqG,EAAAxH,IAAAk/F,GACA,OAAA76F,IACA,EAMA45F,iBAAA38F,UAAAiiB,SAAA,SAAAA,WACA,IAAA26E,EAAA75F,KAAAF,YAAA+5F,UACAjI,EAAA5xF,KAAA4xF,SACA,GAAAA,EAAAh2F,OACA,OAAAi+F,EAAA,IAAAjI,EACA,OAAAiI,CACA,EAGAD,iBAAA6B,WAAA,SAAAoD,GACAxuC,EAAAwuC,CACA,C,iBCjPAxkG,EAAAC,QAAAu2F,MAGA,IAAA+I,EAAAx/F,EAAA,QACAy2F,MAAA5zF,UAAAD,OAAAzC,OAAAq/F,EAAA38F,YAAA6C,YAAA+wF,OAAAgJ,UAAA,QAEA,IAAAlJ,EAAAv2F,EAAA,MACAooC,EAAApoC,EAAA,MAYA,SAAAy2F,MAAApkF,EAAAqyF,EAAAhiG,EAAAg9F,GACA,IAAAp8F,MAAAwzB,QAAA4tE,GAAA,CACAhiG,EAAAgiG,EACAA,EAAAx6F,SACA,CACAs1F,EAAAx8F,KAAA4C,KAAAyM,EAAA3P,GAGA,KAAAgiG,IAAAx6F,WAAA5G,MAAAwzB,QAAA4tE,IACA,MAAAp2F,UAAA,+BAMA1I,KAAAy2F,MAAAqI,GAAA,GAOA9+F,KAAA4yF,YAAA,GAMA5yF,KAAA85F,SACA,CAgBAjJ,MAAAx9B,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,WAAAihC,MAAApkF,EAAAmjD,EAAA6mC,MAAA7mC,EAAA9yD,QAAA8yD,EAAAkqC,QACA,EAOAjJ,MAAA5zF,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,UAAA/wD,KAAAlD,QACA,QAAAkD,KAAAy2F,MACA,UAAA0D,EAAAn6F,KAAA85F,QAAAx1F,WAEA,EASA,SAAAy6F,kBAAAtI,GACA,GAAAA,EAAA7nF,OACA,QAAAjT,EAAA,EAAAA,EAAA86F,EAAA7D,YAAAh3F,SAAAD,EACA,IAAA86F,EAAA7D,YAAAj3F,GAAAiT,OACA6nF,EAAA7nF,OAAAxL,IAAAqzF,EAAA7D,YAAAj3F,GACA,CAOAk1F,MAAA5zF,UAAAmG,IAAA,SAAAA,IAAA2gD,GAGA,KAAAA,aAAA4sC,GACA,MAAAjoF,UAAA,yBAEA,GAAAq7C,EAAAn1C,QAAAm1C,EAAAn1C,SAAA5O,KAAA4O,OACAm1C,EAAAn1C,OAAAgI,OAAAmtC,GACA/jD,KAAAy2F,MAAAl7F,KAAAwoD,EAAAt3C,MACAzM,KAAA4yF,YAAAr3F,KAAAwoD,GACAA,EAAAywC,OAAAx0F,KACA++F,kBAAA/+F,MACA,OAAAA,IACA,EAOA6wF,MAAA5zF,UAAA2Z,OAAA,SAAAA,OAAAmtC,GAGA,KAAAA,aAAA4sC,GACA,MAAAjoF,UAAA,yBAEA,IAAArE,EAAArE,KAAA4yF,YAAAt3F,QAAAyoD,GAGA,GAAA1/C,EAAA,EACA,MAAArB,MAAA+gD,EAAA,uBAAA/jD,MAEAA,KAAA4yF,YAAApoE,OAAAnmB,EAAA,GACAA,EAAArE,KAAAy2F,MAAAn7F,QAAAyoD,EAAAt3C,MAGA,GAAApI,GAAA,EACArE,KAAAy2F,MAAAjsE,OAAAnmB,EAAA,GAEA0/C,EAAAywC,OAAA,KACA,OAAAx0F,IACA,EAKA6wF,MAAA5zF,UAAAwgG,MAAA,SAAAA,MAAA7uF,GACAgrF,EAAA38F,UAAAwgG,MAAArgG,KAAA4C,KAAA4O,GACA,IAAAmlE,EAAA/zE,KAEA,QAAArE,EAAA,EAAAA,EAAAqE,KAAAy2F,MAAA76F,SAAAD,EAAA,CACA,IAAAooD,EAAAn1C,EAAAmI,IAAA/W,KAAAy2F,MAAA96F,IACA,GAAAooD,MAAAywC,OAAA,CACAzwC,EAAAywC,OAAAzgB,EACAA,EAAA6e,YAAAr3F,KAAAwoD,EACA,CACA,CAEAg7C,kBAAA/+F,KACA,EAKA6wF,MAAA5zF,UAAAygG,SAAA,SAAAA,SAAA9uF,GACA,QAAAjT,EAAA,EAAAooD,EAAApoD,EAAAqE,KAAA4yF,YAAAh3F,SAAAD,EACA,IAAAooD,EAAA/jD,KAAA4yF,YAAAj3F,IAAAiT,OACAm1C,EAAAn1C,OAAAgI,OAAAmtC,GACA61C,EAAA38F,UAAAygG,SAAAtgG,KAAA4C,KAAA4O,EACA,EAkBAiiF,MAAAvX,EAAA,SAAA0lB,gBACA,IAAAF,EAAA,IAAAphG,MAAAf,UAAAf,QACAyI,EAAA,EACA,MAAAA,EAAA1H,UAAAf,OACAkjG,EAAAz6F,GAAA1H,UAAA0H,KACA,gBAAA46F,eAAAhiG,EAAAiiG,GACA18D,EAAA84D,aAAAr+F,EAAA6C,aACAsD,IAAA,IAAAytF,MAAAqO,EAAAJ,IACA9hG,OAAA2B,eAAA1B,EAAAiiG,EAAA,CACAnoF,IAAAyrB,EAAA28D,YAAAL,GACAtjG,IAAAgnC,EAAA48D,YAAAN,IAEA,CACA,C,iBCzMAzkG,EAAAC,QAAA8tC,MAEAA,MAAArmB,SAAA,KACAqmB,MAAAsnB,SAAA,CAAA2vC,SAAA,OAEA,IAAAjD,EAAAhiG,EAAA,MACAi2D,EAAAj2D,EAAA,MACA61D,EAAA71D,EAAA,MACAu2F,EAAAv2F,EAAA,MACAw2F,EAAAx2F,EAAA,MACAy2F,EAAAz2F,EAAA,MACA81D,EAAA91D,EAAA,MACA41D,EAAA51D,EAAA,MACA02F,EAAA12F,EAAA,MACA++F,EAAA/+F,EAAA,KACAooC,EAAApoC,EAAA,MAEA,IAAAklG,EAAA,gBACAC,EAAA,kBACAC,EAAA,qBACAC,EAAA,uBACAC,EAAA,YACAC,EAAA,cACAhM,EAAA,oDACAiM,EAAA,2BACAC,EAAA,+DACAC,EAAA,kCAmCA,SAAA13D,MAAAguB,EAAA5D,EAAA11D,GAEA,KAAA01D,aAAAnC,GAAA,CACAvzD,EAAA01D,EACAA,EAAA,IAAAnC,CACA,CACA,IAAAvzD,EACAA,EAAAsrC,MAAAsnB,SAEA,IAAAqwC,EAAAjjG,EAAAijG,uBAAA,MACA,IAAAC,EAAA5D,EAAAhmC,EAAAt5D,EAAAmjG,sBAAA,OACA3yF,EAAA0yF,EAAA1yF,KACA/R,EAAAykG,EAAAzkG,KACA2kG,EAAAF,EAAAE,KACAC,EAAAH,EAAAG,KACAC,EAAAJ,EAAAI,KAEA,IAAA5gF,EAAA,KACA6gF,EACAC,EACAC,EACAnP,EACAoP,EAAA,MAEA,IAAA7C,EAAAnrC,EAEA,IAAAiuC,EAAA3jG,EAAAuiG,SAAA,SAAA5yF,GAAA,OAAAA,CAAA,EAAA+1B,EAAA0sB,UAGA,SAAAwxC,QAAAtpB,EAAA3qE,EAAAk0F,GACA,IAAA5+E,EAAAqmB,MAAArmB,SACA,IAAA4+E,EACAv4D,MAAArmB,SAAA,KACA,OAAA/e,MAAA,YAAAyJ,GAAA,cAAA2qE,EAAA,OAAAr1D,IAAA,iBAAAi+E,EAAAY,KAAA,IACA,CAEA,SAAAC,aACA,IAAAxkG,EAAA,GACA+6E,EACA,GAEA,IAAAA,EAAA9pE,OAAA,KAAA8pE,IAAA,IACA,MAAAspB,QAAAtpB,GAEA/6E,EAAAd,KAAA+R,KACA6yF,EAAA/oB,GACAA,EAAA8oB,GACA,OAAA9oB,IAAA,KAAAA,IAAA,KACA,OAAA/6E,EAAAsV,KAAA,GACA,CAEA,SAAAmvF,UAAAC,GACA,IAAA3pB,EAAA9pE,IACA,OAAA8pE,GACA,QACA,QACA77E,EAAA67E,GACA,OAAAypB,aACA,sBACA,YACA,wBACA,aAEA,IACA,OAAAG,YAAA5pB,EAAA,KACA,OAAAz8E,GAGA,GAAAomG,GAAAlB,EAAAj/D,KAAAw2C,GACA,OAAAA,EAGA,MAAAspB,QAAAtpB,EAAA,QACA,CACA,CAEA,SAAA6pB,WAAAl2F,EAAAm2F,GACA,IAAA9pB,EAAArqE,EACA,GACA,GAAAm0F,KAAA9pB,EAAA8oB,OAAA,KAAA9oB,IAAA,KACArsE,EAAAxP,KAAAslG,mBAEA91F,EAAAxP,KAAA,CAAAwR,EAAAo0F,QAAA7zF,KAAA6yF,EAAA,WAAAgB,QAAA7zF,KAAAP,GACA,OAAAozF,EAAA,WACAA,EAAA,IACA,CAEA,SAAAa,YAAA5pB,EAAAupB,GACA,IAAAtnC,EAAA,EACA,GAAA+d,EAAA53C,OAAA,UACA65B,GAAA,EACA+d,IAAAvtD,UAAA,EACA,CACA,OAAAutD,GACA,8BACA,OAAA/d,EAAA1qD,SACA,wCACA,OAAAqrD,IACA,QACA,SAEA,GAAAslC,EAAA1+D,KAAAw2C,GACA,OAAA/d,EAAArsB,SAAAoqC,EAAA,IACA,GAAAooB,EAAA5+D,KAAAw2C,GACA,OAAA/d,EAAArsB,SAAAoqC,EAAA,IACA,GAAAsoB,EAAA9+D,KAAAw2C,GACA,OAAA/d,EAAArsB,SAAAoqC,EAAA,GAGA,GAAAuc,EAAA/yD,KAAAw2C,GACA,OAAA/d,EAAAuZ,WAAAwE,GAGA,MAAAspB,QAAAtpB,EAAA,SAAAupB,EACA,CAEA,SAAAQ,QAAA/pB,EAAAgqB,GACA,OAAAhqB,GACA,8BACA,iBACA,QACA,SAIA,IAAAgqB,GAAAhqB,EAAA53C,OAAA,SACA,MAAAkhE,QAAAtpB,EAAA,MAEA,GAAAmoB,EAAA3+D,KAAAw2C,GACA,OAAApqC,SAAAoqC,EAAA,IACA,GAAAqoB,EAAA7+D,KAAAw2C,GACA,OAAApqC,SAAAoqC,EAAA,IAGA,GAAAuoB,EAAA/+D,KAAAw2C,GACA,OAAApqC,SAAAoqC,EAAA,GAGA,MAAAspB,QAAAtpB,EAAA,KACA,CAEA,SAAAiqB,eAGA,GAAAhB,IAAA/7F,UACA,MAAAo8F,QAAA,WAEAL,EAAA/yF,IAGA,IAAAuyF,EAAAj/D,KAAAy/D,GACA,MAAAK,QAAAL,EAAA,QAEA1C,IAAA1M,OAAAoP,GACAF,EAAA,IACA,CAEA,SAAAmB,cACA,IAAAlqB,EAAA8oB,IACA,IAAAqB,EACA,OAAAnqB,GACA,WACAmqB,EAAAhB,MAAA,IACAjzF,IACA,MACA,aACAA,IAEA,QACAi0F,EAAAjB,MAAA,IACA,MAEAlpB,EAAAypB,aACAV,EAAA,KACAoB,EAAAhmG,KAAA67E,EACA,CAEA,SAAAoqB,cACArB,EAAA,KACA/O,EAAAyP,aACAL,EAAApP,IAAA,SAGA,IAAAoP,GAAApP,IAAA,SACA,MAAAsP,QAAAtP,EAAA,UAEA+O,EAAA,IACA,CAEA,SAAAsB,YAAA7yF,EAAAwoE,GACA,OAAAA,GAEA,aACAsqB,YAAA9yF,EAAAwoE,GACA+oB,EAAA,KACA,YAEA,cACAwB,UAAA/yF,EAAAwoE,GACA,YAEA,WACAwqB,UAAAhzF,EAAAwoE,GACA,YAEA,cACAyqB,aAAAjzF,EAAAwoE,GACA,YAEA,aACA0qB,eAAAlzF,EAAAwoE,GACA,YAEA,YACA,CAEA,SAAA2qB,QAAAx5F,EAAAy5F,EAAAC,GACA,IAAAC,EAAAlC,EAAAY,KACA,GAAAr4F,EAAA,CACA,UAAAA,EAAAuxF,UAAA,UACAvxF,EAAAuxF,QAAAsG,GACA,CACA73F,EAAAwZ,SAAAqmB,MAAArmB,QACA,CACA,GAAAo+E,EAAA,WACA,IAAA/oB,EACA,OAAAA,EAAA9pE,OAAA,IACA00F,EAAA5qB,GACA+oB,EAAA,SACA,MACA,GAAA8B,EACAA,IACA9B,EAAA,KACA,GAAA53F,aAAAuxF,UAAA,UAAAiG,GACAx3F,EAAAuxF,QAAAsG,EAAA8B,IAAA35F,EAAAuxF,OACA,CACA,CAEA,SAAA6H,UAAA/yF,EAAAwoE,GAGA,IAAAwoB,EAAAh/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,aAEA,IAAAnsD,EAAA,IAAAglC,EAAAmnB,GACA2qB,QAAA92E,GAAA,SAAAk3E,gBAAA/qB,GACA,GAAAqqB,YAAAx2E,EAAAmsD,GACA,OAEA,OAAAA,GAEA,UACAgrB,cAAAn3E,EAAAmsD,GACA,MAEA,eACA,eACAirB,WAAAp3E,EAAAmsD,GACA,MAEA,eAEA,GAAAopB,EAAA,CACA6B,WAAAp3E,EAAA,kBACA,MACAo3E,WAAAp3E,EAAA,WACA,CACA,MAEA,YACAq3E,WAAAr3E,EAAAmsD,GACA,MAEA,iBACA6pB,WAAAh2E,EAAAunE,aAAAvnE,EAAAunE,WAAA,KACA,MAEA,eACAyO,WAAAh2E,EAAA0nE,WAAA1nE,EAAA0nE,SAAA,UACA,MAEA,QAEA,IAAA6N,IAAAX,EAAAj/D,KAAAw2C,GACA,MAAAspB,QAAAtpB,GAEA77E,EAAA67E,GACAirB,WAAAp3E,EAAA,YACA,MAEA,IACArc,EAAAxL,IAAA6nB,EACA,CAEA,SAAAo3E,WAAAzzF,EAAAylF,EAAAE,GACA,IAAAtpE,EAAA3d,IACA,GAAA2d,IAAA,SACAs3E,WAAA3zF,EAAAylF,GACA,MACA,CAQA,MAAAppE,EAAA8V,SAAA,MAAAm/D,IAAA1hE,WAAA,MACAvT,GAAA3d,GACA,CAGA,IAAAuyF,EAAAj/D,KAAA3V,GACA,MAAAy1E,QAAAz1E,EAAA,QAEA,IAAAxe,EAAAa,IAGA,IAAAsyF,EAAAh/D,KAAAn0B,GACA,MAAAi0F,QAAAj0F,EAAA,QAEAA,EAAAg0F,EAAAh0F,GACA0zF,EAAA,KAEA,IAAAp8C,EAAA,IAAA4sC,EAAAlkF,EAAA00F,QAAA7zF,KAAA2d,EAAAopE,EAAAE,GACAwN,QAAAh+C,GAAA,SAAAy+C,iBAAAprB,GAGA,GAAAA,IAAA,UACAsqB,YAAA39C,EAAAqzB,GACA+oB,EAAA,IACA,MACA,MAAAO,QAAAtpB,EAEA,aAAAqrB,kBACAC,mBAAA3+C,EACA,IAEA,GAAAswC,IAAA,mBAEA,IAAAoC,EAAA,IAAA5F,EAAA,IAAApkF,GACAs3C,EAAA0tC,UAAA,wBACAgF,EAAArzF,IAAA2gD,GACAn1C,EAAAxL,IAAAqzF,EACA,MACA7nF,EAAAxL,IAAA2gD,EACA,CAKA,IAAAy8C,GAAAz8C,EAAAq0C,WAAAe,EAAAhF,OAAAlpE,KAAA3mB,WAAA60F,EAAAE,MAAApuE,KAAA3mB,WACAy/C,EAAA0tC,UAAA,oBACA,CAEA,SAAA8Q,WAAA3zF,EAAAylF,GACA,IAAA5nF,EAAAa,IAGA,IAAAsyF,EAAAh/D,KAAAn0B,GACA,MAAAi0F,QAAAj0F,EAAA,QAEA,IAAA2iB,EAAAoT,EAAAmgE,QAAAl2F,GACA,GAAAA,IAAA2iB,EACA3iB,EAAA+1B,EAAA4xD,QAAA3nF,GACA0zF,EAAA,KACA,IAAAv2E,EAAAu3E,QAAA7zF,KACA,IAAA2d,EAAA,IAAAglC,EAAAxjD,GACAwe,EAAAyqE,MAAA,KACA,IAAA3xC,EAAA,IAAA4sC,EAAAvhE,EAAAxF,EAAAnd,EAAA4nF,GACAtwC,EAAAhiC,SAAAqmB,MAAArmB,SACAggF,QAAA92E,GAAA,SAAA23E,iBAAAxrB,GACA,OAAAA,GAEA,aACAsqB,YAAAz2E,EAAAmsD,GACA+oB,EAAA,KACA,MAEA,eACA,eACAkC,WAAAp3E,EAAAmsD,GACA,MAEA,eAEA,GAAAopB,EAAA,CACA6B,WAAAp3E,EAAA,kBACA,MACAo3E,WAAAp3E,EAAA,WACA,CACA,MAEA,cACA02E,UAAA12E,EAAAmsD,GACA,MAEA,WACAwqB,UAAA32E,EAAAmsD,GACA,MAGA,QACA,MAAAspB,QAAAtpB,GAEA,IACAxoE,EAAAxL,IAAA6nB,GACA7nB,IAAA2gD,EACA,CAEA,SAAAq+C,cAAAxzF,GACAuxF,EAAA,KACA,IAAApN,EAAAzlF,IAGA,GAAA6rF,EAAAp6C,OAAAg0C,KAAAzuF,UACA,MAAAo8F,QAAA3N,EAAA,QAEAoN,EAAA,KACA,IAAAjN,EAAA5lF,IAGA,IAAAuyF,EAAAj/D,KAAAsyD,GACA,MAAAwN,QAAAxN,EAAA,QAEAiN,EAAA,KACA,IAAA1zF,EAAAa,IAGA,IAAAsyF,EAAAh/D,KAAAn0B,GACA,MAAAi0F,QAAAj0F,EAAA,QAEA0zF,EAAA,KACA,IAAAp8C,EAAA,IAAA6sC,EAAA6P,EAAAh0F,GAAA00F,QAAA7zF,KAAAylF,EAAAG,GACA6O,QAAAh+C,GAAA,SAAA8+C,oBAAAzrB,GAGA,GAAAA,IAAA,UACAsqB,YAAA39C,EAAAqzB,GACA+oB,EAAA,IACA,MACA,MAAAO,QAAAtpB,EAEA,aAAA0rB,qBACAJ,mBAAA3+C,EACA,IACAn1C,EAAAxL,IAAA2gD,EACA,CAEA,SAAAu+C,WAAA1zF,EAAAwoE,GAGA,IAAAwoB,EAAAh/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,QAEA,IAAAqf,EAAA,IAAA5F,EAAA4P,EAAArpB,IACA2qB,QAAAtL,GAAA,SAAAsM,iBAAA3rB,GACA,GAAAA,IAAA,UACAsqB,YAAAjL,EAAArf,GACA+oB,EAAA,IACA,MACA5kG,EAAA67E,GACAirB,WAAA5L,EAAA,WACA,CACA,IACA7nF,EAAAxL,IAAAqzF,EACA,CAEA,SAAAmL,UAAAhzF,EAAAwoE,GAGA,IAAAwoB,EAAAh/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,QAEA,IAAA6iB,EAAA,IAAA/pC,EAAAknB,GACA2qB,QAAA9H,GAAA,SAAA+I,gBAAA5rB,GACA,OAAAA,GACA,aACAsqB,YAAAzH,EAAA7iB,GACA+oB,EAAA,KACA,MAEA,eACAc,WAAAhH,EAAAtH,WAAAsH,EAAAtH,SAAA,UACA,MAEA,QACAsQ,eAAAhJ,EAAA7iB,GAEA,IACAxoE,EAAAxL,IAAA62F,EACA,CAEA,SAAAgJ,eAAAr0F,EAAAwoE,GAGA,IAAAwoB,EAAAh/D,KAAAw2C,GACA,MAAAspB,QAAAtpB,EAAA,QAEA+oB,EAAA,KACA,IAAAvhG,EAAAuiG,QAAA7zF,IAAA,MACA41F,EAAA,CACApmG,QAAAwH,WAEA4+F,EAAAzR,UAAA,SAAAhlF,EAAA7N,GACA,GAAAoB,KAAAlD,UAAAwH,UACAtE,KAAAlD,QAAA,GACAkD,KAAAlD,QAAA2P,GAAA7N,CACA,EACAmjG,QAAAmB,GAAA,SAAAC,qBAAA/rB,GAGA,GAAAA,IAAA,UACAsqB,YAAAwB,EAAA9rB,GACA+oB,EAAA,IACA,MACA,MAAAO,QAAAtpB,EAEA,aAAAgsB,sBACAV,mBAAAQ,EACA,IACAt0F,EAAAxL,IAAAg0E,EAAAx4E,EAAAskG,EAAApJ,QAAAoJ,EAAApmG,QACA,CAEA,SAAA4kG,YAAA9yF,EAAAwoE,GACA,IAAAisB,EAAAlD,EAAA,UAGA,IAAAN,EAAAj/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,QAEA,IAAA3qE,EAAA2qE,EACA,IAAA7oB,EAAA9hD,EACA,IAAA8xF,EAEA,GAAA8E,EAAA,CACAlD,EAAA,KACA1zF,EAAA,IAAAA,EAAA,IACA8hD,EAAA9hD,EACA2qE,EAAA8oB,IACA,GAAAJ,EAAAl/D,KAAAw2C,GAAA,CACAmnB,EAAAnnB,EAAAz5E,MAAA,GACA8O,GAAA2qE,EACA9pE,GACA,CACA,CACA6yF,EAAA,KACA,IAAAmD,EAAAC,iBAAA30F,EAAAnC,GACA6xF,gBAAA1vF,EAAA2/C,EAAA+0C,EAAA/E,EACA,CAEA,SAAAgF,iBAAA30F,EAAAnC,GAEA,GAAA0zF,EAAA,WACA,IAAAqD,EAAA,GAEA,OAAArD,EAAA,WAEA,IAAAP,EAAAh/D,KAAAw2C,EAAA9pE,KAAA,CACA,MAAAozF,QAAAtpB,EAAA,OACA,CACA,GAAAA,IAAA,MACA,MAAAspB,QAAAtpB,EAAA,eACA,CAEA,IAAAx4E,EACA,IAAA2/F,EAAAnnB,EAEA+oB,EAAA,UAEA,GAAAD,MAAA,IACAthG,EAAA2kG,iBAAA30F,EAAAnC,EAAA,IAAA2qE,QACA,GAAA8oB,MAAA,KAIAthG,EAAA,GACA,IAAA6kG,EACA,GAAAtD,EAAA,WACA,GACAsD,EAAA3C,UAAA,MACAliG,EAAArD,KAAAkoG,EACA,OAAAtD,EAAA,WACAA,EAAA,KACA,UAAAsD,IAAA,aACAhS,UAAA7iF,EAAAnC,EAAA,IAAA2qE,EAAAqsB,EACA,CACA,CACA,MACA7kG,EAAAkiG,UAAA,MACArP,UAAA7iF,EAAAnC,EAAA,IAAA2qE,EAAAx4E,EACA,CAEA,IAAA8kG,EAAAF,EAAAjF,GAEA,GAAAmF,EACA9kG,EAAA,GAAAsF,OAAAw/F,GAAAx/F,OAAAtF,GAEA4kG,EAAAjF,GAAA3/F,EAGAuhG,EAAA,UACAA,EAAA,SACA,CAEA,OAAAqD,CACA,CAEA,IAAAG,EAAA7C,UAAA,MACArP,UAAA7iF,EAAAnC,EAAAk3F,GACA,OAAAA,CAEA,CAEA,SAAAlS,UAAA7iF,EAAAnC,EAAA7N,GACA,GAAAgQ,EAAA6iF,UACA7iF,EAAA6iF,UAAAhlF,EAAA7N,EACA,CAEA,SAAA0/F,gBAAA1vF,EAAAnC,EAAA7N,EAAA2/F,GACA,GAAA3vF,EAAA0vF,gBACA1vF,EAAA0vF,gBAAA7xF,EAAA7N,EAAA2/F,EACA,CAEA,SAAAmE,mBAAA9zF,GACA,GAAAuxF,EAAA,WACA,GACAuB,YAAA9yF,EAAA,SACA,OAAAuxF,EAAA,WACAA,EAAA,IACA,CACA,OAAAvxF,CACA,CAEA,SAAAizF,aAAAjzF,EAAAwoE,GAGA,IAAAwoB,EAAAh/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,gBAEA,IAAAx3C,EAAA,IAAAowB,EAAAonB,GACA2qB,QAAAniE,GAAA,SAAAgkE,mBAAAxsB,GACA,GAAAqqB,YAAA7hE,EAAAw3C,GACA,OAGA,GAAAA,IAAA,MACAysB,YAAAjkE,EAAAw3C,QAEA,MAAAspB,QAAAtpB,EACA,IACAxoE,EAAAxL,IAAAw8B,EACA,CAEA,SAAAikE,YAAAj1F,EAAAwoE,GAGA,IAAA0sB,EAAA1D,IAEA,IAAAn1E,EAAAmsD,EAGA,IAAAwoB,EAAAh/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,QAEA,IAAA3qE,EAAA2qE,EACA7lB,EAAAx+C,EACA0+C,EAAA5hD,EAEAswF,EAAA,KACA,GAAAA,EAAA,eACAptF,EAAA,KAGA,IAAA8sF,EAAAj/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,GAEA7lB,EAAA6lB,EACA+oB,EAAA,KAAAA,EAAA,WAAAA,EAAA,KACA,GAAAA,EAAA,eACAtwF,EAAA,KAGA,IAAAgwF,EAAAj/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,GAEA3lB,EAAA2lB,EACA+oB,EAAA,KAEA,IAAAv0F,EAAA,IAAAklF,EAAArkF,EAAAwe,EAAAsmC,EAAAE,EAAA1+C,EAAAlD,GACAjE,EAAAkuF,QAAAgK,EACA/B,QAAAn2F,GAAA,SAAAm4F,kBAAA3sB,GAGA,GAAAA,IAAA,UACAsqB,YAAA91F,EAAAwrE,GACA+oB,EAAA,IACA,MACA,MAAAO,QAAAtpB,EAEA,IACAxoE,EAAAxL,IAAAwI,EACA,CAEA,SAAAk2F,eAAAlzF,EAAAwoE,GAGA,IAAAyoB,EAAAj/D,KAAAw2C,EAAA9pE,KACA,MAAAozF,QAAAtpB,EAAA,aAEA,IAAA4sB,EAAA5sB,EACA2qB,QAAA,eAAAkC,qBAAA7sB,GACA,OAAAA,GAEA,eACA,eACAirB,WAAAzzF,EAAAwoE,EAAA4sB,GACA,MAEA,eAEA,GAAAxD,EAAA,CACA6B,WAAAzzF,EAAA,kBAAAo1F,EACA,MACA3B,WAAAzzF,EAAA,WAAAo1F,EACA,CACA,MAEA,QAEA,IAAAxD,IAAAX,EAAAj/D,KAAAw2C,GACA,MAAAspB,QAAAtpB,GACA77E,EAAA67E,GACAirB,WAAAzzF,EAAA,WAAAo1F,GACA,MAEA,GACA,CAEA,IAAA5sB,EACA,OAAAA,EAAA9pE,OAAA,MACA,OAAA8pE,GAEA,cAGA,IAAA53D,EACA,MAAAkhF,QAAAtpB,GAEAiqB,eACA,MAEA,aAGA,IAAA7hF,EACA,MAAAkhF,QAAAtpB,GAEAkqB,cACA,MAEA,aAGA,IAAA9hF,EACA,MAAAkhF,QAAAtpB,GAEAoqB,cACA,MAEA,aAEAE,YAAA/D,EAAAvmB,GACA+oB,EAAA,KACA,MAEA,QAGA,GAAAsB,YAAA9D,EAAAvmB,GAAA,CACA53D,EAAA,MACA,QACA,CAGA,MAAAkhF,QAAAtpB,GAEA,CAEAhvC,MAAArmB,SAAA,KACA,OACAmiF,QAAA7D,EACAC,UACAC,cACAnP,SACA5+B,OAEA,C,iBC11BAn4D,EAAAC,QAAA0hG,OAEA,IAAAx5D,EAAApoC,EAAA,MAEA,IAAA6hG,EAEA,IAAAkI,EAAA3hE,EAAA2hE,SACAnoC,EAAAx5B,EAAAw5B,KAGA,SAAAooC,gBAAAxH,EAAAyH,GACA,OAAA7jC,WAAA,uBAAAo8B,EAAAjkC,IAAA,OAAA0rC,GAAA,SAAAzH,EAAA1gC,IACA,CAQA,SAAA8/B,OAAAzmC,GAMAv1D,KAAA04D,IAAAnD,EAMAv1D,KAAA24D,IAAA,EAMA34D,KAAAk8D,IAAA3G,EAAA35D,MACA,CAEA,IAAA0oG,SAAArsC,aAAA,YACA,SAAAssC,mBAAAhvC,GACA,GAAAA,aAAA0C,YAAAv6D,MAAAwzB,QAAAqkC,GACA,WAAAymC,OAAAzmC,GACA,MAAAvyD,MAAA,iBACA,EAEA,SAAAshG,aAAA/uC,GACA,GAAA73D,MAAAwzB,QAAAqkC,GACA,WAAAymC,OAAAzmC,GACA,MAAAvyD,MAAA,iBACA,EAEA,IAAAzI,EAAA,SAAAA,SACA,OAAAioC,EAAA/5B,OACA,SAAA+7F,oBAAAjvC,GACA,OAAAymC,OAAAzhG,OAAA,SAAAkqG,cAAAlvC,GACA,OAAA/yB,EAAA/5B,OAAA24B,SAAAm0B,GACA,IAAA0mC,EAAA1mC,GAEA+uC,EAAA/uC,EACA,GAAAA,EACA,EAEA+uC,CACA,EASAtI,OAAAzhG,WAEAyhG,OAAA/+F,UAAAm2E,OAAA5wC,EAAA9kC,MAAAT,UAAAk3C,UAAA3R,EAAA9kC,MAAAT,UAAAU,MAOAq+F,OAAA/+F,UAAAynG,OAAA,SAAAC,oBACA,IAAA/lG,EAAA,WACA,gBAAAgmG,cACAhmG,GAAAoB,KAAA04D,IAAA14D,KAAA24D,KAAA,YAAA34D,KAAA04D,IAAA14D,KAAA24D,OAAA,WAAA/5D,EACAA,MAAAoB,KAAA04D,IAAA14D,KAAA24D,KAAA,gBAAA34D,KAAA04D,IAAA14D,KAAA24D,OAAA,WAAA/5D,EACAA,MAAAoB,KAAA04D,IAAA14D,KAAA24D,KAAA,iBAAA34D,KAAA04D,IAAA14D,KAAA24D,OAAA,WAAA/5D,EACAA,MAAAoB,KAAA04D,IAAA14D,KAAA24D,KAAA,iBAAA34D,KAAA04D,IAAA14D,KAAA24D,OAAA,WAAA/5D,EACAA,MAAAoB,KAAA04D,IAAA14D,KAAA24D,KAAA,gBAAA34D,KAAA04D,IAAA14D,KAAA24D,OAAA,WAAA/5D,EAGA,IAAAoB,KAAA24D,KAAA,GAAA34D,KAAAk8D,IAAA,CACAl8D,KAAA24D,IAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAA,GACA,CACA,OAAApB,CACA,CACA,CAhBA,GAsBAo9F,OAAA/+F,UAAA4nG,MAAA,SAAAC,aACA,OAAA9kG,KAAA0kG,SAAA,CACA,EAMA1I,OAAA/+F,UAAA8nG,OAAA,SAAAC,cACA,IAAApmG,EAAAoB,KAAA0kG,SACA,OAAA9lG,IAAA,IAAAA,EAAA,IACA,EAIA,SAAAqmG,iBAEA,IAAAC,EAAA,IAAAf,EAAA,KACA,IAAAxoG,EAAA,EACA,GAAAqE,KAAAk8D,IAAAl8D,KAAA24D,IAAA,GACA,KAAAh9D,EAAA,IAAAA,EAAA,CAEAupG,EAAAjqC,IAAAiqC,EAAAjqC,IAAAj7D,KAAA04D,IAAA14D,KAAA24D,KAAA,MAAAh9D,EAAA,OACA,GAAAqE,KAAA04D,IAAA14D,KAAA24D,OAAA,IACA,OAAAusC,CACA,CAEAA,EAAAjqC,IAAAiqC,EAAAjqC,IAAAj7D,KAAA04D,IAAA14D,KAAA24D,KAAA,cACAusC,EAAAhqC,IAAAgqC,EAAAhqC,IAAAl7D,KAAA04D,IAAA14D,KAAA24D,KAAA,aACA,GAAA34D,KAAA04D,IAAA14D,KAAA24D,OAAA,IACA,OAAAusC,EACAvpG,EAAA,CACA,MACA,KAAAA,EAAA,IAAAA,EAAA,CAEA,GAAAqE,KAAA24D,KAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,MAEAklG,EAAAjqC,IAAAiqC,EAAAjqC,IAAAj7D,KAAA04D,IAAA14D,KAAA24D,KAAA,MAAAh9D,EAAA,OACA,GAAAqE,KAAA04D,IAAA14D,KAAA24D,OAAA,IACA,OAAAusC,CACA,CAEAA,EAAAjqC,IAAAiqC,EAAAjqC,IAAAj7D,KAAA04D,IAAA14D,KAAA24D,OAAA,MAAAh9D,EAAA,OACA,OAAAupG,CACA,CACA,GAAAllG,KAAAk8D,IAAAl8D,KAAA24D,IAAA,GACA,KAAAh9D,EAAA,IAAAA,EAAA,CAEAupG,EAAAhqC,IAAAgqC,EAAAhqC,IAAAl7D,KAAA04D,IAAA14D,KAAA24D,KAAA,MAAAh9D,EAAA,SACA,GAAAqE,KAAA04D,IAAA14D,KAAA24D,OAAA,IACA,OAAAusC,CACA,CACA,MACA,KAAAvpG,EAAA,IAAAA,EAAA,CAEA,GAAAqE,KAAA24D,KAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,MAEAklG,EAAAhqC,IAAAgqC,EAAAhqC,IAAAl7D,KAAA04D,IAAA14D,KAAA24D,KAAA,MAAAh9D,EAAA,SACA,GAAAqE,KAAA04D,IAAA14D,KAAA24D,OAAA,IACA,OAAAusC,CACA,CACA,CAEA,MAAAliG,MAAA,0BACA,CA6BAg5F,OAAA/+F,UAAA0sF,KAAA,SAAAwb,YACA,OAAAnlG,KAAA0kG,WAAA,CACA,EAEA,SAAAU,gBAAA1sC,EAAAx4C,GACA,OAAAw4C,EAAAx4C,EAAA,GACAw4C,EAAAx4C,EAAA,MACAw4C,EAAAx4C,EAAA,OACAw4C,EAAAx4C,EAAA,WACA,CAMA87E,OAAA/+F,UAAAooG,QAAA,SAAAC,eAGA,GAAAtlG,KAAA24D,IAAA,EAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAA,GAEA,OAAAolG,gBAAAplG,KAAA04D,IAAA14D,KAAA24D,KAAA,EACA,EAMAqjC,OAAA/+F,UAAAsoG,SAAA,SAAAC,gBAGA,GAAAxlG,KAAA24D,IAAA,EAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAA,GAEA,OAAAolG,gBAAAplG,KAAA04D,IAAA14D,KAAA24D,KAAA,IACA,EAIA,SAAA8sC,cAGA,GAAAzlG,KAAA24D,IAAA,EAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAA,GAEA,WAAAmkG,EAAAiB,gBAAAplG,KAAA04D,IAAA14D,KAAA24D,KAAA,GAAAysC,gBAAAplG,KAAA04D,IAAA14D,KAAA24D,KAAA,GACA,CAuBAqjC,OAAA/+F,UAAAyoG,MAAA,SAAAC,aAGA,GAAA3lG,KAAA24D,IAAA,EAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAA,GAEA,IAAApB,EAAA4jC,EAAAkjE,MAAAzsC,YAAAj5D,KAAA04D,IAAA14D,KAAA24D,KACA34D,KAAA24D,KAAA,EACA,OAAA/5D,CACA,EAOAo9F,OAAA/+F,UAAA2oG,OAAA,SAAAC,cAGA,GAAA7lG,KAAA24D,IAAA,EAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAA,GAEA,IAAApB,EAAA4jC,EAAAkjE,MAAA/qC,aAAA36D,KAAA04D,IAAA14D,KAAA24D,KACA34D,KAAA24D,KAAA,EACA,OAAA/5D,CACA,EAMAo9F,OAAA/+F,UAAAwyD,MAAA,SAAAq2C,aACA,IAAAlqG,EAAAoE,KAAA0kG,SACA33F,EAAA/M,KAAA24D,IACAz4C,EAAAlgB,KAAA24D,IAAA/8D,EAGA,GAAAskB,EAAAlgB,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAApE,GAEAoE,KAAA24D,KAAA/8D,EACA,GAAA8B,MAAAwzB,QAAAlxB,KAAA04D,KACA,OAAA14D,KAAA04D,IAAA/6D,MAAAoP,EAAAmT,GAEA,GAAAnT,IAAAmT,EAAA,CACA,IAAA6lF,EAAAvjE,EAAA/5B,OACA,OAAAs9F,EACAA,EAAAhhD,MAAA,GACA,IAAA/kD,KAAA04D,IAAA54D,YAAA,EACA,CACA,OAAAE,KAAAozE,OAAAh2E,KAAA4C,KAAA04D,IAAA3rD,EAAAmT,EACA,EAMA87E,OAAA/+F,UAAAm4D,OAAA,SAAA4wC,cACA,IAAAv2C,EAAAzvD,KAAAyvD,QACA,OAAAuM,EAAAG,KAAA1M,EAAA,EAAAA,EAAA7zD,OACA,EAOAogG,OAAA/+F,UAAAkjG,KAAA,SAAAA,KAAAvkG,GACA,UAAAA,IAAA,UAEA,GAAAoE,KAAA24D,IAAA/8D,EAAAoE,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KAAApE,GACAoE,KAAA24D,KAAA/8D,CACA,MACA,GAEA,GAAAoE,KAAA24D,KAAA34D,KAAAk8D,IACA,MAAAkoC,gBAAApkG,KACA,OAAAA,KAAA04D,IAAA14D,KAAA24D,OAAA,IACA,CACA,OAAA34D,IACA,EAOAg8F,OAAA/+F,UAAAgpG,SAAA,SAAAvM,GACA,OAAAA,GACA,OACA15F,KAAAmgG,OACA,MACA,OACAngG,KAAAmgG,KAAA,GACA,MACA,OACAngG,KAAAmgG,KAAAngG,KAAA0kG,UACA,MACA,OACA,OAAAhL,EAAA15F,KAAA0kG,SAAA,QACA1kG,KAAAimG,SAAAvM,EACA,CACA,MACA,OACA15F,KAAAmgG,KAAA,GACA,MAGA,QACA,MAAAn9F,MAAA,qBAAA02F,EAAA,cAAA15F,KAAA24D,KAEA,OAAA34D,IACA,EAEAg8F,OAAAP,WAAA,SAAAyK,GACAjK,EAAAiK,EACAlK,OAAAzhG,WACA0hG,EAAAR,aAEA,IAAAjhG,EAAAgoC,EAAA4sB,KAAA,oBACA5sB,EAAAz+B,MAAAi4F,OAAA/+F,UAAA,CAEAkpG,MAAA,SAAAC,aACA,OAAAnB,eAAA7nG,KAAA4C,MAAAxF,GAAA,MACA,EAEA6rG,OAAA,SAAAC,cACA,OAAArB,eAAA7nG,KAAA4C,MAAAxF,GAAA,KACA,EAEA+rG,OAAA,SAAAC,cACA,OAAAvB,eAAA7nG,KAAA4C,MAAAymG,WAAAjsG,GAAA,MACA,EAEAksG,QAAA,SAAAC,eACA,OAAAlB,YAAAroG,KAAA4C,MAAAxF,GAAA,KACA,EAEAosG,SAAA,SAAAC,gBACA,OAAApB,YAAAroG,KAAA4C,MAAAxF,GAAA,MACA,GAGA,C,gBC9ZAH,EAAAC,QAAA2hG,aAGA,IAAAD,EAAA5hG,EAAA,OACA6hG,aAAAh/F,UAAAD,OAAAzC,OAAAyhG,EAAA/+F,YAAA6C,YAAAm8F,aAEA,IAAAz5D,EAAApoC,EAAA,MASA,SAAA6hG,aAAA1mC,GACAymC,EAAA5+F,KAAA4C,KAAAu1D,EAOA,CAEA0mC,aAAAR,WAAA,WAEA,GAAAj5D,EAAA/5B,OACAwzF,aAAAh/F,UAAAm2E,OAAA5wC,EAAA/5B,OAAAxL,UAAAU,KACA,EAMAs+F,aAAAh/F,UAAAm4D,OAAA,SAAA0xC,qBACA,IAAA5qC,EAAAl8D,KAAA0kG,SACA,OAAA1kG,KAAA04D,IAAAquC,UACA/mG,KAAA04D,IAAAquC,UAAA/mG,KAAA24D,IAAA34D,KAAA24D,IAAA/4D,KAAAF,IAAAM,KAAA24D,IAAAuD,EAAAl8D,KAAAk8D,MACAl8D,KAAA04D,IAAAx5C,SAAA,QAAAlf,KAAA24D,IAAA34D,KAAA24D,IAAA/4D,KAAAF,IAAAM,KAAA24D,IAAAuD,EAAAl8D,KAAAk8D,KACA,EASA+/B,aAAAR,Y,iBCjDAphG,EAAAC,QAAA+1D,KAGA,IAAAD,EAAAh2D,EAAA,QACAi2D,KAAApzD,UAAAD,OAAAzC,OAAA61D,EAAAnzD,YAAA6C,YAAAuwD,MAAAwpC,UAAA,OAEA,IAAAlJ,EAAAv2F,EAAA,MACA81D,EAAA91D,EAAA,MACAy2F,EAAAz2F,EAAA,MACAooC,EAAApoC,EAAA,MAEA,IAAA61D,EACA7nB,EACAssB,EASA,SAAArE,KAAAvzD,GACAszD,EAAAhzD,KAAA4C,KAAA,GAAAlD,GAMAkD,KAAAgnG,SAAA,GAMAhnG,KAAAkxF,MAAA,EACA,CAQA7gC,KAAAgD,SAAA,SAAAA,SAAAzD,EAAA4C,GACA,IAAAA,EACAA,EAAA,IAAAnC,KACA,GAAAT,EAAA9yD,QACA01D,EAAA3wB,WAAA+tB,EAAA9yD,SACA,OAAA01D,EAAAyqC,QAAArtC,EAAAa,OACA,EAUAJ,KAAApzD,UAAA62D,YAAAtxB,EAAA9zB,KAAA3S,QAUAs0D,KAAApzD,UAAAm6D,MAAA50B,EAAA40B,MAIA,SAAA6vC,OAAA,CASA52C,KAAApzD,UAAA6kB,KAAA,SAAAA,KAAAC,EAAAjlB,EAAAiD,GACA,UAAAjD,IAAA,YACAiD,EAAAjD,EACAA,EAAAwH,SACA,CACA,IAAAyvE,EAAA/zE,KACA,IAAAD,EACA,OAAAyiC,EAAAqyB,UAAA/yC,KAAAiyD,EAAAhyD,EAAAjlB,GAEA,IAAAoqG,EAAAnnG,IAAAknG,KAGA,SAAA71C,OAAAtuD,EAAA0vD,GAEA,IAAAzyD,EACA,OACA,GAAAmnG,EACA,MAAApkG,EACA,IAAA2E,EAAA1H,EACAA,EAAA,KACA0H,EAAA3E,EAAA0vD,EACA,CAGA,SAAA20C,mBAAAplF,GACA,IAAAy9C,EAAAz9C,EAAAqlF,YAAA,oBACA,GAAA5nC,GAAA,GACA,IAAA6nC,EAAAtlF,EAAA8H,UAAA21C,GACA,GAAA6nC,KAAA3yC,EAAA,OAAA2yC,CACA,CACA,WACA,CAGA,SAAAxsG,QAAAknB,EAAAq0C,GACA,IACA,GAAA5zB,EAAA43D,SAAAhkC,MAAA52B,OAAA,SACA42B,EAAA1sC,KAAA0e,MAAAguB,GACA,IAAA5zB,EAAA43D,SAAAhkC,GACA2d,EAAAlyC,WAAAu0B,EAAAt5D,SAAAmgG,QAAA7mC,EAAA3F,YACA,CACAroB,EAAArmB,WACA,IAAAulF,EAAAl/D,EAAAguB,EAAA2d,EAAAj3E,GACAV,EACAT,EAAA,EACA,GAAA2rG,EAAAhH,QACA,KAAA3kG,EAAA2rG,EAAAhH,QAAA1kG,SAAAD,EACA,GAAAS,EAAA+qG,mBAAAG,EAAAhH,QAAA3kG,KAAAo4E,EAAAjgB,YAAA/xC,EAAAulF,EAAAhH,QAAA3kG,IACAy7D,MAAAh7D,GACA,GAAAkrG,EAAA/G,YACA,IAAA5kG,EAAA,EAAAA,EAAA2rG,EAAA/G,YAAA3kG,SAAAD,EACA,GAAAS,EAAA+qG,mBAAAG,EAAA/G,YAAA5kG,KAAAo4E,EAAAjgB,YAAA/xC,EAAAulF,EAAA/G,YAAA5kG,IACAy7D,MAAAh7D,EAAA,KACA,CACA,OAAA0G,GACAsuD,OAAAtuD,EACA,CACA,IAAAokG,IAAAK,EACAn2C,OAAA,KAAA2iB,EACA,CAGA,SAAA3c,MAAAr1C,EAAAylF,GACAzlF,EAAAolF,mBAAAplF,MAGA,GAAAgyD,EAAAmd,MAAA51F,QAAAymB,IAAA,EACA,OACAgyD,EAAAmd,MAAA31F,KAAAwmB,GAGA,GAAAA,KAAA2yC,EAAA,CACA,GAAAwyC,EACArsG,QAAAknB,EAAA2yC,EAAA3yC,QACA,GACAwlF,EACA3mG,YAAA,aACA2mG,EACA1sG,QAAAknB,EAAA2yC,EAAA3yC,GACA,GACA,CACA,MACA,CAGA,GAAAmlF,EAAA,CACA,IAAA9wC,EACA,IACAA,EAAA5zB,EAAA8oB,GAAAK,aAAA5pC,GAAA7C,SAAA,OACA,OAAApc,GACA,IAAA0kG,EACAp2C,OAAAtuD,GACA,MACA,CACAjI,QAAAknB,EAAAq0C,EACA,QACAmxC,EACAxzB,EAAA3c,MAAAr1C,GAAA,SAAAjf,EAAAszD,KACAmxC,EAEA,IAAAxnG,EACA,OACA,GAAA+C,EAAA,CAEA,IAAA0kG,EACAp2C,OAAAtuD,QACA,IAAAykG,EACAn2C,OAAA,KAAA2iB,GACA,MACA,CACAl5E,QAAAknB,EAAAq0C,EACA,GACA,CACA,CACA,IAAAmxC,EAAA,EAIA,GAAA/kE,EAAA43D,SAAAr4E,GACAA,EAAA,CAAAA,GACA,QAAApmB,EAAA,EAAAS,EAAAT,EAAAomB,EAAAnmB,SAAAD,EACA,GAAAS,EAAA23E,EAAAjgB,YAAA,GAAA/xC,EAAApmB,IACAy7D,MAAAh7D,GAEA,GAAA8qG,EACA,OAAAnzB,EACA,IAAAwzB,EACAn2C,OAAA,KAAA2iB,GACA,OAAAzvE,SACA,EA+BA+rD,KAAApzD,UAAAk2D,SAAA,SAAAA,SAAApxC,EAAAjlB,GACA,IAAA0lC,EAAAilE,OACA,MAAAzkG,MAAA,iBACA,OAAAhD,KAAA8hB,KAAAC,EAAAjlB,EAAAmqG,KACA,EAKA52C,KAAApzD,UAAAw1D,WAAA,SAAAA,aACA,GAAAzyD,KAAAgnG,SAAAprG,OACA,MAAAoH,MAAA,4BAAAhD,KAAAgnG,SAAA/qG,KAAA,SAAA8nD,GACA,iBAAAA,EAAAwwC,OAAA,QAAAxwC,EAAAn1C,OAAAgjF,QACA,IAAAjgF,KAAA,OACA,OAAAy+C,EAAAnzD,UAAAw1D,WAAAr1D,KAAA4C,KACA,EAGA,IAAA0nG,EAAA,SAUA,SAAAC,mBAAAn1C,EAAAzO,GACA,IAAA6jD,EAAA7jD,EAAAn1C,OAAAo0B,OAAA+gB,EAAAwwC,QACA,GAAAqT,EAAA,CACA,IAAAC,EAAA,IAAAlX,EAAA5sC,EAAA6tC,SAAA7tC,EAAAn6B,GAAAm6B,EAAA94B,KAAA84B,EAAAswC,KAAA/vF,UAAAy/C,EAAAjnD,SAEA,GAAA8qG,EAAA7wF,IAAA8wF,EAAAp7F,MAAA,CACA,WACA,CACAo7F,EAAAnN,eAAA32C,EACAA,EAAAuwC,eAAAuT,EACAD,EAAAxkG,IAAAykG,GACA,WACA,CACA,YACA,CAQAx3C,KAAApzD,UAAAmhG,WAAA,SAAAA,WAAAlqB,GACA,GAAAA,aAAAyc,EAAA,CAEA,GAAAzc,EAAAqgB,SAAAjwF,YAAA4vE,EAAAogB,eACA,IAAAqT,mBAAA3nG,KAAAk0E,GACAl0E,KAAAgnG,SAAAzrG,KAAA24E,EAEA,SAAAA,aAAAhkB,EAAA,CAEA,GAAAw3C,EAAA9mE,KAAAszC,EAAAznE,MACAynE,EAAAtlE,OAAAslE,EAAAznE,MAAAynE,EAAA73E,MAEA,WAAA63E,aAAA2c,GAAA,CAEA,GAAA3c,aAAAjkB,EACA,QAAAt0D,EAAA,EAAAA,EAAAqE,KAAAgnG,SAAAprG,QACA,GAAA+rG,mBAAA3nG,UAAAgnG,SAAArrG,IACAqE,KAAAgnG,SAAAx8E,OAAA7uB,EAAA,SAEAA,EACA,QAAA46B,EAAA,EAAAA,EAAA29C,EAAA2d,YAAAj2F,SAAA26B,EACAv2B,KAAAo+F,WAAAlqB,EAAA4d,aAAAv7D,IACA,GAAAmxE,EAAA9mE,KAAAszC,EAAAznE,MACAynE,EAAAtlE,OAAAslE,EAAAznE,MAAAynE,CACA,CAKA,EAQA7jB,KAAApzD,UAAAohG,cAAA,SAAAA,cAAAnqB,GACA,GAAAA,aAAAyc,EAAA,CAEA,GAAAzc,EAAAqgB,SAAAjwF,UAAA,CACA,GAAA4vE,EAAAogB,eAAA,CACApgB,EAAAogB,eAAA1lF,OAAAgI,OAAAs9D,EAAAogB,gBACApgB,EAAAogB,eAAA,IACA,MACA,IAAAjwF,EAAArE,KAAAgnG,SAAA1rG,QAAA44E,GAEA,GAAA7vE,GAAA,EACArE,KAAAgnG,SAAAx8E,OAAAnmB,EAAA,EACA,CACA,CAEA,SAAA6vE,aAAAhkB,EAAA,CAEA,GAAAw3C,EAAA9mE,KAAAszC,EAAAznE,aACAynE,EAAAtlE,OAAAslE,EAAAznE,KAEA,SAAAynE,aAAA9jB,EAAA,CAEA,QAAAz0D,EAAA,EAAAA,EAAAu4E,EAAA2d,YAAAj2F,SAAAD,EACAqE,KAAAq+F,cAAAnqB,EAAA4d,aAAAn2F,IAEA,GAAA+rG,EAAA9mE,KAAAszC,EAAAznE,aACAynE,EAAAtlE,OAAAslE,EAAAznE,KAEA,CACA,EAGA4jD,KAAAorC,WAAA,SAAAC,EAAAoM,EAAAC,GACA93C,EAAAyrC,EACAtzD,EAAA0/D,EACApzC,EAAAqzC,CACA,C,SC9WA1tG,EAAAC,QAAA,E,iBCKA,IAAA4hG,EAAA5hG,EA6BA4hG,EAAAlsC,QAAA51D,EAAA,K,iBClCAC,EAAAC,QAAA01D,QAEA,IAAAxtB,EAAApoC,EAAA,OAGA41D,QAAA/yD,UAAAD,OAAAzC,OAAAioC,EAAA/7B,aAAAxJ,YAAA6C,YAAAkwD,QAmCA,SAAAA,QAAAg4C,EAAAC,EAAAC,GAEA,UAAAF,IAAA,WACA,MAAAt/F,UAAA,8BAEA85B,EAAA/7B,aAAArJ,KAAA4C,MAMAA,KAAAgoG,UAMAhoG,KAAAioG,iBAAA1rG,QAAA0rG,GAMAjoG,KAAAkoG,kBAAA3rG,QAAA2rG,EACA,CAaAl4C,QAAA/yD,UAAAkrG,QAAA,SAAAA,QAAAv8F,EAAAw8F,EAAAC,EAAAjpF,EAAArf,GAEA,IAAAqf,EACA,MAAA1W,UAAA,6BAEA,IAAAqrE,EAAA/zE,KACA,IAAAD,EACA,OAAAyiC,EAAAqyB,UAAAszC,QAAAp0B,EAAAnoE,EAAAw8F,EAAAC,EAAAjpF,GAEA,IAAA20D,EAAAi0B,QAAA,CACApnG,YAAA,WAAAb,EAAAiD,MAAA,uBACA,OAAAsB,SACA,CAEA,IACA,OAAAyvE,EAAAi0B,QACAp8F,EACAw8F,EAAAr0B,EAAAk0B,iBAAA,4BAAA7oF,GAAAgyC,UACA,SAAAk3C,YAAAxlG,EAAAoyC,GAEA,GAAApyC,EAAA,CACAixE,EAAAzgE,KAAA,QAAAxQ,EAAA8I,GACA,OAAA7L,EAAA+C,EACA,CAEA,GAAAoyC,IAAA,MACA6+B,EAAA7zD,IAAA,MACA,OAAA5b,SACA,CAEA,KAAA4wC,aAAAmzD,GAAA,CACA,IACAnzD,EAAAmzD,EAAAt0B,EAAAm0B,kBAAA,4BAAAhzD,EACA,OAAApyC,GACAixE,EAAAzgE,KAAA,QAAAxQ,EAAA8I,GACA,OAAA7L,EAAA+C,EACA,CACA,CAEAixE,EAAAzgE,KAAA,OAAA4hC,EAAAtpC,GACA,OAAA7L,EAAA,KAAAm1C,EACA,GAEA,OAAApyC,GACAixE,EAAAzgE,KAAA,QAAAxQ,EAAA8I,GACAhL,YAAA,WAAAb,EAAA+C,EAAA,MACA,OAAAwB,SACA,CACA,EAOA0rD,QAAA/yD,UAAAijB,IAAA,SAAAA,IAAAqoF,GACA,GAAAvoG,KAAAgoG,QAAA,CACA,IAAAO,EACAvoG,KAAAgoG,QAAA,gBACAhoG,KAAAgoG,QAAA,KACAhoG,KAAAsT,KAAA,OAAA4jD,KACA,CACA,OAAAl3D,IACA,C,iBC5IA3F,EAAAC,QAAA01D,QAGA,IAAAI,EAAAh2D,EAAA,QACA41D,QAAA/yD,UAAAD,OAAAzC,OAAA61D,EAAAnzD,YAAA6C,YAAAkwD,SAAA6pC,UAAA,UAEA,IAAA/I,EAAA12F,EAAA,MACAooC,EAAApoC,EAAA,MACA8hG,EAAA9hG,EAAA,MAWA,SAAA41D,QAAAvjD,EAAA3P,GACAszD,EAAAhzD,KAAA4C,KAAAyM,EAAA3P,GAMAkD,KAAAk/B,QAAA,GAOAl/B,KAAAk1F,cAAA,IACA,CAgBAllC,QAAAqD,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,IAAAhwB,EAAA,IAAAowB,QAAAvjD,EAAAmjD,EAAA9yD,SAEA,GAAA8yD,EAAA1wB,QACA,QAAAo+D,EAAAtgG,OAAAmG,KAAAysD,EAAA1wB,SAAAvjC,EAAA,EAAAA,EAAA2hG,EAAA1hG,SAAAD,EACAikC,EAAAx8B,IAAA0tF,EAAAz9B,SAAAiqC,EAAA3hG,GAAAi0D,EAAA1wB,QAAAo+D,EAAA3hG,MACA,GAAAi0D,EAAAa,OACA7wB,EAAAq9D,QAAArtC,EAAAa,QACA7wB,EAAAk6D,QAAAlqC,EAAAkqC,QACA,OAAAl6D,CACA,EAOAowB,QAAA/yD,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAsO,EAAAp4C,EAAAnzD,UAAA+kC,OAAA5kC,KAAA4C,KAAAk6F,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,UAAAy3C,KAAA1rG,SAAAwH,UACA,UAAA8rD,EAAA8sC,YAAAl9F,KAAA8xD,aAAAooC,IAAA,GACA,SAAAsO,KAAA/3C,QAAAnsD,UACA,UAAA61F,EAAAn6F,KAAA85F,QAAAx1F,WAEA,EAQAtH,OAAA2B,eAAAqxD,QAAA/yD,UAAA,gBACA8Z,IAAA,WACA,OAAA/W,KAAAk1F,gBAAAl1F,KAAAk1F,cAAA1yD,EAAA46D,QAAAp9F,KAAAk/B,SACA,IAGA,SAAAi+D,WAAAv9D,GACAA,EAAAs1D,cAAA,KACA,OAAAt1D,CACA,CAKAowB,QAAA/yD,UAAA8Z,IAAA,SAAAA,IAAAtK,GACA,OAAAzM,KAAAk/B,QAAAzyB,IACA2jD,EAAAnzD,UAAA8Z,IAAA3Z,KAAA4C,KAAAyM,EACA,EAKAujD,QAAA/yD,UAAAw1D,WAAA,SAAAA,aACA,IAAAvzB,EAAAl/B,KAAA8xD,aACA,QAAAn2D,EAAA,EAAAA,EAAAujC,EAAAtjC,SAAAD,EACAujC,EAAAvjC,GAAAI,UACA,OAAAq0D,EAAAnzD,UAAAlB,QAAAqB,KAAA4C,KACA,EAKAgwD,QAAA/yD,UAAAmG,IAAA,SAAAA,IAAA8wE,GAGA,GAAAl0E,KAAA+W,IAAAm9D,EAAAznE,MACA,MAAAzJ,MAAA,mBAAAkxE,EAAAznE,KAAA,QAAAzM,MAEA,GAAAk0E,aAAA4c,EAAA,CACA9wF,KAAAk/B,QAAAg1C,EAAAznE,MAAAynE,EACAA,EAAAtlE,OAAA5O,KACA,OAAAm9F,WAAAn9F,KACA,CACA,OAAAowD,EAAAnzD,UAAAmG,IAAAhG,KAAA4C,KAAAk0E,EACA,EAKAlkB,QAAA/yD,UAAA2Z,OAAA,SAAAA,OAAAs9D,GACA,GAAAA,aAAA4c,EAAA,CAGA,GAAA9wF,KAAAk/B,QAAAg1C,EAAAznE,QAAAynE,EACA,MAAAlxE,MAAAkxE,EAAA,uBAAAl0E,aAEAA,KAAAk/B,QAAAg1C,EAAAznE,MACAynE,EAAAtlE,OAAA,KACA,OAAAuuF,WAAAn9F,KACA,CACA,OAAAowD,EAAAnzD,UAAA2Z,OAAAxZ,KAAA4C,KAAAk0E,EACA,EASAlkB,QAAA/yD,UAAA1C,OAAA,SAAAA,OAAAytG,EAAAC,EAAAC,GACA,IAAAO,EAAA,IAAAvM,EAAAlsC,QAAAg4C,EAAAC,EAAAC,GACA,QAAAvsG,EAAA,EAAAiQ,EAAAjQ,EAAAqE,KAAA8xD,aAAAl2D,SAAAD,EAAA,CACA,IAAA8/B,EAAA+G,EAAAmgE,SAAA/2F,EAAA5L,KAAAk1F,cAAAv5F,IAAAI,UAAA0Q,MAAAmqD,QAAA,eACA6xC,EAAAhtE,GAAA+G,EAAAszB,QAAA,UAAAtzB,EAAAkmE,WAAAjtE,KAAA,IAAAA,EAAA+G,CAAA,iCAAAA,CAAA,CACAmP,EAAA/lC,EACAq6D,EAAAr6D,EAAA4lD,oBAAApb,KACAuuB,EAAA/4D,EAAA8lD,qBAAAtb,MAEA,CACA,OAAAqyD,CACA,C,WCrKApuG,EAAAC,QAAA8hG,SAEA,IAAAuM,EAAA,uBACAC,EAAA,kCACAC,EAAA,kCAEA,IAAAC,EAAA,aACAC,EAAA,aACAC,EAAA,MACAC,EAAA,KACAC,EAAA,UAEA,IAAAC,EAAA,CACA,OACA5kC,EAAA,KACA1yB,EAAA,KACA4jB,EAAA,MAUA,SAAA2zC,SAAAj2B,GACA,OAAAA,EAAAvc,QAAAsyC,GAAA,SAAAryC,EAAAC,GACA,OAAAA,GACA,SACA,OACA,OAAAA,EACA,QACA,OAAAqyC,EAAAryC,IAAA,GAEA,GACA,CAEAslC,SAAAgN,kBA2DA,SAAAhN,SAAAhmC,EAAA6pC,GAEA7pC,IAAAl3C,WAEA,IAAA81C,EAAA,EACAp5D,EAAAw6D,EAAAx6D,OACAglG,EAAA,EACAyI,EAAA,EACAtP,EAAA,GAEA,IAAAxzF,EAAA,GAEA,IAAA+iG,EAAA,KASA,SAAA5I,QAAA6I,GACA,OAAAvmG,MAAA,WAAAumG,EAAA,UAAA3I,EAAA,IACA,CAOA,SAAAC,aACA,IAAA2I,EAAAF,IAAA,IAAAT,EAAAD,EACAY,EAAAC,UAAAz0C,EAAA,EACA,IAAArhB,EAAA61D,EAAA56C,KAAAwH,GACA,IAAAziB,EACA,MAAA+sD,QAAA,UACA1rC,EAAAw0C,EAAAC,UACAluG,KAAA+tG,GACAA,EAAA,KACA,OAAAF,SAAAz1D,EAAA,GACA,CAQA,SAAAnU,OAAAm5B,GACA,OAAAvC,EAAA52B,OAAAm5B,EACA,CAUA,SAAA+wC,WAAA38F,EAAAmT,EAAAypF,GACA,IAAA7P,EAAA,CACA7uE,KAAAmrC,EAAA52B,OAAAzyB,KACA68F,UAAA,MACAC,QAAAF,GAEA,IAAAG,EACA,GAAA7J,EAAA,CACA6J,EAAA,CACA,MACAA,EAAA,CACA,CACA,IAAAC,EAAAh9F,EAAA+8F,EACAl0C,EACA,GACA,KAAAm0C,EAAA,IACAn0C,EAAAQ,EAAA52B,OAAAuqE,MAAA,MACAjQ,EAAA8P,UAAA,KACA,KACA,CACA,OAAAh0C,IAAA,KAAAA,IAAA,MACA,IAAAo0C,EAAA5zC,EACAvsC,UAAA9c,EAAAmT,GACAxO,MAAAs3F,GACA,QAAArtG,EAAA,EAAAA,EAAAquG,EAAApuG,SAAAD,EACAquG,EAAAruG,GAAAquG,EAAAruG,GACAi7D,QAAAqpC,EAAA8I,EAAAD,EAAA,IACA5mE,OACA43D,EAAAh9E,KAAAktF,EACAr4F,KAAA,MACAuwB,OAEA63D,EAAA6G,GAAA9G,EACAuP,EAAAzI,CACA,CAEA,SAAAqJ,yBAAAC,GACA,IAAAC,EAAAC,cAAAF,GAGA,IAAAG,EAAAj0C,EAAAvsC,UAAAqgF,EAAAC,GACA,IAAAG,EAAA,WAAA1pE,KAAAypE,GACA,OAAAC,CACA,CAEA,SAAAF,cAAAG,GAEA,IAAAJ,EAAAI,EACA,MAAAJ,EAAAvuG,GAAA4jC,OAAA2qE,KAAA,MACAA,GACA,CACA,OAAAA,CACA,CAOA,SAAA78F,OACA,GAAA/G,EAAA3K,OAAA,EACA,OAAA2K,EAAAsuC,QACA,GAAAy0D,EACA,OAAAzI,aACA,IAAAjS,EACA4O,EACA9W,EACA35E,EACAy9F,EACAC,EAAAz1C,IAAA,EACA,GACA,GAAAA,IAAAp5D,EACA,YACAgzF,EAAA,MACA,MAAAqa,EAAAroE,KAAA8lD,EAAAlnD,OAAAw1B,IAAA,CACA,GAAA0xB,IAAA,MACA+jB,EAAA,OACA7J,CACA,CACA,KAAA5rC,IAAAp5D,EACA,WACA,CAEA,GAAA4jC,OAAAw1B,KAAA,KACA,KAAAA,IAAAp5D,EAAA,CACA,MAAA8kG,QAAA,UACA,CACA,GAAAlhE,OAAAw1B,KAAA,KACA,IAAAirC,EAAA,CAEAuK,EAAAhrE,OAAAzyB,EAAAioD,EAAA,SAEA,MAAAx1B,SAAAw1B,KAAA,MACA,GAAAA,IAAAp5D,EAAA,CACA,WACA,CACA,GACAo5D,EACA,GAAAw1C,EAAA,CACAd,WAAA38F,EAAAioD,EAAA,EAAAy1C,GAGAA,EAAA,IACA,GACA7J,EACAhS,EAAA,IACA,MAEA7hF,EAAAioD,EACAw1C,EAAA,MACA,GAAAP,yBAAAj1C,EAAA,IACAw1C,EAAA,KACA,GACAx1C,EAAAo1C,cAAAp1C,GACA,GAAAA,IAAAp5D,EAAA,CACA,KACA,CACAo5D,IACA,IAAAy1C,EAAA,CAEA,KACA,CACA,OAAAR,yBAAAj1C,GACA,MACAA,EAAAp1D,KAAAF,IAAA9D,EAAAwuG,cAAAp1C,GAAA,EACA,CACA,GAAAw1C,EAAA,CACAd,WAAA38F,EAAAioD,EAAAy1C,GACAA,EAAA,IACA,CACA7J,IACAhS,EAAA,IACA,CACA,UAAAlI,EAAAlnD,OAAAw1B,MAAA,KAEAjoD,EAAAioD,EAAA,EACAw1C,EAAAvK,GAAAzgE,OAAAzyB,KAAA,IACA,GACA,GAAA25E,IAAA,QACAka,CACA,CACA,KAAA5rC,IAAAp5D,EAAA,CACA,MAAA8kG,QAAA,UACA,CACAlD,EAAA9W,EACAA,EAAAlnD,OAAAw1B,EACA,OAAAwoC,IAAA,KAAA9W,IAAA,OACA1xB,EACA,GAAAw1C,EAAA,CACAd,WAAA38F,EAAAioD,EAAA,EAAAy1C,GACAA,EAAA,IACA,CACA7b,EAAA,IACA,MACA,SACA,CACA,CACA,OAAAA,GAIA,IAAA1uE,EAAA80C,EACA2zC,EAAAc,UAAA,EACA,IAAAiB,EAAA/B,EAAA/nE,KAAApB,OAAAtf,MACA,IAAAwqF,EACA,MAAAxqF,EAAAtkB,IAAA+sG,EAAA/nE,KAAApB,OAAAtf,MACAA,EACA,IAAAk3D,EAAAhhB,EAAAvsC,UAAAmrC,IAAA90C,GACA,GAAAk3D,IAAA,KAAAA,IAAA,IACAkyB,EAAAlyB,EACA,OAAAA,CACA,CAQA,SAAA77E,KAAA67E,GACA7wE,EAAAhL,KAAA67E,EACA,CAOA,SAAA8oB,OACA,IAAA35F,EAAA3K,OAAA,CACA,IAAAw7E,EAAA9pE,OACA,GAAA8pE,IAAA,KACA,YACA77E,KAAA67E,EACA,CACA,OAAA7wE,EAAA,EACA,CAUA,SAAA45F,KAAAwK,EAAAhR,GACA,IAAAiR,EAAA1K,OACA5wD,EAAAs7D,IAAAD,EACA,GAAAr7D,EAAA,CACAhiC,OACA,WACA,CACA,IAAAqsF,EACA,MAAA+G,QAAA,UAAAkK,EAAA,OAAAD,EAAA,cACA,YACA,CAQA,SAAAvK,KAAA8B,GACA,IAAAla,EAAA,KACA,IAAA8R,EACA,GAAAoI,IAAA59F,UAAA,CACAw1F,EAAAC,EAAA6G,EAAA,UACA7G,EAAA6G,EAAA,GACA,GAAA9G,IAAAmG,GAAAnG,EAAA7uE,OAAA,KAAA6uE,EAAA8P,WAAA,CACA5hB,EAAA8R,EAAA+P,QAAA/P,EAAAh9E,KAAA,IACA,CACA,MAEA,GAAAusF,EAAAnH,EAAA,CACAhC,MACA,CACApG,EAAAC,EAAAmI,UACAnI,EAAAmI,GACA,GAAApI,MAAA8P,YAAA3J,GAAAnG,EAAA7uE,OAAA,MACA+8D,EAAA8R,EAAA+P,QAAA,KAAA/P,EAAAh9E,IACA,CACA,CACA,OAAAkrE,CACA,CAEA,OAAAhrF,OAAA2B,eAAA,CACA2O,UACA4yF,UACA3kG,UACA4kG,UACAC,WACA,QACArpF,IAAA,kBAAA6pF,CAAA,GAGA,C,iBC9ZAvmG,EAAAC,QAAA21D,KAGA,IAAAG,EAAAh2D,EAAA,QACA61D,KAAAhzD,UAAAD,OAAAzC,OAAA61D,EAAAnzD,YAAA6C,YAAAmwD,MAAA4pC,UAAA,OAEA,IAAA3pC,EAAA91D,EAAA,MACAy2F,EAAAz2F,EAAA,MACAu2F,EAAAv2F,EAAA,MACAw2F,EAAAx2F,EAAA,MACA41D,EAAA51D,EAAA,MACAwhG,EAAAxhG,EAAA,MACA4hG,EAAA5hG,EAAA,MACA0hG,EAAA1hG,EAAA,MACAooC,EAAApoC,EAAA,MACAo/F,EAAAp/F,EAAA,MACAu4C,EAAAv4C,EAAA,MACAuhG,EAAAvhG,EAAA,MACA09F,EAAA19F,EAAA,MACAyhG,EAAAzhG,EAAA,MAUA,SAAA61D,KAAAxjD,EAAA3P,GACAszD,EAAAhzD,KAAA4C,KAAAyM,EAAA3P,GAMAkD,KAAA61F,OAAA,GAMA71F,KAAA2vD,OAAArrD,UAMAtE,KAAAwyF,WAAAluF,UAMAtE,KAAA2yF,SAAAruF,UAMAtE,KAAA01F,MAAApxF,UAOAtE,KAAA6qG,YAAA,KAOA7qG,KAAA8yF,aAAA,KAOA9yF,KAAAwzF,aAAA,KAOAxzF,KAAA8qG,MAAA,IACA,CAEA9tG,OAAAgqF,iBAAA/2B,KAAAhzD,UAAA,CAQA8tG,WAAA,CACAh0F,IAAA,WAGA,GAAA/W,KAAA6qG,YACA,OAAA7qG,KAAA6qG,YAEA7qG,KAAA6qG,YAAA,GACA,QAAAvN,EAAAtgG,OAAAmG,KAAAnD,KAAA61F,QAAAl6F,EAAA,EAAAA,EAAA2hG,EAAA1hG,SAAAD,EAAA,CACA,IAAAooD,EAAA/jD,KAAA61F,OAAAyH,EAAA3hG,IACAiuB,EAAAm6B,EAAAn6B,GAGA,GAAA5pB,KAAA6qG,YAAAjhF,GACA,MAAA5mB,MAAA,gBAAA4mB,EAAA,OAAA5pB,MAEAA,KAAA6qG,YAAAjhF,GAAAm6B,CACA,CACA,OAAA/jD,KAAA6qG,WACA,GASAjY,YAAA,CACA77E,IAAA,WACA,OAAA/W,KAAA8yF,eAAA9yF,KAAA8yF,aAAAtwD,EAAA46D,QAAAp9F,KAAA61F,QACA,GASAzD,YAAA,CACAr7E,IAAA,WACA,OAAA/W,KAAAwzF,eAAAxzF,KAAAwzF,aAAAhxD,EAAA46D,QAAAp9F,KAAA2vD,QACA,GASAvZ,KAAA,CACAr/B,IAAA,WACA,OAAA/W,KAAA8qG,QAAA9qG,KAAAo2C,KAAA6Z,KAAA+6C,oBAAAhrG,KAAAiwD,GACA,EACAz0D,IAAA,SAAA46C,GAGA,IAAAn5C,EAAAm5C,EAAAn5C,UACA,KAAAA,aAAA2+F,GAAA,EACAxlD,EAAAn5C,UAAA,IAAA2+F,GAAA97F,YAAAs2C,EACA5T,EAAAz+B,MAAAqyC,EAAAn5C,YACA,CAGAm5C,EAAA6b,MAAA7b,EAAAn5C,UAAAg1D,MAAAjyD,KAGAwiC,EAAAz+B,MAAAqyC,EAAAwlD,EAAA,MAEA57F,KAAA8qG,MAAA10D,EAGA,IAAAz6C,EAAA,EACA,KAAAA,EAAAqE,KAAA4yF,YAAAh3F,SAAAD,EACAqE,KAAA8yF,aAAAn3F,GAAAI,UAGA,IAAAkvG,EAAA,GACA,IAAAtvG,EAAA,EAAAA,EAAAqE,KAAAoyF,YAAAx2F,SAAAD,EACAsvG,EAAAjrG,KAAAwzF,aAAA73F,GAAAI,UAAA0Q,MAAA,CACAsK,IAAAyrB,EAAA28D,YAAAn/F,KAAAwzF,aAAA73F,GAAA86F,OACAj7F,IAAAgnC,EAAA48D,YAAAp/F,KAAAwzF,aAAA73F,GAAA86F,QAEA,GAAA96F,EACAqB,OAAAgqF,iBAAA5wC,EAAAn5C,UAAAguG,EACA,KASAh7C,KAAA+6C,oBAAA,SAAAA,oBAAA1S,GAEA,IAAAx0F,EAAA0+B,EAAAszB,QAAA,MAAAwiC,EAAA7rF,MAEA,QAAA9Q,EAAA,EAAAooD,EAAApoD,EAAA28F,EAAA1F,YAAAh3F,SAAAD,EACA,IAAAooD,EAAAu0C,EAAAxF,aAAAn3F,IAAAM,IAAA6H,EACA,YAAA0+B,EAAA+1D,SAAAx0C,EAAAt3C,YACA,GAAAs3C,EAAAq0C,SAAAt0F,EACA,YAAA0+B,EAAA+1D,SAAAx0C,EAAAt3C,OACA,OAAA3I,EACA,wEADAA,CAEA,uBAEA,EAEA,SAAAq5F,WAAAlyE,GACAA,EAAA4/E,YAAA5/E,EAAA6nE,aAAA7nE,EAAAuoE,aAAA,YACAvoE,EAAAkmC,cACAlmC,EAAA+lC,cACA/lC,EAAA6xE,OACA,OAAA7xE,CACA,CAmBAglC,KAAAoD,SAAA,SAAAA,SAAA5mD,EAAAmjD,GACA,IAAA3kC,EAAA,IAAAglC,KAAAxjD,EAAAmjD,EAAA9yD,SACAmuB,EAAAunE,WAAA5iC,EAAA4iC,WACAvnE,EAAA0nE,SAAA/iC,EAAA+iC,SACA,IAAA2K,EAAAtgG,OAAAmG,KAAAysD,EAAAimC,QACAl6F,EAAA,EACA,KAAAA,EAAA2hG,EAAA1hG,SAAAD,EACAsvB,EAAA7nB,YACAwsD,EAAAimC,OAAAyH,EAAA3hG,IAAAo3F,UAAA,YACAnC,EAAAv9B,SACAs9B,EAAAt9B,UAAAiqC,EAAA3hG,GAAAi0D,EAAAimC,OAAAyH,EAAA3hG,MAEA,GAAAi0D,EAAAD,OACA,IAAA2tC,EAAAtgG,OAAAmG,KAAAysD,EAAAD,QAAAh0D,EAAA,EAAAA,EAAA2hG,EAAA1hG,SAAAD,EACAsvB,EAAA7nB,IAAAytF,EAAAx9B,SAAAiqC,EAAA3hG,GAAAi0D,EAAAD,OAAA2tC,EAAA3hG,MACA,GAAAi0D,EAAAa,OACA,IAAA6sC,EAAAtgG,OAAAmG,KAAAysD,EAAAa,QAAA90D,EAAA,EAAAA,EAAA2hG,EAAA1hG,SAAAD,EAAA,CACA,IAAA80D,EAAAb,EAAAa,OAAA6sC,EAAA3hG,IACAsvB,EAAA7nB,KACAqtD,EAAA7mC,KAAAtlB,UACAqsF,EAAAt9B,SACA5C,EAAAolC,SAAAvxF,UACA2rD,KAAAoD,SACA5C,EAAAp0D,SAAAiI,UACA4rD,EAAAmD,SACA5C,EAAAvxB,UAAA56B,UACA0rD,EAAAqD,SACAjD,EAAAiD,UAAAiqC,EAAA3hG,GAAA80D,GAEA,CACA,GAAAb,EAAA4iC,YAAA5iC,EAAA4iC,WAAA52F,OACAqvB,EAAAunE,WAAA5iC,EAAA4iC,WACA,GAAA5iC,EAAA+iC,UAAA/iC,EAAA+iC,SAAA/2F,OACAqvB,EAAA0nE,SAAA/iC,EAAA+iC,SACA,GAAA/iC,EAAA8lC,MACAzqE,EAAAyqE,MAAA,KACA,GAAA9lC,EAAAkqC,QACA7uE,EAAA6uE,QAAAlqC,EAAAkqC,QACA,OAAA7uE,CACA,EAOAglC,KAAAhzD,UAAA+kC,OAAA,SAAAA,OAAAk4D,GACA,IAAAsO,EAAAp4C,EAAAnzD,UAAA+kC,OAAA5kC,KAAA4C,KAAAk6F,GACA,IAAAC,EAAAD,EAAA39F,QAAA29F,EAAAC,cAAA,MACA,OAAA33D,EAAAuuB,SAAA,CACA,UAAAy3C,KAAA1rG,SAAAwH,UACA,SAAA8rD,EAAA8sC,YAAAl9F,KAAAoyF,YAAA8H,GACA,SAAA9pC,EAAA8sC,YAAAl9F,KAAA4yF,YAAAviF,QAAA,SAAA9H,GAAA,OAAAA,EAAAmyF,cAAA,IAAAR,IAAA,GACA,aAAAl6F,KAAAwyF,YAAAxyF,KAAAwyF,WAAA52F,OAAAoE,KAAAwyF,WAAAluF,UACA,WAAAtE,KAAA2yF,UAAA3yF,KAAA2yF,SAAA/2F,OAAAoE,KAAA2yF,SAAAruF,UACA,QAAAtE,KAAA01F,OAAApxF,UACA,SAAAkkG,KAAA/3C,QAAAnsD,UACA,UAAA61F,EAAAn6F,KAAA85F,QAAAx1F,WAEA,EAKA2rD,KAAAhzD,UAAAw1D,WAAA,SAAAA,aACA,IAAAojC,EAAA71F,KAAA4yF,YAAAj3F,EAAA,EACA,MAAAA,EAAAk6F,EAAAj6F,OACAi6F,EAAAl6F,KAAAI,UACA,IAAA4zD,EAAA3vD,KAAAoyF,YAAAz2F,EAAA,EACA,MAAAA,EAAAg0D,EAAA/zD,OACA+zD,EAAAh0D,KAAAI,UACA,OAAAq0D,EAAAnzD,UAAAw1D,WAAAr1D,KAAA4C,KACA,EAKAiwD,KAAAhzD,UAAA8Z,IAAA,SAAAA,IAAAtK,GACA,OAAAzM,KAAA61F,OAAAppF,IACAzM,KAAA2vD,QAAA3vD,KAAA2vD,OAAAljD,IACAzM,KAAAywD,QAAAzwD,KAAAywD,OAAAhkD,IACA,IACA,EASAwjD,KAAAhzD,UAAAmG,IAAA,SAAAA,IAAA8wE,GAEA,GAAAl0E,KAAA+W,IAAAm9D,EAAAznE,MACA,MAAAzJ,MAAA,mBAAAkxE,EAAAznE,KAAA,QAAAzM,MAEA,GAAAk0E,aAAAyc,GAAAzc,EAAAqgB,SAAAjwF,UAAA,CAMA,GAAAtE,KAAA6qG,YAAA7qG,KAAA6qG,YAAA32B,EAAAtqD,IAAA5pB,KAAA+qG,WAAA72B,EAAAtqD,IACA,MAAA5mB,MAAA,gBAAAkxE,EAAAtqD,GAAA,OAAA5pB,MACA,GAAAA,KAAAq6F,aAAAnmB,EAAAtqD,IACA,MAAA5mB,MAAA,MAAAkxE,EAAAtqD,GAAA,mBAAA5pB,MACA,GAAAA,KAAAs6F,eAAApmB,EAAAznE,MACA,MAAAzJ,MAAA,SAAAkxE,EAAAznE,KAAA,oBAAAzM,MAEA,GAAAk0E,EAAAtlE,OACAslE,EAAAtlE,OAAAgI,OAAAs9D,GACAl0E,KAAA61F,OAAA3hB,EAAAznE,MAAAynE,EACAA,EAAAt3E,QAAAoD,KACAk0E,EAAAupB,MAAAz9F,MACA,OAAAm9F,WAAAn9F,KACA,CACA,GAAAk0E,aAAA2c,EAAA,CACA,IAAA7wF,KAAA2vD,OACA3vD,KAAA2vD,OAAA,GACA3vD,KAAA2vD,OAAAukB,EAAAznE,MAAAynE,EACAA,EAAAupB,MAAAz9F,MACA,OAAAm9F,WAAAn9F,KACA,CACA,OAAAowD,EAAAnzD,UAAAmG,IAAAhG,KAAA4C,KAAAk0E,EACA,EASAjkB,KAAAhzD,UAAA2Z,OAAA,SAAAA,OAAAs9D,GACA,GAAAA,aAAAyc,GAAAzc,EAAAqgB,SAAAjwF,UAAA,CAIA,IAAAtE,KAAA61F,QAAA71F,KAAA61F,OAAA3hB,EAAAznE,QAAAynE,EACA,MAAAlxE,MAAAkxE,EAAA,uBAAAl0E,aAEAA,KAAA61F,OAAA3hB,EAAAznE,MACAynE,EAAAtlE,OAAA,KACAslE,EAAAwpB,SAAA19F,MACA,OAAAm9F,WAAAn9F,KACA,CACA,GAAAk0E,aAAA2c,EAAA,CAGA,IAAA7wF,KAAA2vD,QAAA3vD,KAAA2vD,OAAAukB,EAAAznE,QAAAynE,EACA,MAAAlxE,MAAAkxE,EAAA,uBAAAl0E,aAEAA,KAAA2vD,OAAAukB,EAAAznE,MACAynE,EAAAtlE,OAAA,KACAslE,EAAAwpB,SAAA19F,MACA,OAAAm9F,WAAAn9F,KACA,CACA,OAAAowD,EAAAnzD,UAAA2Z,OAAAxZ,KAAA4C,KAAAk0E,EACA,EAOAjkB,KAAAhzD,UAAAo9F,aAAA,SAAAA,aAAAzwE,GACA,OAAAwmC,EAAAiqC,aAAAr6F,KAAA2yF,SAAA/oE,EACA,EAOAqmC,KAAAhzD,UAAAq9F,eAAA,SAAAA,eAAA7tF,GACA,OAAA2jD,EAAAkqC,eAAAt6F,KAAA2yF,SAAAlmF,EACA,EAOAwjD,KAAAhzD,UAAA1C,OAAA,SAAAA,OAAAkiG,GACA,WAAAz8F,KAAAo2C,KAAAqmD,EACA,EAMAxsC,KAAAhzD,UAAAomB,MAAA,SAAAA,QAIA,IAAAuuE,EAAA5xF,KAAA4xF,SACAuH,EAAA,GACA,QAAAx9F,EAAA,EAAAA,EAAAqE,KAAA4yF,YAAAh3F,SAAAD,EACAw9F,EAAA59F,KAAAyE,KAAA8yF,aAAAn3F,GAAAI,UAAAo3F,cAGAnzF,KAAAmxD,OAAAqoC,EAAAx5F,KAAAw5F,CAAA,CACAsC,SACA3C,QACA32D,SAEAxiC,KAAAgxD,OAAAre,EAAA3yC,KAAA2yC,CAAA,CACAqpD,SACA7C,QACA32D,SAEAxiC,KAAA88F,OAAAnB,EAAA37F,KAAA27F,CAAA,CACAxC,QACA32D,SAEAxiC,KAAAkxD,WAAA4mC,EAAA5mC,WAAAlxD,KAAA83F,CAAA,CACAqB,QACA32D,SAEAxiC,KAAA+wD,SAAA+mC,EAAA/mC,SAAA/wD,KAAA83F,CAAA,CACAqB,QACA32D,SAIA,IAAAi/B,EAAAo6B,EAAAjK,GACA,GAAAnwB,EAAA,CACA,IAAAypC,EAAAluG,OAAAzC,OAAAyF,MAEAkrG,EAAAh6C,WAAAlxD,KAAAkxD,WACAlxD,KAAAkxD,WAAAuQ,EAAAvQ,WAAA/iD,KAAA+8F,GAGAA,EAAAn6C,SAAA/wD,KAAA+wD,SACA/wD,KAAA+wD,SAAA0Q,EAAA1Q,SAAA5iD,KAAA+8F,EAEA,CAEA,OAAAlrG,IACA,EAQAiwD,KAAAhzD,UAAAk0D,OAAA,SAAAg6C,aAAAvuG,EAAA8/F,GACA,OAAA18F,KAAAqjB,QAAA8tC,OAAAv0D,EAAA8/F,EACA,EAQAzsC,KAAAhzD,UAAA0/F,gBAAA,SAAAA,gBAAA//F,EAAA8/F,GACA,OAAA18F,KAAAmxD,OAAAv0D,EAAA8/F,KAAAxgC,IAAAwgC,EAAA0O,OAAA1O,GAAA2O,QACA,EAUAp7C,KAAAhzD,UAAA+zD,OAAA,SAAAs6C,aAAA1O,EAAAhhG,GACA,OAAAoE,KAAAqjB,QAAA2tC,OAAA4rC,EAAAhhG,EACA,EASAq0D,KAAAhzD,UAAA4/F,gBAAA,SAAAA,gBAAAD,GACA,KAAAA,aAAAZ,GACAY,EAAAZ,EAAAzhG,OAAAqiG,GACA,OAAA58F,KAAAgxD,OAAA4rC,IAAA8H,SACA,EAOAz0C,KAAAhzD,UAAA6/F,OAAA,SAAAyO,aAAA3uG,GACA,OAAAoD,KAAAqjB,QAAAy5E,OAAAlgG,EACA,EAOAqzD,KAAAhzD,UAAAi0D,WAAA,SAAAA,WAAAgjB,GACA,OAAAl0E,KAAAqjB,QAAA6tC,WAAAgjB,EACA,EA2BAjkB,KAAAhzD,UAAA8zD,SAAA,SAAAA,SAAAn0D,EAAAE,GACA,OAAAkD,KAAAqjB,QAAA0tC,SAAAn0D,EAAAE,EACA,EAiBAmzD,KAAAqpB,EAAA,SAAAgiB,aAAAtgE,GACA,gBAAAwwE,cAAAzgG,GACAy3B,EAAA84D,aAAAvwF,EAAAiwB,EACA,CACA,C,gBCtkBA,IAAAm+D,EAAA7+F,EAEA,IAAAkoC,EAAApoC,EAAA,MAEA,IAAAuqE,EAAA,CACA,SACA,QACA,QACA,SACA,SACA,UACA,WACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,SAGA,SAAA8mC,KAAApvG,EAAA24D,GACA,IAAAr5D,EAAA,EAAAstF,EAAA,GACAj0B,GAAA,EACA,MAAAr5D,EAAAU,EAAAT,OAAAqtF,EAAAtkB,EAAAhpE,EAAAq5D,IAAA34D,EAAAV,KACA,OAAAstF,CACA,CAsBAkQ,EAAAE,MAAAoS,KAAA,CACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAwBAtS,EAAAzpC,SAAA+7C,KAAA,CACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,MACA,GACAjpE,EAAA24D,WACA,OAaAhC,EAAAlJ,KAAAwb,KAAA,CACA,EACA,EACA,EACA,EACA,GACA,GAmBAtS,EAAAp6C,OAAA0sD,KAAA,CACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GAoBAtS,EAAAhF,OAAAsX,KAAA,CACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,G,iBC5LA,IAAAjpE,EAAAnoC,EAAAC,QAAAF,EAAA,MAEA,IAAA+hG,EAAA/hG,EAAA,IAEA,IAAA61D,EACAC,EAEA1tB,EAAAszB,QAAA17D,EAAA,MACAooC,EAAA40B,MAAAh9D,EAAA,KACAooC,EAAA9zB,KAAAtU,EAAA,MAMAooC,EAAA8oB,GAAA9oB,EAAA60B,QAAA,MAOA70B,EAAA46D,QAAA,SAAAA,QAAAlpB,GACA,GAAAA,EAAA,CACA,IAAA/wE,EAAAnG,OAAAmG,KAAA+wE,GACAD,EAAA,IAAAv2E,MAAAyF,EAAAvH,QACAyI,EAAA,EACA,MAAAA,EAAAlB,EAAAvH,OACAq4E,EAAA5vE,GAAA6vE,EAAA/wE,EAAAkB,MACA,OAAA4vE,CACA,CACA,QACA,EAOAzxC,EAAAuuB,SAAA,SAAAA,SAAAkjB,GACA,IAAAC,EAAA,GACA7vE,EAAA,EACA,MAAAA,EAAA4vE,EAAAr4E,OAAA,CACA,IAAAuB,EAAA82E,EAAA5vE,KACA89B,EAAA8xC,EAAA5vE,KACA,GAAA89B,IAAA79B,UACA4vE,EAAA/2E,GAAAglC,CACA,CACA,OAAA+xC,CACA,EAEA,IAAAw3B,EAAA,MACAC,EAAA,KAOAnpE,EAAAkmE,WAAA,SAAAA,WAAAj8F,GACA,6TAAAm0B,KAAAn0B,EACA,EAOA+1B,EAAA+1D,SAAA,SAAAA,SAAAN,GACA,gBAAAr3D,KAAAq3D,IAAAz1D,EAAAkmE,WAAAzQ,GACA,WAAAA,EAAArhC,QAAA80C,EAAA,QAAA90C,QAAA+0C,EAAA,YACA,UAAA1T,CACA,EAOAz1D,EAAA4xD,QAAA,SAAAA,QAAAjhB,GACA,OAAAA,EAAA3zC,OAAA,GAAA1B,cAAAq1C,EAAAtpD,UAAA,EACA,EAEA,IAAA+hF,EAAA,YAOAppE,EAAA0sB,UAAA,SAAAA,UAAAikB,GACA,OAAAA,EAAAtpD,UAAA,KACAspD,EAAAtpD,UAAA,GACA+sC,QAAAg1C,GAAA,SAAA/0C,EAAAC,GAAA,OAAAA,EAAAh5B,aAAA,GACA,EAQA0E,EAAAi2D,kBAAA,SAAAA,kBAAAnkE,EAAAC,GACA,OAAAD,EAAA1K,GAAA2K,EAAA3K,EACA,EAUA4Y,EAAA84D,aAAA,SAAAA,aAAAllD,EAAApb,GAGA,GAAAob,EAAA6b,MAAA,CACA,GAAAj3B,GAAAob,EAAA6b,MAAAxlD,OAAAuuB,EAAA,CACAwH,EAAAqpE,aAAAj1F,OAAAw/B,EAAA6b,OACA7b,EAAA6b,MAAAxlD,KAAAuuB,EACAwH,EAAAqpE,aAAAzoG,IAAAgzC,EAAA6b,MACA,CACA,OAAA7b,EAAA6b,KACA,CAGA,IAAAhC,EACAA,EAAA71D,EAAA,MAEA,IAAA6wB,EAAA,IAAAglC,EAAAj1B,GAAAob,EAAA3pC,MACA+1B,EAAAqpE,aAAAzoG,IAAA6nB,GACAA,EAAAmrB,OACAp5C,OAAA2B,eAAAy3C,EAAA,SAAAx3C,MAAAqsB,EAAAjQ,WAAA,QACAhe,OAAA2B,eAAAy3C,EAAAn5C,UAAA,SAAA2B,MAAAqsB,EAAAjQ,WAAA,QACA,OAAAiQ,CACA,EAEA,IAAA6gF,EAAA,EAOAtpE,EAAA+4D,aAAA,SAAAA,aAAArnB,GAGA,GAAAA,EAAAjiB,MACA,OAAAiiB,EAAAjiB,MAGA,IAAA/B,EACAA,EAAA91D,EAAA,MAEA,IAAA6/F,EAAA,IAAA/pC,EAAA,OAAA47C,IAAA53B,GACA1xC,EAAAqpE,aAAAzoG,IAAA62F,GACAj9F,OAAA2B,eAAAu1E,EAAA,SAAAt1E,MAAAq7F,EAAAj/E,WAAA,QACA,OAAAi/E,CACA,EAUAz3D,EAAAm8D,YAAA,SAAAA,YAAAoN,EAAAr9F,EAAA9P,GACA,SAAAotG,QAAAD,EAAAr9F,EAAA9P,GACA,IAAAg/F,EAAAlvF,EAAAmmC,QACA,GAAA+oD,IAAA,aAAAA,IAAA,aACA,OAAAmO,CACA,CACA,GAAAr9F,EAAA9S,OAAA,GACAmwG,EAAAnO,GAAAoO,QAAAD,EAAAnO,IAAA,GAAAlvF,EAAA9P,EACA,MACA,IAAA8kG,EAAAqI,EAAAnO,GACA,GAAA8F,EACA9kG,EAAA,GAAAsF,OAAAw/F,GAAAx/F,OAAAtF,GACAmtG,EAAAnO,GAAAh/F,CACA,CACA,OAAAmtG,CACA,CAEA,UAAAA,IAAA,SACA,MAAArjG,UAAA,yBACA,IAAAgG,EACA,MAAAhG,UAAA,0BAEAgG,IAAAgD,MAAA,KACA,OAAAs6F,QAAAD,EAAAr9F,EAAA9P,EACA,EAQA5B,OAAA2B,eAAA6jC,EAAA,gBACAzrB,IAAA,WACA,OAAAolF,EAAA,eAAAA,EAAA,iBAAA/hG,EAAA,OACA,G,iBCjNAC,EAAAC,QAAA6pG,SAEA,IAAA3hE,EAAApoC,EAAA,MAUA,SAAA+pG,SAAAlpC,EAAAC,GASAl7D,KAAAi7D,OAAA,EAMAj7D,KAAAk7D,OAAA,CACA,CAOA,IAAA+wC,EAAA9H,SAAA8H,KAAA,IAAA9H,SAAA,KAEA8H,EAAAjT,SAAA,qBACAiT,EAAAC,SAAAD,EAAAxF,SAAA,kBAAAzmG,IAAA,EACAisG,EAAArwG,OAAA,qBAOA,IAAAuwG,EAAAhI,SAAAgI,SAAA,mBAOAhI,SAAAnJ,WAAA,SAAAA,WAAAp8F,GACA,GAAAA,IAAA,EACA,OAAAqtG,EACA,IAAA5yC,EAAAz6D,EAAA,EACA,GAAAy6D,EACAz6D,KACA,IAAAq8D,EAAAr8D,IAAA,EACAs8D,GAAAt8D,EAAAq8D,GAAA,eACA,GAAA5B,EAAA,CACA6B,OAAA,EACAD,OAAA,EACA,KAAAA,EAAA,YACAA,EAAA,EACA,KAAAC,EAAA,WACAA,EAAA,CACA,CACA,CACA,WAAAipC,SAAAlpC,EAAAC,EACA,EAOAipC,SAAAllF,KAAA,SAAAA,KAAArgB,GACA,UAAAA,IAAA,SACA,OAAAulG,SAAAnJ,WAAAp8F,GACA,GAAA4jC,EAAA43D,SAAAx7F,GAAA,CAEA,GAAA4jC,EAAA4sB,KACAxwD,EAAA4jC,EAAA4sB,KAAAg9C,WAAAxtG,QAEA,OAAAulG,SAAAnJ,WAAAhuD,SAAApuC,EAAA,IACA,CACA,OAAAA,EAAAi6F,KAAAj6F,EAAAk6F,KAAA,IAAAqL,SAAAvlG,EAAAi6F,MAAA,EAAAj6F,EAAAk6F,OAAA,GAAAmT,CACA,EAOA9H,SAAAlnG,UAAA+7F,SAAA,SAAAA,SAAAD,GACA,IAAAA,GAAA/4F,KAAAk7D,KAAA,IACA,IAAAD,GAAAj7D,KAAAi7D,GAAA,MACAC,GAAAl7D,KAAAk7D,KAAA,EACA,IAAAD,EACAC,IAAA,MACA,QAAAD,EAAAC,EAAA,WACA,CACA,OAAAl7D,KAAAi7D,GAAAj7D,KAAAk7D,GAAA,UACA,EAOAipC,SAAAlnG,UAAAovG,OAAA,SAAAA,OAAAtT,GACA,OAAAv2D,EAAA4sB,KACA,IAAA5sB,EAAA4sB,KAAApvD,KAAAi7D,GAAA,EAAAj7D,KAAAk7D,GAAA,EAAA3+D,QAAAw8F,IAEA,CAAAF,IAAA74F,KAAAi7D,GAAA,EAAA69B,KAAA94F,KAAAk7D,GAAA,EAAA69B,SAAAx8F,QAAAw8F,GACA,EAEA,IAAAljC,EAAAj9C,OAAA3b,UAAA44D,WAOAsuC,SAAAmI,SAAA,SAAAA,SAAAC,GACA,GAAAA,IAAAJ,EACA,OAAAF,EACA,WAAA9H,UACAtuC,EAAAz4D,KAAAmvG,EAAA,GACA12C,EAAAz4D,KAAAmvG,EAAA,MACA12C,EAAAz4D,KAAAmvG,EAAA,OACA12C,EAAAz4D,KAAAmvG,EAAA,aAEA12C,EAAAz4D,KAAAmvG,EAAA,GACA12C,EAAAz4D,KAAAmvG,EAAA,MACA12C,EAAAz4D,KAAAmvG,EAAA,OACA12C,EAAAz4D,KAAAmvG,EAAA,YAEA,EAMApI,SAAAlnG,UAAAuvG,OAAA,SAAAA,SACA,OAAA5zF,OAAA88C,aACA11D,KAAAi7D,GAAA,IACAj7D,KAAAi7D,KAAA,MACAj7D,KAAAi7D,KAAA,OACAj7D,KAAAi7D,KAAA,GACAj7D,KAAAk7D,GAAA,IACAl7D,KAAAk7D,KAAA,MACAl7D,KAAAk7D,KAAA,OACAl7D,KAAAk7D,KAAA,GAEA,EAMAipC,SAAAlnG,UAAAivG,SAAA,SAAAA,WACA,IAAAhwB,EAAAl8E,KAAAk7D,IAAA,GACAl7D,KAAAk7D,KAAAl7D,KAAAk7D,IAAA,EAAAl7D,KAAAi7D,KAAA,IAAAihB,KAAA,EACAl8E,KAAAi7D,IAAAj7D,KAAAi7D,IAAA,EAAAihB,KAAA,EACA,OAAAl8E,IACA,EAMAmkG,SAAAlnG,UAAAwpG,SAAA,SAAAA,WACA,IAAAvqB,IAAAl8E,KAAAi7D,GAAA,GACAj7D,KAAAi7D,KAAAj7D,KAAAi7D,KAAA,EAAAj7D,KAAAk7D,IAAA,IAAAghB,KAAA,EACAl8E,KAAAk7D,IAAAl7D,KAAAk7D,KAAA,EAAAghB,KAAA,EACA,OAAAl8E,IACA,EAMAmkG,SAAAlnG,UAAArB,OAAA,SAAAA,SACA,IAAA6wG,EAAAzsG,KAAAi7D,GACAyxC,GAAA1sG,KAAAi7D,KAAA,GAAAj7D,KAAAk7D,IAAA,OACAyxC,EAAA3sG,KAAAk7D,KAAA,GACA,OAAAyxC,IAAA,EACAD,IAAA,EACAD,EAAA,MACAA,EAAA,QACAA,EAAA,YACAC,EAAA,MACAA,EAAA,QACAA,EAAA,YACAC,EAAA,QACA,C,uBCtMA,IAAAnqE,EAAAloC,EAGAkoC,EAAAqyB,UAAAz6D,EAAA,KAGAooC,EAAA2yB,OAAA/6D,EAAA,MAGAooC,EAAA/7B,aAAArM,EAAA,MAGAooC,EAAAkjE,MAAAtrG,EAAA,MAGAooC,EAAA60B,QAAAj9D,EAAA,IAGAooC,EAAAw5B,KAAA5hE,EAAA,MAGAooC,EAAA6mB,KAAAjvD,EAAA,MAGAooC,EAAA2hE,SAAA/pG,EAAA,MAOAooC,EAAAilE,OAAAlrG,eAAA6tD,SAAA,aACAA,QACAA,OAAAvvD,SACAuvD,OAAAvvD,QAAA0yF,UACAnjC,OAAAvvD,QAAA0yF,SAAA5kB,MAOAnmC,EAAA4nB,OAAA5nB,EAAAilE,QAAAr9C,eACAwiD,SAAA,aAAAA,eACA74B,OAAA,aAAAA,MACA/zE,KAQAwiC,EAAA24D,WAAAn+F,OAAA62E,OAAA72E,OAAA62E,OAAA,OAOArxC,EAAA04D,YAAAl+F,OAAA62E,OAAA72E,OAAA62E,OAAA,OAQArxC,EAAA+L,UAAA3mC,OAAA2mC,WAAA,SAAAA,UAAA3vC,GACA,cAAAA,IAAA,UAAAoxF,SAAApxF,IAAAgB,KAAA2mB,MAAA3nB,MACA,EAOA4jC,EAAA43D,SAAA,SAAAA,SAAAx7F,GACA,cAAAA,IAAA,UAAAA,aAAAga,MACA,EAOA4pB,EAAAi4D,SAAA,SAAAA,SAAA77F,GACA,OAAAA,cAAA,QACA,EAUA4jC,EAAAqqE,MAQArqE,EAAAsqE,MAAA,SAAAA,MAAAvkG,EAAA0vF,GACA,IAAAr5F,EAAA2J,EAAA0vF,GACA,GAAAr5F,GAAA,MAAA2J,EAAArL,eAAA+6F,GACA,cAAAr5F,IAAA,WAAAlB,MAAAwzB,QAAAtyB,KAAAhD,OAAAoB,OAAAmG,KAAAvE,GAAAhD,QAAA,EACA,YACA,EAaA4mC,EAAA/5B,OAAA,WACA,IACA,IAAAA,EAAA+5B,EAAA60B,QAAA,UAAA5uD,OAEA,OAAAA,EAAAxL,UAAA8vG,UAAAtkG,EAAA,IACA,OAAA9N,GAEA,WACA,CACA,CATA,GAYA6nC,EAAAwqE,aAAA,KAGAxqE,EAAAyqE,oBAAA,KAOAzqE,EAAAy4D,UAAA,SAAAA,UAAAiS,GAEA,cAAAA,IAAA,SACA1qE,EAAA/5B,OACA+5B,EAAAyqE,oBAAAC,GACA,IAAA1qE,EAAA9kC,MAAAwvG,GACA1qE,EAAA/5B,OACA+5B,EAAAwqE,aAAAE,UACAj1C,aAAA,YACAi1C,EACA,IAAAj1C,WAAAi1C,EACA,EAMA1qE,EAAA9kC,aAAAu6D,aAAA,YAAAA,WAAAv6D,MAeA8kC,EAAA4sB,KAAA5sB,EAAA4nB,OAAA+iD,SAAA3qE,EAAA4nB,OAAA+iD,QAAA/9C,MACA5sB,EAAA4nB,OAAAgF,MACA5sB,EAAA60B,QAAA,QAOA70B,EAAA4qE,OAAA,mBAOA5qE,EAAA6qE,QAAA,wBAOA7qE,EAAA8qE,QAAA,6CAOA9qE,EAAA+qE,WAAA,SAAAA,WAAA3uG,GACA,OAAAA,EACA4jC,EAAA2hE,SAAAllF,KAAArgB,GAAA4tG,SACAhqE,EAAA2hE,SAAAgI,QACA,EAQA3pE,EAAAgrE,aAAA,SAAAA,aAAAjB,EAAAxT,GACA,IAAAmM,EAAA1iE,EAAA2hE,SAAAmI,SAAAC,GACA,GAAA/pE,EAAA4sB,KACA,OAAA5sB,EAAA4sB,KAAAq+C,SAAAvI,EAAAjqC,GAAAiqC,EAAAhqC,GAAA69B,GACA,OAAAmM,EAAAlM,SAAAz8F,QAAAw8F,GACA,EAUA,SAAAh1F,MAAAgoG,EAAA2B,EAAA7S,GACA,QAAA13F,EAAAnG,OAAAmG,KAAAuqG,GAAA/xG,EAAA,EAAAA,EAAAwH,EAAAvH,SAAAD,EACA,GAAAowG,EAAA5oG,EAAAxH,MAAA2I,YAAAu2F,EACAkR,EAAA5oG,EAAAxH,IAAA+xG,EAAAvqG,EAAAxH,IACA,OAAAowG,CACA,CAEAvpE,EAAAz+B,YAOAy+B,EAAAmgE,QAAA,SAAAA,QAAAxvB,GACA,OAAAA,EAAA3zC,OAAA,GAAA0B,cAAAiyC,EAAAtpD,UAAA,EACA,EAQA,SAAA8jF,SAAAlhG,GAEA,SAAAmhG,YAAAhxG,EAAA6/F,GAEA,KAAAz8F,gBAAA4tG,aACA,WAAAA,YAAAhxG,EAAA6/F,GAKAz/F,OAAA2B,eAAAqB,KAAA,WAAA+W,IAAA,kBAAAna,CAAA,IAGA,GAAAoG,MAAA0J,kBACA1J,MAAA0J,kBAAA1M,KAAA4tG,kBAEA5wG,OAAA2B,eAAAqB,KAAA,SAAApB,OAAA,IAAAoE,OAAAuD,OAAA,KAEA,GAAAk2F,EACA14F,MAAA/D,KAAAy8F,EACA,CAEAmR,YAAA3wG,UAAAD,OAAAzC,OAAAyI,MAAA/F,UAAA,CACA6C,YAAA,CACAlB,MAAAgvG,YACAtrD,SAAA,KACAtnC,WAAA,MACAqnC,aAAA,MAEA51C,KAAA,CACAsK,IAAA,SAAAA,MAAA,OAAAtK,CAAA,EACAjR,IAAA8I,UACA0W,WAAA,MAKAqnC,aAAA,MAEAnjC,SAAA,CACAtgB,MAAA,SAAAA,QAAA,OAAAoB,KAAAyM,KAAA,KAAAzM,KAAApD,OAAA,EACA0lD,SAAA,KACAtnC,WAAA,MACAqnC,aAAA,QAIA,OAAAurD,WACA,CAEAprE,EAAAmrE,kBAmBAnrE,EAAAqrE,cAAAF,SAAA,iBAoBAnrE,EAAA28D,YAAA,SAAA2O,SAAAhP,GACA,IAAAiP,EAAA,GACA,QAAApyG,EAAA,EAAAA,EAAAmjG,EAAAljG,SAAAD,EACAoyG,EAAAjP,EAAAnjG,IAAA,EAOA,kBACA,QAAAwH,EAAAnG,OAAAmG,KAAAnD,MAAArE,EAAAwH,EAAAvH,OAAA,EAAAD,GAAA,IAAAA,EACA,GAAAoyG,EAAA5qG,EAAAxH,MAAA,GAAAqE,KAAAmD,EAAAxH,MAAA2I,WAAAtE,KAAAmD,EAAAxH,MAAA,KACA,OAAAwH,EAAAxH,EACA,CACA,EAeA6mC,EAAA48D,YAAA,SAAA4O,SAAAlP,GAQA,gBAAAryF,GACA,QAAA9Q,EAAA,EAAAA,EAAAmjG,EAAAljG,SAAAD,EACA,GAAAmjG,EAAAnjG,KAAA8Q,SACAzM,KAAA8+F,EAAAnjG,GACA,CACA,EAkBA6mC,EAAA03D,cAAA,CACA3qC,MAAA32C,OACA42C,MAAA52C,OACA62C,MAAA72C,OACAg3C,KAAA,MAIAptB,EAAAi5D,WAAA,WACA,IAAAhzF,EAAA+5B,EAAA/5B,OAEA,IAAAA,EAAA,CACA+5B,EAAAwqE,aAAAxqE,EAAAyqE,oBAAA,KACA,MACA,CAGAzqE,EAAAwqE,aAAAvkG,EAAAwW,OAAAg5C,WAAAh5C,MAAAxW,EAAAwW,MAEA,SAAAgvF,YAAArvG,EAAA4I,GACA,WAAAiB,EAAA7J,EAAA4I,EACA,EACAg7B,EAAAyqE,oBAAAxkG,EAAAkM,aAEA,SAAAu5F,mBAAAx6E,GACA,WAAAjrB,EAAAirB,EACA,CACA,C,iBCpbAr5B,EAAAC,QAAAqhG,SAEA,IAAAzrC,EAAA91D,EAAA,MACAooC,EAAApoC,EAAA,MAEA,SAAA+zG,QAAApqD,EAAA4mD,GACA,OAAA5mD,EAAAt3C,KAAA,KAAAk+F,GAAA5mD,EAAAq0C,UAAAuS,IAAA,aAAA5mD,EAAA9nD,KAAA0uG,IAAA,eAAA5mD,EAAAgvC,QAAA,mBACA,CAWA,SAAAqb,eAAAtqG,EAAAigD,EAAAi0C,EAAAl2F,GAEA,GAAAiiD,EAAAovC,aAAA,CACA,GAAApvC,EAAAovC,wBAAAjjC,EAAA,CAAApsD,EACA,cAAAhC,EADAgC,CAEA,WAFAA,CAGA,WAAAqqG,QAAApqD,EAAA,eACA,QAAA5gD,EAAAnG,OAAAmG,KAAA4gD,EAAAovC,aAAA92F,QAAAk6B,EAAA,EAAAA,EAAApzB,EAAAvH,SAAA26B,EAAAzyB,EACA,WAAAigD,EAAAovC,aAAA92F,OAAA8G,EAAAozB,KACAzyB,EACA,QADAA,CAEA,IACA,MACAA,EACA,IADAA,CAEA,8BAAAk0F,EAAAl2F,EAFAgC,CAGA,QAHAA,CAIA,aAAAigD,EAAAt3C,KAAA,IAJA3I,CAKA,IACA,CACA,MACA,OAAAigD,EAAA94B,MACA,YACA,aACA,aACA,cACA,eAAAnnB,EACA,0BAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,YACA,MACA,YACA,aACA,aACA,cACA,eAAAjgD,EACA,kFAAAhC,QADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,iBACA,MACA,YACA,aAAAjgD,EACA,2BAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,WACA,MACA,WAAAjgD,EACA,4BAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,YACA,MACA,aAAAjgD,EACA,yBAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,WACA,MACA,YAAAjgD,EACA,4DAAAhC,MADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,WACA,MAEA,CACA,OAAAjgD,CAEA,CAUA,SAAAuqG,aAAAvqG,EAAAigD,EAAAjiD,GAEA,OAAAiiD,EAAAgvC,SACA,YACA,aACA,aACA,cACA,eAAAjvF,EACA,6BAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,gBACA,MACA,YACA,aACA,aACA,cACA,eAAAjgD,EACA,6BAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,qBACA,MACA,WAAAjgD,EACA,4BAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,gBACA,MAEA,OAAAjgD,CAEA,CAOA,SAAA63F,SAAArD,GAGA,IAAAx0F,EAAA0+B,EAAAszB,QAAA,MAAAwiC,EAAA7rF,KAAA,UAAA+1B,CACA,oCADAA,CAEA,8BACA,IAAAmtB,EAAA2oC,EAAAlG,YACAkc,EAAA,GACA,GAAA3+C,EAAA/zD,OAAAkI,EACA,YAEA,QAAAnI,EAAA,EAAAA,EAAA28F,EAAA1F,YAAAh3F,SAAAD,EAAA,CACA,IAAAooD,EAAAu0C,EAAAxF,aAAAn3F,GAAAI,UACA+F,EAAA,IAAA0gC,EAAA+1D,SAAAx0C,EAAAt3C,MAEA,GAAAs3C,EAAA41C,SAAA71F,EACA,sCAAAhC,EAAAiiD,EAAAt3C,MAGA,GAAAs3C,EAAA9nD,IAAA,CAAA6H,EACA,yBAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,UAFAjgD,CAGA,wBAAAhC,EAHAgC,CAIA,gCACAuqG,aAAAvqG,EAAAigD,EAAA,QACAqqD,eAAAtqG,EAAAigD,EAAApoD,EAAAmG,EAAA,SAAAssG,CACA,IAGA,SAAArqD,EAAAq0C,SAAA,CAAAt0F,EACA,yBAAAhC,EADAgC,CAEA,WAAAqqG,QAAApqD,EAAA,SAFAjgD,CAGA,gCAAAhC,GACAssG,eAAAtqG,EAAAigD,EAAApoD,EAAAmG,EAAA,MAAAssG,CACA,IAGA,MACA,GAAArqD,EAAAywC,OAAA,CACA,IAAA+Z,EAAA/rE,EAAA+1D,SAAAx0C,EAAAywC,OAAA/nF,MACA,GAAA6hG,EAAAvqD,EAAAywC,OAAA/nF,QAAA,EAAA3I,EACA,cAAAyqG,EADAzqG,CAEA,WAAAigD,EAAAywC,OAAA/nF,KAAA,qBACA6hG,EAAAvqD,EAAAywC,OAAA/nF,MAAA,EACA3I,EACA,QAAAyqG,EACA,CACAH,eAAAtqG,EAAAigD,EAAApoD,EAAAmG,EACA,CACA,GAAAiiD,EAAA41C,SAAA71F,EACA,IACA,CACA,OAAAA,EACA,cAEA,C,iBCzKA,IAAA+3F,EAAAvhG,EAEA,IAAAshG,EAAAxhG,EAAA,MA6BAyhG,EAAA,yBAEA3qC,WAAA,SAAAgjB,GAGA,GAAAA,KAAA,UAEA,IAAAznE,EAAAynE,EAAA,SAAArqD,UAAAqqD,EAAA,SAAAkzB,YAAA,QACA,IAAAn8E,EAAAjrB,KAAAgjC,OAAAv2B,GAEA,GAAAwe,EAAA,CAEA,IAAAirE,EAAAhiB,EAAA,SAAA10C,OAAA,SACA00C,EAAA,SAAAv2E,MAAA,GAAAu2E,EAAA,SAEA,GAAAgiB,EAAA56F,QAAA,WACA46F,EAAA,IAAAA,CACA,CACA,OAAAl2F,KAAAzF,OAAA,CACA27F,WACAt3F,MAAAqsB,EAAAkmC,OAAAlmC,EAAAimC,WAAAgjB,IAAA9iB,UAEA,CACA,CAEA,OAAApxD,KAAAkxD,WAAAgjB,EACA,EAEAnjB,SAAA,SAAAn0D,EAAAE,GAGA,IAAA0xG,EAAA,uBACA,IAAAhzC,EAAA,GACA,IAAA/uD,EAAA,GAGA,GAAA3P,KAAA8yD,MAAAhzD,EAAAs5F,UAAAt5F,EAAAgC,MAAA,CAEA6N,EAAA7P,EAAAs5F,SAAArsE,UAAAjtB,EAAAs5F,SAAAkR,YAAA,QAEA5rC,EAAA5+D,EAAAs5F,SAAArsE,UAAA,EAAAjtB,EAAAs5F,SAAAkR,YAAA,QACA,IAAAn8E,EAAAjrB,KAAAgjC,OAAAv2B,GAEA,GAAAwe,EACAruB,EAAAquB,EAAA+lC,OAAAp0D,EAAAgC,MACA,CAGA,KAAAhC,aAAAoD,KAAAo2C,OAAAx5C,aAAAg/F,EAAA,CACA,IAAA1nB,EAAAt3E,EAAAq1D,MAAAlB,SAAAn0D,EAAAE,GACA,IAAA2xG,EAAA7xG,EAAAq1D,MAAA2/B,SAAA,SACAh1F,EAAAq1D,MAAA2/B,SAAAj0F,MAAA,GAAAf,EAAAq1D,MAAA2/B,SAEA,GAAAp2B,IAAA,IACAA,EAAAgzC,CACA,CACA/hG,EAAA+uD,EAAAizC,EACAv6B,EAAA,SAAAznE,EACA,OAAAynE,CACA,CAEA,OAAAl0E,KAAA+wD,SAAAn0D,EAAAE,EACA,E,iBCnGAzC,EAAAC,QAAAwhG,OAEA,IAAAt5D,EAAApoC,EAAA,MAEA,IAAA2hG,EAEA,IAAAoI,EAAA3hE,EAAA2hE,SACAhvC,EAAA3yB,EAAA2yB,OACA6G,EAAAx5B,EAAAw5B,KAWA,SAAA0yC,GAAAl0G,EAAA0hE,EAAA/5B,GAMAniC,KAAAxF,KAMAwF,KAAAk8D,MAMAl8D,KAAAsN,KAAAhJ,UAMAtE,KAAAmiC,KACA,CAGA,SAAAsV,OAAA,CAUA,SAAAk3D,MAAAjS,GAMA18F,KAAAwf,KAAAk9E,EAAAl9E,KAMAxf,KAAA4uG,KAAAlS,EAAAkS,KAMA5uG,KAAAk8D,IAAAwgC,EAAAxgC,IAMAl8D,KAAAsN,KAAAovF,EAAAmS,MACA,CAOA,SAAA/S,SAMA97F,KAAAk8D,IAAA,EAMAl8D,KAAAwf,KAAA,IAAAkvF,GAAAj3D,KAAA,KAMAz3C,KAAA4uG,KAAA5uG,KAAAwf,KAMAxf,KAAA6uG,OAAA,IAOA,CAEA,IAAAt0G,EAAA,SAAAA,SACA,OAAAioC,EAAA/5B,OACA,SAAA+7F,sBACA,OAAA1I,OAAAvhG,OAAA,SAAAkqG,gBACA,WAAA1I,CACA,IACA,EAEA,SAAAuI,eACA,WAAAxI,MACA,CACA,EAOAA,OAAAvhG,WAOAuhG,OAAA/2C,MAAA,SAAAA,MAAArxB,GACA,WAAA8O,EAAA9kC,MAAAg2B,EACA,EAIA,GAAA8O,EAAA9kC,cACAo+F,OAAA/2C,MAAAviB,EAAA6mB,KAAAyyC,OAAA/2C,MAAAviB,EAAA9kC,MAAAT,UAAAk3C,UAUA2nD,OAAA7+F,UAAA6xG,MAAA,SAAAvzG,KAAAf,EAAA0hE,EAAA/5B,GACAniC,KAAA4uG,KAAA5uG,KAAA4uG,KAAAthG,KAAA,IAAAohG,GAAAl0G,EAAA0hE,EAAA/5B,GACAniC,KAAAk8D,OACA,OAAAl8D,IACA,EAEA,SAAA+uG,UAAA5sE,EAAAu2B,EAAAC,GACAD,EAAAC,GAAAx2B,EAAA,GACA,CAEA,SAAA6sE,cAAA7sE,EAAAu2B,EAAAC,GACA,MAAAx2B,EAAA,KACAu2B,EAAAC,KAAAx2B,EAAA,QACAA,KAAA,CACA,CACAu2B,EAAAC,GAAAx2B,CACA,CAWA,SAAA8sE,SAAA/yC,EAAA/5B,GACAniC,KAAAk8D,MACAl8D,KAAAsN,KAAAhJ,UACAtE,KAAAmiC,KACA,CAEA8sE,SAAAhyG,UAAAD,OAAAzC,OAAAm0G,GAAAzxG,WACAgyG,SAAAhyG,UAAAzC,GAAAw0G,cAOAlT,OAAA7+F,UAAAynG,OAAA,SAAAwK,aAAAtwG,GAGAoB,KAAAk8D,MAAAl8D,KAAA4uG,KAAA5uG,KAAA4uG,KAAAthG,KAAA,IAAA2hG,UACArwG,MAAA,GACA,MACAA,EAAA,QACAA,EAAA,UACAA,EAAA,YACA,EACAA,IAAAs9D,IACA,OAAAl8D,IACA,EAQA87F,OAAA7+F,UAAA4nG,MAAA,SAAAsK,YAAAvwG,GACA,OAAAA,EAAA,EACAoB,KAAA8uG,MAAAM,cAAA,GAAAjL,EAAAnJ,WAAAp8F,IACAoB,KAAA0kG,OAAA9lG,EACA,EAOAk9F,OAAA7+F,UAAA8nG,OAAA,SAAAsK,aAAAzwG,GACA,OAAAoB,KAAA0kG,QAAA9lG,GAAA,EAAAA,GAAA,QACA,EAEA,SAAAwwG,cAAAjtE,EAAAu2B,EAAAC,GACA,MAAAx2B,EAAA+4B,GAAA,CACAxC,EAAAC,KAAAx2B,EAAA84B,GAAA,QACA94B,EAAA84B,IAAA94B,EAAA84B,KAAA,EAAA94B,EAAA+4B,IAAA,QACA/4B,EAAA+4B,MAAA,CACA,CACA,MAAA/4B,EAAA84B,GAAA,KACAvC,EAAAC,KAAAx2B,EAAA84B,GAAA,QACA94B,EAAA84B,GAAA94B,EAAA84B,KAAA,CACA,CACAvC,EAAAC,KAAAx2B,EAAA84B,EACA,CAQA6gC,OAAA7+F,UAAAopG,OAAA,SAAAiJ,aAAA1wG,GACA,IAAAsmG,EAAAf,EAAAllF,KAAArgB,GACA,OAAAoB,KAAA8uG,MAAAM,cAAAlK,EAAAtpG,SAAAspG,EACA,EASApJ,OAAA7+F,UAAAkpG,MAAArK,OAAA7+F,UAAAopG,OAQAvK,OAAA7+F,UAAAspG,OAAA,SAAAgJ,aAAA3wG,GACA,IAAAsmG,EAAAf,EAAAllF,KAAArgB,GAAAstG,WACA,OAAAlsG,KAAA8uG,MAAAM,cAAAlK,EAAAtpG,SAAAspG,EACA,EAOApJ,OAAA7+F,UAAA0sF,KAAA,SAAA6lB,WAAA5wG,GACA,OAAAoB,KAAA8uG,MAAAC,UAAA,EAAAnwG,EAAA,IACA,EAEA,SAAA6wG,aAAAttE,EAAAu2B,EAAAC,GACAD,EAAAC,GAAAx2B,EAAA,IACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,MACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,OACAu2B,EAAAC,EAAA,GAAAx2B,IAAA,EACA,CAOA25D,OAAA7+F,UAAAooG,QAAA,SAAAqK,cAAA9wG,GACA,OAAAoB,KAAA8uG,MAAAW,aAAA,EAAA7wG,IAAA,EACA,EAQAk9F,OAAA7+F,UAAAsoG,SAAAzJ,OAAA7+F,UAAAooG,QAQAvJ,OAAA7+F,UAAAypG,QAAA,SAAAiJ,cAAA/wG,GACA,IAAAsmG,EAAAf,EAAAllF,KAAArgB,GACA,OAAAoB,KAAA8uG,MAAAW,aAAA,EAAAvK,EAAAjqC,IAAA6zC,MAAAW,aAAA,EAAAvK,EAAAhqC,GACA,EASA4gC,OAAA7+F,UAAA2pG,SAAA9K,OAAA7+F,UAAAypG,QAQA5K,OAAA7+F,UAAAyoG,MAAA,SAAAkK,YAAAhxG,GACA,OAAAoB,KAAA8uG,MAAAtsE,EAAAkjE,MAAA7sC,aAAA,EAAAj6D,EACA,EAQAk9F,OAAA7+F,UAAA2oG,OAAA,SAAAiK,aAAAjxG,GACA,OAAAoB,KAAA8uG,MAAAtsE,EAAAkjE,MAAAnrC,cAAA,EAAA37D,EACA,EAEA,IAAAkxG,EAAAttE,EAAA9kC,MAAAT,UAAAzB,IACA,SAAAu0G,eAAA5tE,EAAAu2B,EAAAC,GACAD,EAAAl9D,IAAA2mC,EAAAw2B,EACA,EAEA,SAAAq3C,eAAA7tE,EAAAu2B,EAAAC,GACA,QAAAh9D,EAAA,EAAAA,EAAAwmC,EAAAvmC,SAAAD,EACA+8D,EAAAC,EAAAh9D,GAAAwmC,EAAAxmC,EACA,EAOAmgG,OAAA7+F,UAAAwyD,MAAA,SAAAwgD,YAAArxG,GACA,IAAAs9D,EAAAt9D,EAAAhD,SAAA,EACA,IAAAsgE,EACA,OAAAl8D,KAAA8uG,MAAAC,UAAA,KACA,GAAAvsE,EAAA43D,SAAAx7F,GAAA,CACA,IAAA85D,EAAAojC,OAAA/2C,MAAAmX,EAAA/G,EAAAv5D,OAAAgD,IACAu2D,EAAAnE,OAAApyD,EAAA85D,EAAA,GACA95D,EAAA85D,CACA,CACA,OAAA14D,KAAA0kG,OAAAxoC,GAAA4yC,MAAAgB,EAAA5zC,EAAAt9D,EACA,EAOAk9F,OAAA7+F,UAAAm4D,OAAA,SAAA86C,aAAAtxG,GACA,IAAAs9D,EAAAF,EAAApgE,OAAAgD,GACA,OAAAs9D,EACAl8D,KAAA0kG,OAAAxoC,GAAA4yC,MAAA9yC,EAAAv/D,MAAAy/D,EAAAt9D,GACAoB,KAAA8uG,MAAAC,UAAA,IACA,EAOAjT,OAAA7+F,UAAAmuG,KAAA,SAAAA,OACAprG,KAAA6uG,OAAA,IAAAF,MAAA3uG,MACAA,KAAAwf,KAAAxf,KAAA4uG,KAAA,IAAAF,GAAAj3D,KAAA,KACAz3C,KAAAk8D,IAAA,EACA,OAAAl8D,IACA,EAMA87F,OAAA7+F,UAAAwE,MAAA,SAAAA,QACA,GAAAzB,KAAA6uG,OAAA,CACA7uG,KAAAwf,KAAAxf,KAAA6uG,OAAArvF,KACAxf,KAAA4uG,KAAA5uG,KAAA6uG,OAAAD,KACA5uG,KAAAk8D,IAAAl8D,KAAA6uG,OAAA3yC,IACAl8D,KAAA6uG,OAAA7uG,KAAA6uG,OAAAvhG,IACA,MACAtN,KAAAwf,KAAAxf,KAAA4uG,KAAA,IAAAF,GAAAj3D,KAAA,KACAz3C,KAAAk8D,IAAA,CACA,CACA,OAAAl8D,IACA,EAMA87F,OAAA7+F,UAAAouG,OAAA,SAAAA,SACA,IAAA7rF,EAAAxf,KAAAwf,KACAovF,EAAA5uG,KAAA4uG,KACA1yC,EAAAl8D,KAAAk8D,IACAl8D,KAAAyB,QAAAijG,OAAAxoC,GACA,GAAAA,EAAA,CACAl8D,KAAA4uG,KAAAthG,KAAAkS,EAAAlS,KACAtN,KAAA4uG,OACA5uG,KAAAk8D,MACA,CACA,OAAAl8D,IACA,EAMA87F,OAAA7+F,UAAAm0D,OAAA,SAAAA,SACA,IAAA5xC,EAAAxf,KAAAwf,KAAAlS,KACAorD,EAAA14D,KAAAF,YAAAilD,MAAA/kD,KAAAk8D,KACAvD,EAAA,EACA,MAAAn5C,EAAA,CACAA,EAAAhlB,GAAAglB,EAAA2iB,IAAAu2B,EAAAC,GACAA,GAAAn5C,EAAA08C,IACA18C,IAAAlS,IACA,CAEA,OAAAorD,CACA,EAEAojC,OAAAL,WAAA,SAAA0U,GACApU,EAAAoU,EACArU,OAAAvhG,WACAwhG,EAAAN,YACA,C,iBC/cAphG,EAAAC,QAAAyhG,aAGA,IAAAD,EAAA1hG,EAAA,OACA2hG,aAAA9+F,UAAAD,OAAAzC,OAAAuhG,EAAA7+F,YAAA6C,YAAAi8F,aAEA,IAAAv5D,EAAApoC,EAAA,MAQA,SAAA2hG,eACAD,EAAA1+F,KAAA4C,KACA,CAEA+7F,aAAAN,WAAA,WAOAM,aAAAh3C,MAAAviB,EAAAyqE,oBAEAlR,aAAAqU,iBAAA5tE,EAAA/5B,QAAA+5B,EAAA/5B,OAAAxL,qBAAAg7D,YAAAz1B,EAAA/5B,OAAAxL,UAAAzB,IAAAiR,OAAA,MACA,SAAA4jG,qBAAAluE,EAAAu2B,EAAAC,GACAD,EAAAl9D,IAAA2mC,EAAAw2B,EAEA,EAEA,SAAA23C,sBAAAnuE,EAAAu2B,EAAAC,GACA,GAAAx2B,EAAArtB,KACAqtB,EAAArtB,KAAA4jD,EAAAC,EAAA,EAAAx2B,EAAAvmC,aACA,QAAAD,EAAA,EAAAA,EAAAwmC,EAAAvmC,QACA88D,EAAAC,KAAAx2B,EAAAxmC,IACA,CACA,EAMAogG,aAAA9+F,UAAAwyD,MAAA,SAAA8gD,mBAAA3xG,GACA,GAAA4jC,EAAA43D,SAAAx7F,GACAA,EAAA4jC,EAAAwqE,aAAApuG,EAAA,UACA,IAAAs9D,EAAAt9D,EAAAhD,SAAA,EACAoE,KAAA0kG,OAAAxoC,GACA,GAAAA,EACAl8D,KAAA8uG,MAAA/S,aAAAqU,iBAAAl0C,EAAAt9D,GACA,OAAAoB,IACA,EAEA,SAAAwwG,kBAAAruE,EAAAu2B,EAAAC,GACA,GAAAx2B,EAAAvmC,OAAA,GACA4mC,EAAAw5B,KAAAv/D,MAAA0lC,EAAAu2B,EAAAC,QACA,GAAAD,EAAAq0C,UACAr0C,EAAAq0C,UAAA5qE,EAAAw2B,QAEAD,EAAAj8D,MAAA0lC,EAAAw2B,EACA,CAKAojC,aAAA9+F,UAAAm4D,OAAA,SAAAq7C,oBAAA7xG,GACA,IAAAs9D,EAAA15B,EAAA/5B,OAAAyrC,WAAAt1C,GACAoB,KAAA0kG,OAAAxoC,GACA,GAAAA,EACAl8D,KAAA8uG,MAAA0B,kBAAAt0C,EAAAt9D,GACA,OAAAoB,IACA,EAUA+7F,aAAAN,Y,iBCnFA,IAAAlmC,EAAAn7D,EAAA,MACA,IAAAqO,EAAA8sD,EAAA9sD,OAGA,SAAAioG,UAAAhD,EAAA3B,GACA,QAAA5uG,KAAAuwG,EAAA,CACA3B,EAAA5uG,GAAAuwG,EAAAvwG,EACA,CACA,CACA,GAAAsL,EAAAwW,MAAAxW,EAAAs8C,OAAAt8C,EAAAkM,aAAAlM,EAAAkoG,gBAAA,CACAt2G,EAAAC,QAAAi7D,CACA,MAEAm7C,UAAAn7C,EAAAj7D,GACAA,EAAAmO,OAAAmoG,UACA,CAEA,SAAAA,WAAAp/F,EAAAq/F,EAAAj1G,GACA,OAAA6M,EAAA+I,EAAAq/F,EAAAj1G,EACA,CAGA80G,UAAAjoG,EAAAmoG,YAEAA,WAAA3xF,KAAA,SAAAzN,EAAAq/F,EAAAj1G,GACA,UAAA4V,IAAA,UACA,UAAA9I,UAAA,gCACA,CACA,OAAAD,EAAA+I,EAAAq/F,EAAAj1G,EACA,EAEAg1G,WAAA7rD,MAAA,SAAArxB,EAAA8xB,EAAAh+C,GACA,UAAAksB,IAAA,UACA,UAAAhrB,UAAA,4BACA,CACA,IAAAgwD,EAAAjwD,EAAAirB,GACA,GAAA8xB,IAAAlhD,UAAA,CACA,UAAAkD,IAAA,UACAkxD,EAAAlT,OAAAh+C,EACA,MACAkxD,EAAAlT,OACA,CACA,MACAkT,EAAAlT,KAAA,EACA,CACA,OAAAkT,CACA,EAEAk4C,WAAAj8F,YAAA,SAAA+e,GACA,UAAAA,IAAA,UACA,UAAAhrB,UAAA,4BACA,CACA,OAAAD,EAAAirB,EACA,EAEAk9E,WAAAD,gBAAA,SAAAj9E,GACA,UAAAA,IAAA,UACA,UAAAhrB,UAAA,4BACA,CACA,OAAA6sD,EAAAu7C,WAAAp9E,EACA,C,eC3DA,MAAAx2B,kBAAAF,OAAAC,UAEA,MAAA0sB,EAAAm8D,YAGAn8D,EAAAm8D,oBAEAn8D,cAGAA,EAAAqzC,QAAArzC,EAGArvB,EAAAqvB,YAEArvB,EAAAwrF,oBAEAzrF,EAAAC,QAAAqvB,EAGA,MAAAonF,EAAA,oHAIA,SAAAC,UAAA79B,GAEA,GAAAA,EAAAv3E,OAAA,MAAAm1G,EAAAnwE,KAAAuyC,GAAA,CACA,UAAAA,IACA,CACA,OAAAzpD,KAAAC,UAAAwpD,EACA,CAEA,SAAA89B,WAAAh9B,GAGA,GAAAA,EAAAr4E,OAAA,KACA,OAAAq4E,EAAAvpE,MACA,CACA,QAAA/O,EAAA,EAAAA,EAAAs4E,EAAAr4E,OAAAD,IAAA,CACA,MAAAg1D,EAAAsjB,EAAAt4E,GACA,IAAAu1G,EAAAv1G,EACA,MAAAu1G,IAAA,GAAAj9B,EAAAi9B,EAAA,GAAAvgD,EAAA,CACAsjB,EAAAi9B,GAAAj9B,EAAAi9B,EAAA,GACAA,GACA,CACAj9B,EAAAi9B,GAAAvgD,CACA,CACA,OAAAsjB,CACA,CAEA,MAAAk9B,EACAn0G,OAAA65C,yBACA75C,OAAAo0G,eACAp0G,OAAAo0G,eACA,IAAAC,YAGAlgG,OAAAwxD,aACA5rD,IAEA,SAAAu6F,wBAAA1yG,GACA,OAAAuyG,EAAA/zG,KAAAwB,KAAA0F,WAAA1F,EAAAhD,SAAA,CACA,CAEA,SAAA21G,oBAAAt9B,EAAAu9B,EAAAC,GACA,GAAAx9B,EAAAr4E,OAAA61G,EAAA,CACAA,EAAAx9B,EAAAr4E,MACA,CACA,MAAA81G,EAAAF,IAAA,WACA,IAAAlyF,EAAA,OAAAoyF,IAAAz9B,EAAA,KACA,QAAAt4E,EAAA,EAAAA,EAAA81G,EAAA91G,IAAA,CACA2jB,GAAA,GAAAkyF,KAAA71G,MAAA+1G,IAAAz9B,EAAAt4E,IACA,CACA,OAAA2jB,CACA,CAEA,SAAAqyF,uBAAA70G,GACA,GAAAI,EAAAE,KAAAN,EAAA,kBACA,MAAA80G,EAAA90G,EAAA80G,cACA,UAAAA,IAAA,UACA,UAAAA,IACA,CACA,GAAAA,GAAA,MACA,OAAAA,CACA,CACA,GAAAA,IAAA5uG,OAAA4uG,IAAAlpG,UAAA,CACA,OACA,QAAAwW,GACA,UAAAxW,UAAA,wCACA,EAEA,CACA,UAAAA,UAAA,qFACA,CACA,oBACA,CAEA,SAAAmpG,iBAAA/0G,EAAAK,GACA,IAAAyB,EACA,GAAA1B,EAAAE,KAAAN,EAAAK,GAAA,CACAyB,EAAA9B,EAAAK,GACA,UAAAyB,IAAA,WACA,UAAA8J,UAAA,QAAAvL,sCACA,CACA,CACA,OAAAyB,IAAA0F,UAAA,KAAA1F,CACA,CAEA,SAAAkzG,yBAAAh1G,EAAAK,GACA,IAAAyB,EACA,GAAA1B,EAAAE,KAAAN,EAAAK,GAAA,CACAyB,EAAA9B,EAAAK,GACA,UAAAyB,IAAA,UACA,UAAA8J,UAAA,QAAAvL,qCACA,CACA,IAAAyK,OAAA2mC,UAAA3vC,GAAA,CACA,UAAA8J,UAAA,QAAAvL,iCACA,CACA,GAAAyB,EAAA,GACA,UAAA4hE,WAAA,QAAArjE,2BACA,CACA,CACA,OAAAyB,IAAA0F,UAAAqK,SAAA/P,CACA,CAEA,SAAAmzG,aAAAxe,GACA,GAAAA,IAAA,GACA,cACA,CACA,SAAAA,SACA,CAEA,SAAAye,qBAAAC,GACA,MAAAC,EAAA,IAAApsF,IACA,UAAAlnB,KAAAqzG,EAAA,CACA,UAAArzG,IAAA,iBAAAA,IAAA,UACAszG,EAAA9uG,IAAAwV,OAAAha,GACA,CACA,CACA,OAAAszG,CACA,CAEA,SAAAC,gBAAAr1G,GACA,GAAAI,EAAAE,KAAAN,EAAA,WACA,MAAA8B,EAAA9B,EAAAs1G,OACA,UAAAxzG,IAAA,WACA,UAAA8J,UAAA,gDACA,CACA,GAAA9J,EAAA,CACA,OAAAA,IACA,IAAAhC,EAAA,8DAAAgC,IACA,UAAAA,IAAA,WAAAhC,GAAA,KAAAgC,EAAAsgB,cACA,UAAAlc,MAAApG,EAAA,CAEA,CACA,CACA,CAEA,SAAAkpF,UAAAhpF,GACAA,EAAA,IAAAA,GACA,MAAAu1G,EAAAF,gBAAAr1G,GACA,GAAAu1G,EAAA,CACA,GAAAv1G,EAAAw1G,SAAAhuG,UAAA,CACAxH,EAAAw1G,OAAA,KACA,CACA,uBAAAx1G,GAAA,CACAA,EAAA80G,cAAA5uG,KACA,CACA,CACA,MAAA4uG,EAAAD,uBAAA70G,GACA,MAAAw1G,EAAAT,iBAAA/0G,EAAA,UACA,MAAAy1G,EAAAV,iBAAA/0G,EAAA,iBACA,MAAA01G,EAAAV,yBAAAh1G,EAAA,gBACA,MAAA20G,EAAAK,yBAAAh1G,EAAA,kBAEA,SAAA21G,oBAAAt1G,EAAAyR,EAAArI,EAAAq/E,EAAA8sB,EAAAC,GACA,IAAA/zG,EAAAgQ,EAAAzR,GAEA,UAAAyB,IAAA,UAAAA,IAAA,aAAAA,EAAAojC,SAAA,YACApjC,IAAAojC,OAAA7kC,EACA,CACAyB,EAAAgnF,EAAAxoF,KAAAwR,EAAAzR,EAAAyB,GAEA,cAAAA,GACA,aACA,OAAAoyG,UAAApyG,GACA,cACA,GAAAA,IAAA,MACA,YACA,CACA,GAAA2H,EAAAjL,QAAAsD,MAAA,GACA,OAAAgzG,CACA,CAEA,IAAAtyF,EAAA,GACA,IAAA3N,EAAA,IACA,MAAAihG,EAAAD,EAEA,GAAAj1G,MAAAwzB,QAAAtyB,GAAA,CACA,GAAAA,EAAAhD,SAAA,GACA,UACA,CACA,GAAA42G,EAAAjsG,EAAA3K,OAAA,GACA,iBACA,CACA2K,EAAAhL,KAAAqD,GACA,GAAA8zG,IAAA,IACAC,GAAAD,EACApzF,GAAA,KAAAqzF,IACAhhG,EAAA,MAAAghG,GACA,CACA,MAAAE,EAAAjzG,KAAAF,IAAAd,EAAAhD,OAAA61G,GACA,IAAA91G,EAAA,EACA,KAAAA,EAAAk3G,EAAA,EAAAl3G,IAAA,CACA,MAAAm3G,EAAAL,oBAAA75F,OAAAjd,GAAAiD,EAAA2H,EAAAq/E,EAAA8sB,EAAAC,GACArzF,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACAxzF,GAAA3N,CACA,CACA,MAAAmhG,EAAAL,oBAAA75F,OAAAjd,GAAAiD,EAAA2H,EAAAq/E,EAAA8sB,EAAAC,GACArzF,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACA,GAAAl0G,EAAAhD,OAAA,EAAA61G,EAAA,CACA,MAAAsB,EAAAn0G,EAAAhD,OAAA61G,EAAA,EACAnyF,GAAA,GAAA3N,SAAAogG,aAAAgB,qBACA,CACA,GAAAL,IAAA,IACApzF,GAAA,KAAAszF,GACA,CACArsG,EAAA22D,MACA,UAAA59C,IACA,CAEA,IAAAnc,EAAAnG,OAAAmG,KAAAvE,GACA,MAAAo0G,EAAA7vG,EAAAvH,OACA,GAAAo3G,IAAA,GACA,UACA,CACA,GAAAR,EAAAjsG,EAAA3K,OAAA,GACA,kBACA,CACA,IAAA81G,EAAA,GACA,IAAAF,EAAA,GACA,GAAAkB,IAAA,IACAC,GAAAD,EACA/gG,EAAA,MAAAghG,IACAjB,EAAA,GACA,CACA,MAAAuB,EAAArzG,KAAAF,IAAAszG,EAAAvB,GACA,GAAAc,IAAAjB,wBAAA1yG,GAAA,CACAuE,EAAA8tG,WAAA9tG,EACA,CACAoD,EAAAhL,KAAAqD,GACA,QAAAjD,EAAA,EAAAA,EAAAs3G,EAAAt3G,IAAA,CACA,MAAAwB,EAAAgG,EAAAxH,GACA,MAAAm3G,EAAAL,oBAAAt1G,EAAAyB,EAAA2H,EAAAq/E,EAAA8sB,EAAAC,GACA,GAAAG,IAAAxuG,UAAA,CACAgb,GAAA,GAAAkyF,IAAAR,UAAA7zG,MAAAu0G,IAAAoB,IACAtB,EAAA7/F,CACA,CACA,CACA,GAAAqhG,EAAAvB,EAAA,CACA,MAAAsB,EAAAC,EAAAvB,EACAnyF,GAAA,GAAAkyF,UAAAE,KAAAK,aAAAgB,sBACAvB,EAAA7/F,CACA,CACA,GAAA+gG,IAAA,IAAAlB,EAAA51G,OAAA,GACA0jB,EAAA,KAAAqzF,IAAArzF,MAAAszF,GACA,CACArsG,EAAA22D,MACA,UAAA59C,IACA,CACA,aACA,OAAA0wE,SAAApxF,GAAAga,OAAAha,GAAAyzG,IAAAzzG,GAAA,OACA,cACA,OAAAA,IAAA,oBACA,gBACA,OAAA0F,UACA,aACA,GAAAguG,EAAA,CACA,OAAA15F,OAAAha,EACA,CAEA,QACA,OAAAyzG,IAAAzzG,GAAA0F,UAEA,CAEA,SAAA4uG,uBAAA/1G,EAAAyB,EAAA2H,EAAAq/E,EAAA8sB,EAAAC,GACA,UAAA/zG,IAAA,UAAAA,IAAA,aAAAA,EAAAojC,SAAA,YACApjC,IAAAojC,OAAA7kC,EACA,CAEA,cAAAyB,GACA,aACA,OAAAoyG,UAAApyG,GACA,cACA,GAAAA,IAAA,MACA,YACA,CACA,GAAA2H,EAAAjL,QAAAsD,MAAA,GACA,OAAAgzG,CACA,CAEA,MAAAgB,EAAAD,EACA,IAAArzF,EAAA,GACA,IAAA3N,EAAA,IAEA,GAAAjU,MAAAwzB,QAAAtyB,GAAA,CACA,GAAAA,EAAAhD,SAAA,GACA,UACA,CACA,GAAA42G,EAAAjsG,EAAA3K,OAAA,GACA,iBACA,CACA2K,EAAAhL,KAAAqD,GACA,GAAA8zG,IAAA,IACAC,GAAAD,EACApzF,GAAA,KAAAqzF,IACAhhG,EAAA,MAAAghG,GACA,CACA,MAAAE,EAAAjzG,KAAAF,IAAAd,EAAAhD,OAAA61G,GACA,IAAA91G,EAAA,EACA,KAAAA,EAAAk3G,EAAA,EAAAl3G,IAAA,CACA,MAAAm3G,EAAAI,uBAAAt6F,OAAAjd,GAAAiD,EAAAjD,GAAA4K,EAAAq/E,EAAA8sB,EAAAC,GACArzF,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACAxzF,GAAA3N,CACA,CACA,MAAAmhG,EAAAI,uBAAAt6F,OAAAjd,GAAAiD,EAAAjD,GAAA4K,EAAAq/E,EAAA8sB,EAAAC,GACArzF,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACA,GAAAl0G,EAAAhD,OAAA,EAAA61G,EAAA,CACA,MAAAsB,EAAAn0G,EAAAhD,OAAA61G,EAAA,EACAnyF,GAAA,GAAA3N,SAAAogG,aAAAgB,qBACA,CACA,GAAAL,IAAA,IACApzF,GAAA,KAAAszF,GACA,CACArsG,EAAA22D,MACA,UAAA59C,IACA,CACA/Y,EAAAhL,KAAAqD,GACA,IAAA8yG,EAAA,GACA,GAAAgB,IAAA,IACAC,GAAAD,EACA/gG,EAAA,MAAAghG,IACAjB,EAAA,GACA,CACA,IAAAF,EAAA,GACA,UAAAr0G,KAAAyoF,EAAA,CACA,MAAAktB,EAAAI,uBAAA/1G,EAAAyB,EAAAzB,GAAAoJ,EAAAq/E,EAAA8sB,EAAAC,GACA,GAAAG,IAAAxuG,UAAA,CACAgb,GAAA,GAAAkyF,IAAAR,UAAA7zG,MAAAu0G,IAAAoB,IACAtB,EAAA7/F,CACA,CACA,CACA,GAAA+gG,IAAA,IAAAlB,EAAA51G,OAAA,GACA0jB,EAAA,KAAAqzF,IAAArzF,MAAAszF,GACA,CACArsG,EAAA22D,MACA,UAAA59C,IACA,CACA,aACA,OAAA0wE,SAAApxF,GAAAga,OAAAha,GAAAyzG,IAAAzzG,GAAA,OACA,cACA,OAAAA,IAAA,oBACA,gBACA,OAAA0F,UACA,aACA,GAAAguG,EAAA,CACA,OAAA15F,OAAAha,EACA,CAEA,QACA,OAAAyzG,IAAAzzG,GAAA0F,UAEA,CAEA,SAAA6uG,gBAAAh2G,EAAAyB,EAAA2H,EAAAmsG,EAAAC,GACA,cAAA/zG,GACA,aACA,OAAAoyG,UAAApyG,GACA,cACA,GAAAA,IAAA,MACA,YACA,CACA,UAAAA,EAAAojC,SAAA,YACApjC,IAAAojC,OAAA7kC,GAEA,UAAAyB,IAAA,UACA,OAAAu0G,gBAAAh2G,EAAAyB,EAAA2H,EAAAmsG,EAAAC,EACA,CACA,GAAA/zG,IAAA,MACA,YACA,CACA,CACA,GAAA2H,EAAAjL,QAAAsD,MAAA,GACA,OAAAgzG,CACA,CACA,MAAAgB,EAAAD,EAEA,GAAAj1G,MAAAwzB,QAAAtyB,GAAA,CACA,GAAAA,EAAAhD,SAAA,GACA,UACA,CACA,GAAA42G,EAAAjsG,EAAA3K,OAAA,GACA,iBACA,CACA2K,EAAAhL,KAAAqD,GACA+zG,GAAAD,EACA,IAAApzF,EAAA,KAAAqzF,IACA,MAAAhhG,EAAA,MAAAghG,IACA,MAAAE,EAAAjzG,KAAAF,IAAAd,EAAAhD,OAAA61G,GACA,IAAA91G,EAAA,EACA,KAAAA,EAAAk3G,EAAA,EAAAl3G,IAAA,CACA,MAAAm3G,EAAAK,gBAAAv6F,OAAAjd,GAAAiD,EAAAjD,GAAA4K,EAAAmsG,EAAAC,GACArzF,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACAxzF,GAAA3N,CACA,CACA,MAAAmhG,EAAAK,gBAAAv6F,OAAAjd,GAAAiD,EAAAjD,GAAA4K,EAAAmsG,EAAAC,GACArzF,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACA,GAAAl0G,EAAAhD,OAAA,EAAA61G,EAAA,CACA,MAAAsB,EAAAn0G,EAAAhD,OAAA61G,EAAA,EACAnyF,GAAA,GAAA3N,SAAAogG,aAAAgB,qBACA,CACAzzF,GAAA,KAAAszF,IACArsG,EAAA22D,MACA,UAAA59C,IACA,CAEA,IAAAnc,EAAAnG,OAAAmG,KAAAvE,GACA,MAAAo0G,EAAA7vG,EAAAvH,OACA,GAAAo3G,IAAA,GACA,UACA,CACA,GAAAR,EAAAjsG,EAAA3K,OAAA,GACA,kBACA,CACA+2G,GAAAD,EACA,MAAA/gG,EAAA,MAAAghG,IACA,IAAArzF,EAAA,GACA,IAAAkyF,EAAA,GACA,IAAAyB,EAAArzG,KAAAF,IAAAszG,EAAAvB,GACA,GAAAH,wBAAA1yG,GAAA,CACA0gB,GAAAiyF,oBAAA3yG,EAAA+S,EAAA8/F,GACAtuG,IAAAxF,MAAAiB,EAAAhD,QACAq3G,GAAAr0G,EAAAhD,OACA41G,EAAA7/F,CACA,CACA,GAAA4gG,EAAA,CACApvG,EAAA8tG,WAAA9tG,EACA,CACAoD,EAAAhL,KAAAqD,GACA,QAAAjD,EAAA,EAAAA,EAAAs3G,EAAAt3G,IAAA,CACA,MAAAwB,EAAAgG,EAAAxH,GACA,MAAAm3G,EAAAK,gBAAAh2G,EAAAyB,EAAAzB,GAAAoJ,EAAAmsG,EAAAC,GACA,GAAAG,IAAAxuG,UAAA,CACAgb,GAAA,GAAAkyF,IAAAR,UAAA7zG,OAAA21G,IACAtB,EAAA7/F,CACA,CACA,CACA,GAAAqhG,EAAAvB,EAAA,CACA,MAAAsB,EAAAC,EAAAvB,EACAnyF,GAAA,GAAAkyF,YAAAO,aAAAgB,sBACAvB,EAAA7/F,CACA,CACA,GAAA6/F,IAAA,IACAlyF,EAAA,KAAAqzF,IAAArzF,MAAAszF,GACA,CACArsG,EAAA22D,MACA,UAAA59C,IACA,CACA,aACA,OAAA0wE,SAAApxF,GAAAga,OAAAha,GAAAyzG,IAAAzzG,GAAA,OACA,cACA,OAAAA,IAAA,oBACA,gBACA,OAAA0F,UACA,aACA,GAAAguG,EAAA,CACA,OAAA15F,OAAAha,EACA,CAEA,QACA,OAAAyzG,IAAAzzG,GAAA0F,UAEA,CAEA,SAAA8uG,gBAAAj2G,EAAAyB,EAAA2H,GACA,cAAA3H,GACA,aACA,OAAAoyG,UAAApyG,GACA,cACA,GAAAA,IAAA,MACA,YACA,CACA,UAAAA,EAAAojC,SAAA,YACApjC,IAAAojC,OAAA7kC,GAEA,UAAAyB,IAAA,UACA,OAAAw0G,gBAAAj2G,EAAAyB,EAAA2H,EACA,CACA,GAAA3H,IAAA,MACA,YACA,CACA,CACA,GAAA2H,EAAAjL,QAAAsD,MAAA,GACA,OAAAgzG,CACA,CAEA,IAAAtyF,EAAA,GAEA,GAAA5hB,MAAAwzB,QAAAtyB,GAAA,CACA,GAAAA,EAAAhD,SAAA,GACA,UACA,CACA,GAAA42G,EAAAjsG,EAAA3K,OAAA,GACA,iBACA,CACA2K,EAAAhL,KAAAqD,GACA,MAAAi0G,EAAAjzG,KAAAF,IAAAd,EAAAhD,OAAA61G,GACA,IAAA91G,EAAA,EACA,KAAAA,EAAAk3G,EAAA,EAAAl3G,IAAA,CACA,MAAAm3G,EAAAM,gBAAAx6F,OAAAjd,GAAAiD,EAAAjD,GAAA4K,GACA+Y,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACAxzF,GAAA,GACA,CACA,MAAAwzF,EAAAM,gBAAAx6F,OAAAjd,GAAAiD,EAAAjD,GAAA4K,GACA+Y,GAAAwzF,IAAAxuG,UAAAwuG,EAAA,OACA,GAAAl0G,EAAAhD,OAAA,EAAA61G,EAAA,CACA,MAAAsB,EAAAn0G,EAAAhD,OAAA61G,EAAA,EACAnyF,GAAA,SAAAyyF,aAAAgB,qBACA,CACAxsG,EAAA22D,MACA,UAAA59C,IACA,CAEA,IAAAnc,EAAAnG,OAAAmG,KAAAvE,GACA,MAAAo0G,EAAA7vG,EAAAvH,OACA,GAAAo3G,IAAA,GACA,UACA,CACA,GAAAR,EAAAjsG,EAAA3K,OAAA,GACA,kBACA,CACA,IAAA41G,EAAA,GACA,IAAAyB,EAAArzG,KAAAF,IAAAszG,EAAAvB,GACA,GAAAH,wBAAA1yG,GAAA,CACA0gB,GAAAiyF,oBAAA3yG,EAAA,IAAA6yG,GACAtuG,IAAAxF,MAAAiB,EAAAhD,QACAq3G,GAAAr0G,EAAAhD,OACA41G,EAAA,GACA,CACA,GAAAe,EAAA,CACApvG,EAAA8tG,WAAA9tG,EACA,CACAoD,EAAAhL,KAAAqD,GACA,QAAAjD,EAAA,EAAAA,EAAAs3G,EAAAt3G,IAAA,CACA,MAAAwB,EAAAgG,EAAAxH,GACA,MAAAm3G,EAAAM,gBAAAj2G,EAAAyB,EAAAzB,GAAAoJ,GACA,GAAAusG,IAAAxuG,UAAA,CACAgb,GAAA,GAAAkyF,IAAAR,UAAA7zG,MAAA21G,IACAtB,EAAA,GACA,CACA,CACA,GAAAwB,EAAAvB,EAAA,CACA,MAAAsB,EAAAC,EAAAvB,EACAnyF,GAAA,GAAAkyF,WAAAO,aAAAgB,qBACA,CACAxsG,EAAA22D,MACA,UAAA59C,IACA,CACA,aACA,OAAA0wE,SAAApxF,GAAAga,OAAAha,GAAAyzG,IAAAzzG,GAAA,OACA,cACA,OAAAA,IAAA,oBACA,gBACA,OAAA0F,UACA,aACA,GAAAguG,EAAA,CACA,OAAA15F,OAAAha,EACA,CAEA,QACA,OAAAyzG,IAAAzzG,GAAA0F,UAEA,CAEA,SAAAqlB,UAAA/qB,EAAAgnF,EAAAG,GACA,GAAAppF,UAAAf,OAAA,GACA,IAAA82G,EAAA,GACA,UAAA3sB,IAAA,UACA2sB,EAAA,IAAA9jB,OAAAhvF,KAAAF,IAAAqmF,EAAA,IACA,gBAAAA,IAAA,UACA2sB,EAAA3sB,EAAApoF,MAAA,KACA,CACA,GAAAioF,GAAA,MACA,UAAAA,IAAA,YACA,OAAA6sB,oBAAA,OAAA7zG,GAAA,GAAAgnF,EAAA8sB,EAAA,GACA,CACA,GAAAh1G,MAAAwzB,QAAA00D,GAAA,CACA,OAAAstB,uBAAA,GAAAt0G,EAAA,GAAAozG,qBAAApsB,GAAA8sB,EAAA,GACA,CACA,CACA,GAAAA,EAAA92G,SAAA,GACA,OAAAu3G,gBAAA,GAAAv0G,EAAA,GAAA8zG,EAAA,GACA,CACA,CACA,OAAAU,gBAAA,GAAAx0G,EAAA,GACA,CAEA,OAAA+qB,SACA,C,iBCjmBA,IAAA0pF,EAAAj5G,EAAA,MAEA,IAAA8J,EAAAxG,MAAAT,UAAAiH,OACA,IAAAvG,EAAAD,MAAAT,UAAAU,MAEA,IAAAy0E,EAAA/3E,EAAAC,QAAA,SAAA83E,QAAA30E,GACA,IAAAqkE,EAAA,GAEA,QAAAnmE,EAAA,EAAAugE,EAAAz+D,EAAA7B,OAAAD,EAAAugE,EAAAvgE,IAAA,CACA,IAAA6V,EAAA/T,EAAA9B,GAEA,GAAA03G,EAAA7hG,GAAA,CAEAswD,EAAA59D,EAAA9G,KAAA0kE,EAAAnkE,EAAAP,KAAAoU,GACA,MACAswD,EAAAvmE,KAAAiW,EACA,CACA,CAEA,OAAAswD,CACA,EAEAsQ,EAAAlQ,KAAA,SAAA1nE,GACA,kBACA,OAAAA,EAAA43E,EAAAz1E,WACA,CACA,C,WC5BAtC,EAAAC,QAAA,SAAA+4G,WAAA9qG,GACA,IAAAA,cAAA,UACA,YACA,CAEA,OAAAA,aAAA7K,aAAAwzB,QAAA3oB,IACAA,EAAA3M,QAAA,IAAA2M,EAAAiiB,kBAAA1sB,UACAd,OAAA65C,yBAAAtuC,IAAA3M,OAAA,IAAA2M,EAAAzI,YAAA2M,OAAA,SACA,C,eCRAnS,EAAAyc,IAAA,SAAAu8F,GACA,IAAAC,EAAAvwG,MAAAwwG,gBACAxwG,MAAAwwG,gBAAA7kG,SAEA,IAAA8kG,EAAA,GAEA,IAAAC,EAAA1wG,MAAA2wG,kBACA3wG,MAAA2wG,kBAAA,SAAAF,EAAAG,GACA,OAAAA,CACA,EACA5wG,MAAA0J,kBAAA+mG,EAAAH,GAAAh5G,EAAAyc,KAEA,IAAA68F,EAAAH,EAAAltG,MACAvD,MAAA2wG,kBAAAD,EACA1wG,MAAAwwG,gBAAAD,EAEA,OAAAK,CACA,EAEAt5G,EAAA8tC,MAAA,SAAAtlC,GACA,IAAAA,EAAAyD,MAAA,CACA,QACA,CAEA,IAAAwtE,EAAA/zE,KACA,IAAAgqG,EAAAlnG,EAAAyD,MAAAmL,MAAA,MAAA/T,MAAA,GAEA,OAAAqsG,EACA/tG,KAAA,SAAA2kG,GACA,GAAAA,EAAAjtD,MAAA,iBACA,OAAAogC,EAAA8/B,sBAAA,CACAC,SAAAlT,EACAmT,WAAA,KACA/9C,aAAA,KACAh7B,SAAA,KACAS,WAAA,KACAu4E,aAAA,KACAC,OAAA,MAEA,CAEA,IAAAC,EAAAtT,EAAAjtD,MAAA,0DACA,IAAAugE,EAAA,CACA,MACA,CAEA,IAAAhgC,EAAA,KACA,IAAAtoE,EAAA,KACA,IAAAoqD,EAAA,KACA,IAAAh7B,EAAA,KACA,IAAAS,EAAA,KACA,IAAA04E,EAAAD,EAAA,cAEA,GAAAA,EAAA,IACAl+C,EAAAk+C,EAAA,GACA,IAAAE,EAAAp+C,EAAAoxC,YAAA,KACA,GAAApxC,EAAAo+C,EAAA,QACAA,IACA,GAAAA,EAAA,GACAlgC,EAAAle,EAAAmhB,OAAA,EAAAi9B,GACAxoG,EAAAoqD,EAAAmhB,OAAAi9B,EAAA,GACA,IAAAC,EAAAngC,EAAA54E,QAAA,WACA,GAAA+4G,EAAA,GACAr+C,IAAAmhB,OAAAk9B,EAAA,GACAngC,IAAAiD,OAAA,EAAAk9B,EACA,CACA,CACAr5E,EAAA,IACA,CAEA,GAAApvB,EAAA,CACAovB,EAAAk5C,EACAz4C,EAAA7vB,CACA,CAEA,GAAAA,IAAA,eACA6vB,EAAA,KACAu6B,EAAA,IACA,CAEA,IAAAymC,EAAA,CACAqX,SAAAI,EAAA,SACAH,WAAA/mE,SAAAknE,EAAA,aACAl+C,eACAh7B,WACAS,aACAu4E,aAAAhnE,SAAAknE,EAAA,aACAD,OAAAE,GAGA,OAAApgC,EAAA8/B,sBAAApX,EACA,IACApsF,QAAA,SAAAikG,GACA,QAAAA,CACA,GACA,EAEA,SAAAC,SAAA9X,GACA,QAAA+X,KAAA/X,EAAA,CACAz8F,KAAAw0G,GAAA/X,EAAA+X,EACA,CACA,CAEA,IAAAC,EAAA,CACA,OACA,WACA,eACA,aACA,WACA,aACA,eACA,WACA,cAEA,IAAAC,EAAA,CACA,WACA,OACA,SACA,eAEAD,EAAAp1E,SAAA,SAAAm1E,GACAD,SAAAt3G,UAAAu3G,GAAA,KACAD,SAAAt3G,UAAA,MAAAu3G,EAAA,GAAA12E,cAAA02E,EAAAr9B,OAAA,eACA,OAAAn3E,KAAAw0G,EACA,CACA,IACAE,EAAAr1E,SAAA,SAAAm1E,GACAD,SAAAt3G,UAAAu3G,GAAA,MACAD,SAAAt3G,UAAA,KAAAu3G,EAAA,GAAA12E,cAAA02E,EAAAr9B,OAAA,eACA,OAAAn3E,KAAAw0G,EACA,CACA,IAEAl6G,EAAAu5G,sBAAA,SAAApX,GACA,WAAA8X,SAAA9X,EACA,C,iBC9GA,IAAAh0F,EAAArO,EAAA,aAGA,IAAAu6G,EAAAlsG,EAAAksG,YAAA,SAAAntG,GACAA,EAAA,GAAAA,EACA,OAAAA,KAAA05B,eACA,qIACA,YACA,QACA,aAEA,EAEA,SAAA0zE,mBAAAC,GACA,IAAAA,EAAA,aACA,IAAAhoE,EACA,YACA,OAAAgoE,GACA,WACA,YACA,aACA,WACA,YACA,cACA,eACA,gBACA,aACA,aACA,eACA,aACA,YACA,UACA,OAAAA,EACA,QACA,GAAAhoE,EAAA,OACAgoE,GAAA,GAAAA,GAAA3zE,cACA2L,EAAA,KAEA,CACA,CAIA,SAAAioE,kBAAAD,GACA,IAAAE,EAAAH,mBAAAC,GACA,UAAAE,IAAA,WAAAtsG,EAAAksG,mBAAAE,IAAA,UAAA7xG,MAAA,qBAAA6xG,GACA,OAAAE,GAAAF,CACA,CAKAv6G,EAAAqqE,EAAAqwC,cACA,SAAAA,cAAAxtG,GACAxH,KAAAwH,SAAAstG,kBAAAttG,GACA,IAAAytG,EACA,OAAAj1G,KAAAwH,UACA,cACAxH,KAAA8c,KAAAo4F,UACAl1G,KAAAkgB,IAAAi1F,SACAF,EAAA,EACA,MACA,WACAj1G,KAAAo1G,SAAAC,aACAJ,EAAA,EACA,MACA,aACAj1G,KAAA8c,KAAAw4F,WACAt1G,KAAAkgB,IAAAq1F,UACAN,EAAA,EACA,MACA,QACAj1G,KAAAvD,MAAA+4G,YACAx1G,KAAAkgB,IAAAu1F,UACA,OAEAz1G,KAAA01G,SAAA,EACA11G,KAAA21G,UAAA,EACA31G,KAAA41G,SAAAntG,EAAAkM,YAAAsgG,EACA,CAEAD,cAAA/3G,UAAAR,MAAA,SAAAi8D,GACA,GAAAA,EAAA98D,SAAA,WACA,IAAA2oE,EACA,IAAA5oE,EACA,GAAAqE,KAAA01G,SAAA,CACAnxC,EAAAvkE,KAAAo1G,SAAA18C,GACA,GAAA6L,IAAAjgE,UAAA,SACA3I,EAAAqE,KAAA01G,SACA11G,KAAA01G,SAAA,CACA,MACA/5G,EAAA,CACA,CACA,GAAAA,EAAA+8D,EAAA98D,OAAA,OAAA2oE,IAAAvkE,KAAA8c,KAAA47C,EAAA/8D,GAAAqE,KAAA8c,KAAA47C,EAAA/8D,GACA,OAAA4oE,GAAA,EACA,EAEAywC,cAAA/3G,UAAAijB,IAAA21F,QAGAb,cAAA/3G,UAAA6f,KAAAg5F,SAGAd,cAAA/3G,UAAAm4G,SAAA,SAAA18C,GACA,GAAA14D,KAAA01G,UAAAh9C,EAAA98D,OAAA,CACA88D,EAAA5jD,KAAA9U,KAAA41G,SAAA51G,KAAA21G,UAAA31G,KAAA01G,SAAA,EAAA11G,KAAA01G,UACA,OAAA11G,KAAA41G,SAAA12F,SAAAlf,KAAAwH,SAAA,EAAAxH,KAAA21G,UACA,CACAj9C,EAAA5jD,KAAA9U,KAAA41G,SAAA51G,KAAA21G,UAAA31G,KAAA01G,SAAA,EAAAh9C,EAAA98D,QACAoE,KAAA01G,UAAAh9C,EAAA98D,MACA,EAIA,SAAAm6G,cAAAC,GACA,GAAAA,GAAA,qBAAAA,GAAA,uBAAAA,GAAA,wBAAAA,GAAA,gBACA,OAAAA,GAAA,WACA,CAKA,SAAAC,oBAAAliC,EAAArb,EAAA/8D,GACA,IAAA46B,EAAAmiC,EAAA98D,OAAA,EACA,GAAA26B,EAAA56B,EAAA,SACA,IAAAs5G,EAAAc,cAAAr9C,EAAAniC,IACA,GAAA0+E,GAAA,GACA,GAAAA,EAAA,EAAAlhC,EAAA2hC,SAAAT,EAAA,EACA,OAAAA,CACA,CACA,KAAA1+E,EAAA56B,GAAAs5G,KAAA,WACAA,EAAAc,cAAAr9C,EAAAniC,IACA,GAAA0+E,GAAA,GACA,GAAAA,EAAA,EAAAlhC,EAAA2hC,SAAAT,EAAA,EACA,OAAAA,CACA,CACA,KAAA1+E,EAAA56B,GAAAs5G,KAAA,WACAA,EAAAc,cAAAr9C,EAAAniC,IACA,GAAA0+E,GAAA,GACA,GAAAA,EAAA,GACA,GAAAA,IAAA,EAAAA,EAAA,OAAAlhC,EAAA2hC,SAAAT,EAAA,CACA,CACA,OAAAA,CACA,CACA,QACA,CAUA,SAAAiB,oBAAAniC,EAAArb,EAAA1hB,GACA,IAAA0hB,EAAA,eACAqb,EAAA2hC,SAAA,EACA,SACA,CACA,GAAA3hC,EAAA2hC,SAAA,GAAAh9C,EAAA98D,OAAA,GACA,IAAA88D,EAAA,eACAqb,EAAA2hC,SAAA,EACA,SACA,CACA,GAAA3hC,EAAA2hC,SAAA,GAAAh9C,EAAA98D,OAAA,GACA,IAAA88D,EAAA,eACAqb,EAAA2hC,SAAA,EACA,SACA,CACA,CACA,CACA,CAGA,SAAAL,aAAA38C,GACA,IAAA1hB,EAAAh3C,KAAA21G,UAAA31G,KAAA01G,SACA,IAAAnxC,EAAA2xC,oBAAAl2G,KAAA04D,EAAA1hB,GACA,GAAAutB,IAAAjgE,UAAA,OAAAigE,EACA,GAAAvkE,KAAA01G,UAAAh9C,EAAA98D,OAAA,CACA88D,EAAA5jD,KAAA9U,KAAA41G,SAAA5+D,EAAA,EAAAh3C,KAAA01G,UACA,OAAA11G,KAAA41G,SAAA12F,SAAAlf,KAAAwH,SAAA,EAAAxH,KAAA21G,UACA,CACAj9C,EAAA5jD,KAAA9U,KAAA41G,SAAA5+D,EAAA,EAAA0hB,EAAA98D,QACAoE,KAAA01G,UAAAh9C,EAAA98D,MACA,CAKA,SAAAk6G,SAAAp9C,EAAA/8D,GACA,IAAAw6G,EAAAF,oBAAAj2G,KAAA04D,EAAA/8D,GACA,IAAAqE,KAAA01G,SAAA,OAAAh9C,EAAAx5C,SAAA,OAAAvjB,GACAqE,KAAA21G,UAAAQ,EACA,IAAAj2F,EAAAw4C,EAAA98D,QAAAu6G,EAAAn2G,KAAA01G,UACAh9C,EAAA5jD,KAAA9U,KAAA41G,SAAA,EAAA11F,GACA,OAAAw4C,EAAAx5C,SAAA,OAAAvjB,EAAAukB,EACA,CAIA,SAAA21F,QAAAn9C,GACA,IAAA6L,EAAA7L,KAAA98D,OAAAoE,KAAAvD,MAAAi8D,GAAA,GACA,GAAA14D,KAAA01G,SAAA,OAAAnxC,EAAA,IACA,OAAAA,CACA,CAMA,SAAA2wC,UAAAx8C,EAAA/8D,GACA,IAAA+8D,EAAA98D,OAAAD,GAAA,OACA,IAAA4oE,EAAA7L,EAAAx5C,SAAA,UAAAvjB,GACA,GAAA4oE,EAAA,CACA,IAAA3O,EAAA2O,EAAA1O,WAAA0O,EAAA3oE,OAAA,GACA,GAAAg6D,GAAA,OAAAA,GAAA,OACA51D,KAAA01G,SAAA,EACA11G,KAAA21G,UAAA,EACA31G,KAAA41G,SAAA,GAAAl9C,IAAA98D,OAAA,GACAoE,KAAA41G,SAAA,GAAAl9C,IAAA98D,OAAA,GACA,OAAA2oE,EAAA5mE,MAAA,KACA,CACA,CACA,OAAA4mE,CACA,CACAvkE,KAAA01G,SAAA,EACA11G,KAAA21G,UAAA,EACA31G,KAAA41G,SAAA,GAAAl9C,IAAA98D,OAAA,GACA,OAAA88D,EAAAx5C,SAAA,UAAAvjB,EAAA+8D,EAAA98D,OAAA,EACA,CAIA,SAAAu5G,SAAAz8C,GACA,IAAA6L,EAAA7L,KAAA98D,OAAAoE,KAAAvD,MAAAi8D,GAAA,GACA,GAAA14D,KAAA01G,SAAA,CACA,IAAAx1F,EAAAlgB,KAAA21G,UAAA31G,KAAA01G,SACA,OAAAnxC,EAAAvkE,KAAA41G,SAAA12F,SAAA,YAAAgB,EACA,CACA,OAAAqkD,CACA,CAEA,SAAA+wC,WAAA58C,EAAA/8D,GACA,IAAAk2C,GAAA6mB,EAAA98D,OAAAD,GAAA,EACA,GAAAk2C,IAAA,SAAA6mB,EAAAx5C,SAAA,SAAAvjB,GACAqE,KAAA01G,SAAA,EAAA7jE,EACA7xC,KAAA21G,UAAA,EACA,GAAA9jE,IAAA,GACA7xC,KAAA41G,SAAA,GAAAl9C,IAAA98D,OAAA,EACA,MACAoE,KAAA41G,SAAA,GAAAl9C,IAAA98D,OAAA,GACAoE,KAAA41G,SAAA,GAAAl9C,IAAA98D,OAAA,EACA,CACA,OAAA88D,EAAAx5C,SAAA,SAAAvjB,EAAA+8D,EAAA98D,OAAAi2C,EACA,CAEA,SAAA0jE,UAAA78C,GACA,IAAA6L,EAAA7L,KAAA98D,OAAAoE,KAAAvD,MAAAi8D,GAAA,GACA,GAAA14D,KAAA01G,SAAA,OAAAnxC,EAAAvkE,KAAA41G,SAAA12F,SAAA,aAAAlf,KAAA01G,UACA,OAAAnxC,CACA,CAGA,SAAAixC,YAAA98C,GACA,OAAAA,EAAAx5C,SAAAlf,KAAAwH,SACA,CAEA,SAAAiuG,UAAA/8C,GACA,OAAAA,KAAA98D,OAAAoE,KAAAvD,MAAAi8D,GAAA,EACA,C,WC9RAr+D,EAAAC,QAAA,SAAAypE,IAAAoP,GACA,IACA,IAAAx3E,EAAA,EAAA4wG,EAAA,EACA5wG,EAAAw3E,EAAAv3E,OACA2wG,EAAAp5B,EAAAtd,WAAAl6D,OAAA4wG,GAAA,GAAAA,IAGA,IAAAxlC,EAAAnnE,KAAA2mB,MACA3mB,KAAAi7E,IACAj7E,KAAAknE,IAAAylC,GAAA,iBAEArtF,SAAA,IAEA,UAAAxhB,MAAA,EAAAqpE,EAAAnrE,OAAA,GAAA+V,KAAA,KAAAo1D,CACA,C,eCVAzsE,EAAA6pF,OAAA,CACA79E,MAAA,EACA8vG,KAAA,EACAC,KAAA,EACArhG,KAAA,EACAuoB,KAAA,EACAC,MAAA,EACA84E,OAAA,EACAjgD,QAAA,EACAkgD,MAAA,EACAC,MAAA,GAOAl8G,EAAA+D,OAAA,CACAiI,MAAA,MACA8vG,KAAA,SACAC,KAAA,OACArhG,KAAA,OACAuoB,KAAA,QACAC,MAAA,OACA84E,OAAA,OACAjgD,QAAA,OACAkgD,MAAA,OACAC,MAAA,U,iBC3BAx5G,OAAA2B,eAAArE,EAAA,OACAsE,MAAAxE,EAAA,QAOA4C,OAAA2B,eAAArE,EAAA,OACAsE,MAAAxE,EAAA,QAOA4C,OAAA2B,eAAArE,EAAA,UACAsE,MAAAxE,EAAA,O,eCjBAE,EAAA6pF,OAAA,CACA79E,MAAA,EACA8vG,KAAA,EACA74E,KAAA,EACA9gB,KAAA,EACA45C,QAAA,EACA74B,MAAA,EACAg5E,MAAA,GAOAl8G,EAAA+D,OAAA,CACAiI,MAAA,MACA8vG,KAAA,SACA74E,KAAA,QACA9gB,KAAA,QACA45C,QAAA,OACA74B,MAAA,OACAg5E,MAAA,U,eCrBAl8G,EAAA6pF,OAAA,CACAsyB,MAAA,EACAC,MAAA,EACAC,KAAA,EACArwG,MAAA,EACAswG,QAAA,EACAC,OAAA,EACAt5E,KAAA,EACAC,MAAA,GAOAljC,EAAA+D,OAAA,CACAo4G,MAAA,MACAC,MAAA,SACAC,KAAA,MACArwG,MAAA,MACAswG,QAAA,MACAC,OAAA,SACAt5E,KAAA,QACAC,MAAA,O,iBC1BAxgC,OAAA2B,eAAArE,EAAA,SACAsE,MAAAuS,OAAA2lG,IAAA,WAWA95G,OAAA2B,eAAArE,EAAA,WACAsE,MAAAuS,OAAA2lG,IAAA,aAUA95G,OAAA2B,eAAArE,EAAA,SACAsE,MAAAuS,OAAA2lG,IAAA,WASA95G,OAAA2B,eAAArE,EAAA,WACAsE,MAAAxE,EAAA,O,iBCvCAC,EAAAC,QAAAF,EAAA,MAAAs9C,S,iBCFAr9C,EAAAC,QAAAF,EAAA,MAGAC,EAAAC,QAAAy8G,sBAAA38G,EAAA,K,iBCJA,MAAAooC,EAAApoC,EAAA,MACA,MAAAoqF,SAAApqF,EAAA,MACA,MAAA48G,EAAA58G,EAAA,MAUA,MAAA28G,EAAA18G,EAAAC,QAAA,SAAAy8G,sBAAAj6G,EAAA,IACAk6G,EAAA55G,KAAA4C,KAAAlD,GACA,IAAAA,EAAAiqD,kBAAAjqD,EAAAiqD,UAAA/oD,MAAA,YACA,UAAAgF,MAAA,0DACA,CAEAhD,KAAA+mD,UAAAjqD,EAAAiqD,UACA/mD,KAAAo1E,MAAAp1E,KAAAo1E,OAAAt4E,EAAAiqD,UAAAquB,MACAp1E,KAAAi3G,iBAAAj3G,KAAAi3G,kBAAAn6G,EAAAiqD,UAAAkwD,iBAGAj3G,KAAAk3G,cAKA,SAAAC,eAAAr0G,GACA9C,KAAAsT,KAAA,QAAAxQ,EAAA9C,KAAA+mD,UACA,CAEA,IAAA/mD,KAAA+mD,UAAAqwD,eAAA,CACAp3G,KAAA+mD,UAAAqwD,eAAAD,eAAAhpG,KAAAnO,MACAA,KAAA+mD,UAAA9mC,GAAA,QAAAjgB,KAAA+mD,UAAAqwD,eACA,CACA,EAKA50E,EAAAs7C,SAAAi5B,EAAAC,GAUAD,EAAA95G,UAAAqK,OAAA,SAAAA,OAAAi2B,EAAAs3E,EAAA90G,GACA,GAAAC,KAAAq3G,QAAA95E,EAAA+5E,YAAA,OAAAt3G,KAAAi3G,iBAAA,CACA,OAAAl3G,EAAA,KACA,CAIA,IAAAC,KAAAo1E,OAAAp1E,KAAAmkF,OAAAnkF,KAAAo1E,QAAAp1E,KAAAmkF,OAAA5mD,EAAAinD,IAAA,CACAxkF,KAAA+mD,UAAA/oD,IAAAu/B,EAAAinD,GAAAjnD,EAAA3gC,QAAA2gC,EAAAv9B,KAAAu3G,KACA,CAEAx3G,EAAA,KACA,EAUAg3G,EAAA95G,UAAAu6G,QAAA,SAAAA,QAAAC,EAAA13G,GACA,QAAApE,EAAA,EAAAA,EAAA87G,EAAA77G,OAAAD,IAAA,CACA,GAAAqE,KAAA03G,QAAAD,EAAA97G,IAAA,CACAqE,KAAA+mD,UAAA/oD,IACAy5G,EAAA97G,GAAA4L,MAAAi9E,GACAizB,EAAA97G,GAAA4L,MAAA3K,QACA66G,EAAA97G,GAAA4L,MACAvH,KAAAu3G,MAEAE,EAAA97G,GAAAoE,UACA,CACA,CAEA,OAAAA,EAAA,KACA,EAOAg3G,EAAA95G,UAAAi6G,YAAA,SAAAA,cAEAn5G,QAAAuI,MAAA,CACA,GAAAtG,KAAA+mD,UAAAt6C,2DACA,mFACAkF,KAAA,MACA,EAOAolG,EAAA95G,UAAAkO,MAAA,SAAAA,QACA,GAAAnL,KAAA+mD,UAAA57C,MAAA,CACAnL,KAAA+mD,UAAA57C,OACA,CAEA,GAAAnL,KAAA+mD,UAAAqwD,eAAA,CACAp3G,KAAA+mD,UAAAvJ,eAAA,QAAAx9C,KAAA+mD,UAAAqwD,gBACAp3G,KAAA+mD,UAAAqwD,eAAA,IACA,CACA,C,iBCpHA,MAAA50E,EAAApoC,EAAA,MACA,MAAAgN,EAAAhN,EAAA,MACA,MAAAoqF,SAAApqF,EAAA,MAaA,MAAA48G,EAAA38G,EAAAC,QAAA,SAAA08G,gBAAAl6G,EAAA,IACAsK,EAAAhK,KAAA4C,KAAA,CAAAgH,WAAA,KAAA2wG,cAAA76G,EAAA66G,gBAEA33G,KAAAgiB,OAAAllB,EAAAklB,OACAhiB,KAAAo1E,MAAAt4E,EAAAs4E,MACAp1E,KAAAi3G,iBAAAn6G,EAAAm6G,iBACAj3G,KAAA43G,iBAAA96G,EAAA86G,iBACA53G,KAAAq3G,OAAAv6G,EAAAu6G,OAEA,GAAAv6G,EAAAkB,IAAAgC,KAAAhC,IAAAlB,EAAAkB,IACA,GAAAlB,EAAA+6G,KAAA73G,KAAA63G,KAAA/6G,EAAA+6G,KACA,GAAA/6G,EAAAqO,MAAAnL,KAAAmL,MAAArO,EAAAqO,MAGAnL,KAAAqf,KAAA,QAAAlkB,IAKA6E,KAAAmkF,OAAAhpF,EAAAgpF,OACAnkF,KAAA4O,OAAAzT,CAAA,IAIA6E,KAAAqf,KAAA,UAAAquF,IAKA,GAAAA,IAAA1tG,KAAA4O,OAAA,CACA5O,KAAA4O,OAAA,KACA,GAAA5O,KAAAmL,MAAA,CACAnL,KAAAmL,OACA,CACA,IAEA,EAKAq3B,EAAAs7C,SAAAk5B,EAAA5vG,GAUA4vG,EAAA/5G,UAAAqK,OAAA,SAAAA,OAAAi2B,EAAAs3E,EAAA90G,GACA,GAAAC,KAAAq3G,QAAA95E,EAAA+5E,YAAA,OAAAt3G,KAAAi3G,iBAAA,CACA,OAAAl3G,EAAA,KACA,CAMA,MAAAq1E,EAAAp1E,KAAAo1E,OAAAp1E,KAAA4O,QAAA5O,KAAA4O,OAAAwmE,MAEA,IAAAA,GAAAp1E,KAAAmkF,OAAA/O,IAAAp1E,KAAAmkF,OAAA5mD,EAAAinD,IAAA,CACA,GAAAjnD,IAAAv9B,KAAAgiB,OAAA,CACA,OAAAhiB,KAAAhC,IAAAu/B,EAAAx9B,EACA,CAEA,IAAA+3G,EACA,IAAAC,EAIA,IACAA,EAAA/3G,KAAAgiB,OAAAw8D,UAAAxhF,OAAAwJ,OAAA,GAAA+2B,GAAAv9B,KAAAgiB,OAAAllB,QACA,OAAAgG,GACAg1G,EAAAh1G,CACA,CAEA,GAAAg1G,IAAAC,EAAA,CAEAh4G,IACA,GAAA+3G,EAAA,MAAAA,EACA,MACA,CAEA,OAAA93G,KAAAhC,IAAA+5G,EAAAh4G,EACA,CACAC,KAAAo+E,eAAA8oB,KAAA,MACA,OAAAnnG,EAAA,KACA,EAUAi3G,EAAA/5G,UAAAu6G,QAAA,SAAAA,QAAAC,EAAA13G,GACA,GAAAC,KAAA63G,KAAA,CACA,MAAAG,EAAAP,EAAApnG,OAAArQ,KAAA03G,QAAA13G,MACA,IAAAg4G,EAAAp8G,OAAA,CACA,OAAAmE,EAAA,KACA,CAKA,OAAAC,KAAA63G,KAAAG,EAAAj4G,EACA,CAEA,QAAApE,EAAA,EAAAA,EAAA87G,EAAA77G,OAAAD,IAAA,CACA,IAAAqE,KAAA03G,QAAAD,EAAA97G,IAAA,SAEA,GAAA87G,EAAA97G,GAAA4L,QAAAvH,KAAAgiB,OAAA,CACAhiB,KAAAhC,IAAAy5G,EAAA97G,GAAA4L,MAAAkwG,EAAA97G,GAAAoE,UACA,QACA,CAEA,IAAA+3G,EACA,IAAAC,EAIA,IACAA,EAAA/3G,KAAAgiB,OAAAw8D,UACAxhF,OAAAwJ,OAAA,GAAAixG,EAAA97G,GAAA4L,OACAvH,KAAAgiB,OAAAllB,QAEA,OAAAgG,GACAg1G,EAAAh1G,CACA,CAEA,GAAAg1G,IAAAC,EAAA,CAEAN,EAAA97G,GAAAoE,WACA,GAAA+3G,EAAA,CAEA/3G,EAAA,MACA,MAAA+3G,CACA,CACA,MACA93G,KAAAhC,IAAA+5G,EAAAN,EAAA97G,GAAAoE,SACA,CACA,CAEA,OAAAA,EAAA,KACA,EAWAi3G,EAAA/5G,UAAAy6G,QAAA,SAAAA,QAAAj7G,GACA,MAAA8gC,EAAA9gC,EAAA8K,MACA,GAAAvH,KAAAq3G,OAAA,CACA,YACA,CAIA,MAAAjiC,EAAAp1E,KAAAo1E,OAAAp1E,KAAA4O,QAAA5O,KAAA4O,OAAAwmE,MAGA,GACA73C,EAAA+5E,YAAA,OACAliC,GACAp1E,KAAAmkF,OAAA/O,IAAAp1E,KAAAmkF,OAAA5mD,EAAAinD,IACA,CAIA,GAAAxkF,KAAAi3G,kBAAA15E,EAAA+5E,YAAA,MACA,WACA,CACA,CAEA,YACA,EAMAN,EAAA/5G,UAAAs6G,KAAA,SAAAA,OAEA,YAAAjzG,SACA,C,WChNA,MAAA4lF,EAAA,GAEA,SAAA+tB,gBAAA9xG,EAAAvJ,EAAAs7G,GACA,IAAAA,EAAA,CACAA,EAAAl1G,KACA,CAEA,SAAAm1G,WAAA1lG,EAAAC,EAAAC,GACA,UAAA/V,IAAA,UACA,OAAAA,CACA,MACA,OAAAA,EAAA6V,EAAAC,EAAAC,EACA,CACA,CAEA,MAAAylG,kBAAAF,EACA,WAAAp4G,CAAA2S,EAAAC,EAAAC,GACAlP,MAAA00G,WAAA1lG,EAAAC,EAAAC,GACA,EAGAylG,UAAAn7G,UAAAwP,KAAAyrG,EAAAzrG,KACA2rG,UAAAn7G,UAAAkJ,OAEA+jF,EAAA/jF,GAAAiyG,SACA,CAGA,SAAAC,MAAA1N,EAAA2N,GACA,GAAA56G,MAAAwzB,QAAAy5E,GAAA,CACA,MAAAzuC,EAAAyuC,EAAA/uG,OACA+uG,IAAA1uG,KAAAN,GAAAid,OAAAjd,KACA,GAAAugE,EAAA,GACA,gBAAAo8C,KAAA3N,EAAAhtG,MAAA,EAAAu+D,EAAA,GAAAvqD,KAAA,aACAg5F,EAAAzuC,EAAA,EACA,SAAAA,IAAA,GACA,gBAAAo8C,KAAA3N,EAAA,SAAAA,EAAA,IACA,MACA,YAAA2N,KAAA3N,EAAA,IACA,CACA,MACA,YAAA2N,KAAA1/F,OAAA+xF,IACA,CACA,CAGA,SAAAnsE,WAAA20C,EAAAolC,EAAA5/C,GACA,OAAAwa,EAAAgE,QAAAxe,KAAA,KAAAA,EAAA4/C,EAAA38G,UAAA28G,CACA,CAGA,SAAAx3E,SAAAoyC,EAAAolC,EAAAC,GACA,GAAAA,IAAAl0G,WAAAk0G,EAAArlC,EAAAv3E,OAAA,CACA48G,EAAArlC,EAAAv3E,MACA,CACA,OAAAu3E,EAAAtpD,UAAA2uF,EAAAD,EAAA38G,OAAA48G,KAAAD,CACA,CAGA,SAAA/hG,SAAA28D,EAAAolC,EAAAxrG,GACA,UAAAA,IAAA,UACAA,EAAA,CACA,CAEA,GAAAA,EAAAwrG,EAAA38G,OAAAu3E,EAAAv3E,OAAA,CACA,YACA,MACA,OAAAu3E,EAAA73E,QAAAi9G,EAAAxrG,MAAA,CACA,CACA,CAEAkrG,gBAAA,kCAAAxrG,EAAA7N,GACA,oBAAAA,EAAA,4BAAA6N,EAAA,GACA,GAAA/D,WACAuvG,gBAAA,iCAAAxrG,EAAAk+F,EAAAC,GAEA,IAAA6N,EACA,UAAA9N,IAAA,UAAAnsE,WAAAmsE,EAAA,SACA8N,EAAA,cACA9N,IAAA/zC,QAAA,WACA,MACA6hD,EAAA,SACA,CAEA,IAAApzG,EACA,GAAA07B,SAAAt0B,EAAA,cAEApH,EAAA,OAAAoH,KAAAgsG,KAAAJ,MAAA1N,EAAA,SACA,MACA,MAAA1/E,EAAAzU,SAAA/J,EAAA,2BACApH,EAAA,QAAAoH,MAAAwe,KAAAwtF,KAAAJ,MAAA1N,EAAA,SACA,CAEAtlG,GAAA,0BAAAulG,IACA,OAAAvlG,CACA,GAAAqD,WACAuvG,gBAAA,uDACAA,gBAAA,uCAAAxrG,GACA,aAAAA,EAAA,4BACA,IACAwrG,gBAAA,gDACAA,gBAAA,iCAAAxrG,GACA,qBAAAA,EAAA,+BACA,IACAwrG,gBAAA,0DACAA,gBAAA,sDACAA,gBAAA,gDACAA,gBAAA,+DAAAvvG,WACAuvG,gBAAA,iCAAAzmG,GACA,2BAAAA,CACA,GAAA9I,WACAuvG,gBAAA,yEAEA59G,EAAAC,QAAA2rE,EAAAikB,C,iBCtFA,IAAAwuB,EAAA17G,OAAAmG,MAAA,SAAAoF,GACA,IAAApF,EAAA,GACA,QAAAhG,KAAAoL,EAAApF,EAAA5H,KAAA4B,GACA,OAAAgG,CACA,EAGA9I,EAAAC,QAAA2N,OACA,IAAAnB,EAAA1M,EAAA,MACA,IAAAgN,EAAAhN,EAAA,MACAA,EAAA,KAAAA,CAAA6N,OAAAnB,GACA,CAEA,IAAA3D,EAAAu1G,EAAAtxG,EAAAnK,WACA,QAAAukC,EAAA,EAAAA,EAAAr+B,EAAAvH,OAAA4lC,IAAA,CACA,IAAA51B,EAAAzI,EAAAq+B,GACA,IAAAv5B,OAAAhL,UAAA2O,GAAA3D,OAAAhL,UAAA2O,GAAAxE,EAAAnK,UAAA2O,EACA,CACA,CACA,SAAA3D,OAAAnL,GACA,KAAAkD,gBAAAiI,QAAA,WAAAA,OAAAnL,GACAgK,EAAA1J,KAAA4C,KAAAlD,GACAsK,EAAAhK,KAAA4C,KAAAlD,GACAkD,KAAA24G,cAAA,KACA,GAAA77G,EAAA,CACA,GAAAA,EAAAuhF,WAAA,MAAAr+E,KAAAq+E,SAAA,MACA,GAAAvhF,EAAAwlD,WAAA,MAAAtiD,KAAAsiD,SAAA,MACA,GAAAxlD,EAAA67G,gBAAA,OACA34G,KAAA24G,cAAA,MACA34G,KAAAqf,KAAA,MAAAu5F,MACA,CACA,CACA,CACA57G,OAAA2B,eAAAsJ,OAAAhL,UAAA,yBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAu5B,aACA,IAEA36G,OAAA2B,eAAAsJ,OAAAhL,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,gBAAAp+E,KAAAo+E,eAAAy6B,WACA,IAEA77G,OAAA2B,eAAAsJ,OAAAhL,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAxiF,MACA,IAIA,SAAAg9G,QAEA,GAAA54G,KAAAo+E,eAAAziD,MAAA,OAIA9gC,QAAAuuB,SAAA0vF,QAAA94G,KACA,CACA,SAAA84G,QAAA/kC,GACAA,EAAA7zD,KACA,CACAljB,OAAA2B,eAAAsJ,OAAAhL,UAAA,aAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,GAAA/W,KAAAs+E,iBAAAh6E,WAAAtE,KAAAo+E,iBAAA95E,UAAA,CACA,YACA,CACA,OAAAtE,KAAAs+E,eAAAzqC,WAAA7zC,KAAAo+E,eAAAvqC,SACA,EACAr4C,IAAA,SAAAA,IAAAoD,GAGA,GAAAoB,KAAAs+E,iBAAAh6E,WAAAtE,KAAAo+E,iBAAA95E,UAAA,CACA,MACA,CAIAtE,KAAAs+E,eAAAzqC,UAAAj1C,EACAoB,KAAAo+E,eAAAvqC,UAAAj1C,CACA,G,iBCrGAvE,EAAAC,QAAAwM,SAGA,IAAAmB,EAGAnB,SAAAiyG,4BAGA,IAAAC,EAAA5+G,EAAA,mBACA,IAAA6+G,EAAA,SAAAA,gBAAA/lG,EAAA+X,GACA,OAAA/X,EAAAikD,UAAAlsC,GAAArvB,MACA,EAIA,IAAAs9G,EAAA9+G,EAAA,MAGA,IAAAqO,EAAArO,EAAA,aACA,IAAA++G,UAAA/uD,SAAA,YAAAA,cAAAwiD,SAAA,YAAAA,cAAA74B,OAAA,YAAAA,KAAA,IAAA9b,YAAA,aACA,SAAAmhD,oBAAA7xG,GACA,OAAAkB,EAAAwW,KAAA1X,EACA,CACA,SAAA8xG,cAAA9wG,GACA,OAAAE,EAAA24B,SAAA74B,iBAAA4wG,CACA,CAGA,IAAAG,EAAAl/G,EAAA,MACA,IAAAojC,EACA,GAAA87E,KAAAC,SAAA,CACA/7E,EAAA87E,EAAAC,SAAA,SACA,MACA/7E,EAAA,SAAAA,QAAA,CACA,CAGA,IAAAg8E,EAAAp/G,EAAA,MACA,IAAAq/G,EAAAr/G,EAAA,MACA,IAAAs/G,EAAAt/G,EAAA,KACAu/G,EAAAD,EAAAC,iBACA,IAAAC,EAAAx/G,EAAA,QACAy/G,EAAAD,EAAAC,qBACAC,EAAAF,EAAAE,0BACAC,EAAAH,EAAAG,2BACAC,EAAAJ,EAAAI,mCAGA,IAAAhF,EACA,IAAAiF,EACA,IAAAh7F,EACA7kB,EAAA,KAAAA,CAAA0M,SAAAoyG,GACA,IAAAgB,EAAAT,EAAAS,eACA,IAAAC,EAAA,6CACA,SAAAC,gBAAAlnG,EAAAmnG,EAAA7/G,GAGA,UAAA0Y,EAAAknG,kBAAA,kBAAAlnG,EAAAknG,gBAAAC,EAAA7/G,GAMA,IAAA0Y,EAAAonG,UAAApnG,EAAAonG,QAAAD,GAAAnnG,EAAA+M,GAAAo6F,EAAA7/G,QAAA,GAAAkD,MAAAwzB,QAAAhe,EAAAonG,QAAAD,IAAAnnG,EAAAonG,QAAAD,GAAAp+F,QAAAzhB,QAAA0Y,EAAAonG,QAAAD,GAAA,CAAA7/G,EAAA0Y,EAAAonG,QAAAD,GACA,CACA,SAAAtB,cAAAj8G,EAAA6W,EAAA4mG,GACAtyG,KAAA7N,EAAA,MACA0C,KAAA,GAOA,UAAAy9G,IAAA,UAAAA,EAAA5mG,aAAA1L,EAIAjI,KAAAgH,aAAAlK,EAAAkK,WACA,GAAAuzG,EAAAv6G,KAAAgH,WAAAhH,KAAAgH,cAAAlK,EAAA09G,mBAIAx6G,KAAA23G,cAAAgC,EAAA35G,KAAAlD,EAAA,wBAAAy9G,GAKAv6G,KAAAu1D,OAAA,IAAAikD,EACAx5G,KAAApE,OAAA,EACAoE,KAAAy6G,MAAA,KACAz6G,KAAA06G,WAAA,EACA16G,KAAA26G,QAAA,KACA36G,KAAA27B,MAAA,MACA37B,KAAA46G,WAAA,MACA56G,KAAA66G,QAAA,MAMA76G,KAAAknG,KAAA,KAIAlnG,KAAA86G,aAAA,MACA96G,KAAA+6G,gBAAA,MACA/6G,KAAAg7G,kBAAA,MACAh7G,KAAAi7G,gBAAA,MACAj7G,KAAAk7G,OAAA,KAGAl7G,KAAAm7G,UAAAr+G,EAAAq+G,YAAA,MAGAn7G,KAAAo7G,cAAAt+G,EAAAs+G,YAGAp7G,KAAA6zC,UAAA,MAKA7zC,KAAAq7G,gBAAAv+G,EAAAu+G,iBAAA,OAGAr7G,KAAAs7G,WAAA,EAGAt7G,KAAAu7G,YAAA,MACAv7G,KAAA2yC,QAAA,KACA3yC,KAAAwH,SAAA,KACA,GAAA1K,EAAA0K,SAAA,CACA,IAAAwtG,IAAA56G,EAAA,QACA4F,KAAA2yC,QAAA,IAAAqiE,EAAAl4G,EAAA0K,UACAxH,KAAAwH,SAAA1K,EAAA0K,QACA,CACA,CACA,SAAAV,SAAAhK,GACAmL,KAAA7N,EAAA,MACA,KAAA4F,gBAAA8G,UAAA,WAAAA,SAAAhK,GAIA,IAAAy9G,EAAAv6G,gBAAAiI,EACAjI,KAAAs+E,eAAA,IAAAy6B,cAAAj8G,EAAAkD,KAAAu6G,GAGAv6G,KAAAq+E,SAAA,KACA,GAAAvhF,EAAA,CACA,UAAAA,EAAAq/D,OAAA,WAAAn8D,KAAAiH,MAAAnK,EAAAq/D,KACA,UAAAr/D,EAAAuuB,UAAA,WAAArrB,KAAAw7G,SAAA1+G,EAAAuuB,OACA,CACA6tF,EAAA97G,KAAA4C,KACA,CACAhD,OAAA2B,eAAAmI,SAAA7J,UAAA,aAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,GAAA/W,KAAAs+E,iBAAAh6E,UAAA,CACA,YACA,CACA,OAAAtE,KAAAs+E,eAAAzqC,SACA,EACAr4C,IAAA,SAAAA,IAAAoD,GAGA,IAAAoB,KAAAs+E,eAAA,CACA,MACA,CAIAt+E,KAAAs+E,eAAAzqC,UAAAj1C,CACA,IAEAkI,SAAA7J,UAAAouB,QAAAouF,EAAApuF,QACAvkB,SAAA7J,UAAAw+G,WAAAhC,EAAAiC,UACA50G,SAAA7J,UAAAu+G,SAAA,SAAA14G,EAAA2E,GACAA,EAAA3E,EACA,EAMAgE,SAAA7J,UAAA1B,KAAA,SAAAgM,EAAAC,GACA,IAAAuiB,EAAA/pB,KAAAs+E,eACA,IAAAq9B,EACA,IAAA5xF,EAAA/iB,WAAA,CACA,UAAAO,IAAA,UACAC,KAAAuiB,EAAAsxF,gBACA,GAAA7zG,IAAAuiB,EAAAviB,SAAA,CACAD,EAAAkB,EAAAwW,KAAA1X,EAAAC,GACAA,EAAA,EACA,CACAm0G,EAAA,IACA,CACA,MACAA,EAAA,IACA,CACA,OAAAC,iBAAA57G,KAAAuH,EAAAC,EAAA,MAAAm0G,EACA,EAGA70G,SAAA7J,UAAAgf,QAAA,SAAA1U,GACA,OAAAq0G,iBAAA57G,KAAAuH,EAAA,gBACA,EACA,SAAAq0G,iBAAAjoG,EAAApM,EAAAC,EAAAq0G,EAAAF,GACAn+E,EAAA,mBAAAj2B,GACA,IAAAwiB,EAAApW,EAAA2qE,eACA,GAAA/2E,IAAA,MACAwiB,EAAA8wF,QAAA,MACAiB,WAAAnoG,EAAAoW,EACA,MACA,IAAAgyF,EACA,IAAAJ,EAAAI,EAAAC,aAAAjyF,EAAAxiB,GACA,GAAAw0G,EAAA,CACA7B,EAAAvmG,EAAAooG,EACA,SAAAhyF,EAAA/iB,YAAAO,KAAA3L,OAAA,GACA,UAAA2L,IAAA,WAAAwiB,EAAA/iB,YAAAhK,OAAAo0G,eAAA7pG,KAAAkB,EAAAxL,UAAA,CACAsK,EAAA6xG,oBAAA7xG,EACA,CACA,GAAAs0G,EAAA,CACA,GAAA9xF,EAAA6wF,WAAAV,EAAAvmG,EAAA,IAAAqmG,QAAAiC,SAAAtoG,EAAAoW,EAAAxiB,EAAA,KACA,SAAAwiB,EAAA4R,MAAA,CACAu+E,EAAAvmG,EAAA,IAAAmmG,EACA,SAAA/vF,EAAA8pB,UAAA,CACA,YACA,MACA9pB,EAAA8wF,QAAA,MACA,GAAA9wF,EAAA4oB,UAAAnrC,EAAA,CACAD,EAAAwiB,EAAA4oB,QAAAl2C,MAAA8K,GACA,GAAAwiB,EAAA/iB,YAAAO,EAAA3L,SAAA,EAAAqgH,SAAAtoG,EAAAoW,EAAAxiB,EAAA,YAAA20G,cAAAvoG,EAAAoW,EACA,MACAkyF,SAAAtoG,EAAAoW,EAAAxiB,EAAA,MACA,CACA,CACA,UAAAs0G,EAAA,CACA9xF,EAAA8wF,QAAA,MACAqB,cAAAvoG,EAAAoW,EACA,CACA,CAKA,OAAAA,EAAA4R,QAAA5R,EAAAnuB,OAAAmuB,EAAA4tF,eAAA5tF,EAAAnuB,SAAA,EACA,CACA,SAAAqgH,SAAAtoG,EAAAoW,EAAAxiB,EAAAs0G,GACA,GAAA9xF,EAAA4wF,SAAA5wF,EAAAnuB,SAAA,IAAAmuB,EAAAm9E,KAAA,CACAn9E,EAAAuxF,WAAA,EACA3nG,EAAAL,KAAA,OAAA/L,EACA,MAEAwiB,EAAAnuB,QAAAmuB,EAAA/iB,WAAA,EAAAO,EAAA3L,OACA,GAAAigH,EAAA9xF,EAAAwrC,OAAAt5C,QAAA1U,QAAAwiB,EAAAwrC,OAAAh6D,KAAAgM,GACA,GAAAwiB,EAAA+wF,aAAAqB,aAAAxoG,EACA,CACAuoG,cAAAvoG,EAAAoW,EACA,CACA,SAAAiyF,aAAAjyF,EAAAxiB,GACA,IAAAw0G,EACA,IAAA1C,cAAA9xG,eAAA,UAAAA,IAAAjD,YAAAylB,EAAA/iB,WAAA,CACA+0G,EAAA,IAAAlC,EAAA,yCAAAtyG,EACA,CACA,OAAAw0G,CACA,CACAj1G,SAAA7J,UAAAm/G,SAAA,WACA,OAAAp8G,KAAAs+E,eAAAq8B,UAAA,KACA,EAGA7zG,SAAA7J,UAAAo/G,YAAA,SAAAxH,GACA,IAAAG,IAAA56G,EAAA,QACA,IAAAu4C,EAAA,IAAAqiE,EAAAH,GACA70G,KAAAs+E,eAAA3rC,UAEA3yC,KAAAs+E,eAAA92E,SAAAxH,KAAAs+E,eAAA3rC,QAAAnrC,SAGA,IAAAwvC,EAAAh3C,KAAAs+E,eAAA/oB,OAAA/1C,KACA,IAAA88F,EAAA,GACA,MAAAtlE,IAAA,MACAslE,GAAA3pE,EAAAl2C,MAAAu6C,EAAAhiC,MACAgiC,IAAA1pC,IACA,CACAtN,KAAAs+E,eAAA/oB,OAAAxV,QACA,GAAAu8D,IAAA,GAAAt8G,KAAAs+E,eAAA/oB,OAAAh6D,KAAA+gH,GACAt8G,KAAAs+E,eAAA1iF,OAAA0gH,EAAA1gH,OACA,OAAAoE,IACA,EAGA,IAAAu8G,EAAA,WACA,SAAAC,wBAAA3qE,GACA,GAAAA,GAAA0qE,EAAA,CAEA1qE,EAAA0qE,CACA,MAGA1qE,IACAA,OAAA,EACAA,OAAA,EACAA,OAAA,EACAA,OAAA,EACAA,OAAA,GACAA,GACA,CACA,OAAAA,CACA,CAIA,SAAA4qE,cAAA5qE,EAAA9nB,GACA,GAAA8nB,GAAA,GAAA9nB,EAAAnuB,SAAA,GAAAmuB,EAAA4R,MAAA,SACA,GAAA5R,EAAA/iB,WAAA,SACA,GAAA6qC,MAAA,CAEA,GAAA9nB,EAAA4wF,SAAA5wF,EAAAnuB,OAAA,OAAAmuB,EAAAwrC,OAAA/1C,KAAAxK,KAAApZ,YAAA,OAAAmuB,EAAAnuB,MACA,CAEA,GAAAi2C,EAAA9nB,EAAA4tF,cAAA5tF,EAAA4tF,cAAA6E,wBAAA3qE,GACA,GAAAA,GAAA9nB,EAAAnuB,OAAA,OAAAi2C,EAEA,IAAA9nB,EAAA4R,MAAA,CACA5R,EAAA+wF,aAAA,KACA,QACA,CACA,OAAA/wF,EAAAnuB,MACA,CAGAkL,SAAA7J,UAAAk/D,KAAA,SAAAtqB,GACArU,EAAA,OAAAqU,GACAA,EAAA7E,SAAA6E,EAAA,IACA,IAAA9nB,EAAA/pB,KAAAs+E,eACA,IAAAo+B,EAAA7qE,EACA,GAAAA,IAAA,EAAA9nB,EAAAgxF,gBAAA,MAKA,GAAAlpE,IAAA,GAAA9nB,EAAA+wF,gBAAA/wF,EAAA4tF,gBAAA,EAAA5tF,EAAAnuB,QAAAmuB,EAAA4tF,cAAA5tF,EAAAnuB,OAAA,IAAAmuB,EAAA4R,OAAA,CACA6B,EAAA,qBAAAzT,EAAAnuB,OAAAmuB,EAAA4R,OACA,GAAA5R,EAAAnuB,SAAA,GAAAmuB,EAAA4R,MAAAghF,YAAA38G,WAAAm8G,aAAAn8G,MACA,WACA,CACA6xC,EAAA4qE,cAAA5qE,EAAA9nB,GAGA,GAAA8nB,IAAA,GAAA9nB,EAAA4R,MAAA,CACA,GAAA5R,EAAAnuB,SAAA,EAAA+gH,YAAA38G,MACA,WACA,CAyBA,IAAA48G,EAAA7yF,EAAA+wF,aACAt9E,EAAA,gBAAAo/E,GAGA,GAAA7yF,EAAAnuB,SAAA,GAAAmuB,EAAAnuB,OAAAi2C,EAAA9nB,EAAA4tF,cAAA,CACAiF,EAAA,KACAp/E,EAAA,6BAAAo/E,EACA,CAIA,GAAA7yF,EAAA4R,OAAA5R,EAAA8wF,QAAA,CACA+B,EAAA,MACAp/E,EAAA,mBAAAo/E,EACA,SAAAA,EAAA,CACAp/E,EAAA,WACAzT,EAAA8wF,QAAA,KACA9wF,EAAAm9E,KAAA,KAEA,GAAAn9E,EAAAnuB,SAAA,EAAAmuB,EAAA+wF,aAAA,KAEA96G,KAAAiH,MAAA8iB,EAAA4tF,eACA5tF,EAAAm9E,KAAA,MAGA,IAAAn9E,EAAA8wF,QAAAhpE,EAAA4qE,cAAAC,EAAA3yF,EACA,CACA,IAAAi+D,EACA,GAAAn2C,EAAA,EAAAm2C,EAAA60B,SAAAhrE,EAAA9nB,QAAAi+D,EAAA,KACA,GAAAA,IAAA,MACAj+D,EAAA+wF,aAAA/wF,EAAAnuB,QAAAmuB,EAAA4tF,cACA9lE,EAAA,CACA,MACA9nB,EAAAnuB,QAAAi2C,EACA9nB,EAAAuxF,WAAA,CACA,CACA,GAAAvxF,EAAAnuB,SAAA,GAGA,IAAAmuB,EAAA4R,MAAA5R,EAAA+wF,aAAA,KAGA,GAAA4B,IAAA7qE,GAAA9nB,EAAA4R,MAAAghF,YAAA38G,KACA,CACA,GAAAgoF,IAAA,KAAAhoF,KAAAsT,KAAA,OAAA00E,GACA,OAAAA,CACA,EACA,SAAA8zB,WAAAnoG,EAAAoW,GACAyT,EAAA,cACA,GAAAzT,EAAA4R,MAAA,OACA,GAAA5R,EAAA4oB,QAAA,CACA,IAAAprC,EAAAwiB,EAAA4oB,QAAAzyB,MACA,GAAA3Y,KAAA3L,OAAA,CACAmuB,EAAAwrC,OAAAh6D,KAAAgM,GACAwiB,EAAAnuB,QAAAmuB,EAAA/iB,WAAA,EAAAO,EAAA3L,MACA,CACA,CACAmuB,EAAA4R,MAAA,KACA,GAAA5R,EAAAm9E,KAAA,CAIAiV,aAAAxoG,EACA,MAEAoW,EAAA+wF,aAAA,MACA,IAAA/wF,EAAAgxF,gBAAA,CACAhxF,EAAAgxF,gBAAA,KACA+B,cAAAnpG,EACA,CACA,CACA,CAKA,SAAAwoG,aAAAxoG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,eAAAzT,EAAA+wF,aAAA/wF,EAAAgxF,iBACAhxF,EAAA+wF,aAAA,MACA,IAAA/wF,EAAAgxF,gBAAA,CACAv9E,EAAA,eAAAzT,EAAA4wF,SACA5wF,EAAAgxF,gBAAA,KACAlgH,QAAAuuB,SAAA0zF,cAAAnpG,EACA,CACA,CACA,SAAAmpG,cAAAnpG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,gBAAAzT,EAAA8pB,UAAA9pB,EAAAnuB,OAAAmuB,EAAA4R,OACA,IAAA5R,EAAA8pB,YAAA9pB,EAAAnuB,QAAAmuB,EAAA4R,OAAA,CACAhoB,EAAAL,KAAA,YACAyW,EAAAgxF,gBAAA,KACA,CAQAhxF,EAAA+wF,cAAA/wF,EAAA4wF,UAAA5wF,EAAA4R,OAAA5R,EAAAnuB,QAAAmuB,EAAA4tF,cACAoF,KAAAppG,EACA,CAQA,SAAAuoG,cAAAvoG,EAAAoW,GACA,IAAAA,EAAAwxF,YAAA,CACAxxF,EAAAwxF,YAAA,KACA1gH,QAAAuuB,SAAA4zF,eAAArpG,EAAAoW,EACA,CACA,CACA,SAAAizF,eAAArpG,EAAAoW,GAwBA,OAAAA,EAAA8wF,UAAA9wF,EAAA4R,QAAA5R,EAAAnuB,OAAAmuB,EAAA4tF,eAAA5tF,EAAA4wF,SAAA5wF,EAAAnuB,SAAA,IACA,IAAAsgE,EAAAnyC,EAAAnuB,OACA4hC,EAAA,wBACA7pB,EAAAwoD,KAAA,GACA,GAAAD,IAAAnyC,EAAAnuB,OAEA,KACA,CACAmuB,EAAAwxF,YAAA,KACA,CAMAz0G,SAAA7J,UAAAgK,MAAA,SAAA4qC,GACAqoE,EAAAl6G,KAAA,IAAA+5G,EAAA,WACA,EACAjzG,SAAA7J,UAAAkhF,KAAA,SAAA8+B,EAAAC,GACA,IAAAxP,EAAA1tG,KACA,IAAA+pB,EAAA/pB,KAAAs+E,eACA,OAAAv0D,EAAA2wF,YACA,OACA3wF,EAAA0wF,MAAAwC,EACA,MACA,OACAlzF,EAAA0wF,MAAA,CAAA1wF,EAAA0wF,MAAAwC,GACA,MACA,QACAlzF,EAAA0wF,MAAAl/G,KAAA0hH,GACA,MAEAlzF,EAAA2wF,YAAA,EACAl9E,EAAA,wBAAAzT,EAAA2wF,WAAAwC,GACA,IAAAC,IAAAD,KAAAh9F,MAAA,QAAA+8F,IAAApiH,QAAAkzF,QAAAkvB,IAAApiH,QAAAmzF,OACA,IAAAovB,EAAAD,EAAAvE,MAAAyE,OACA,GAAAtzF,EAAA6wF,WAAA//G,QAAAuuB,SAAAg0F,QAAA1P,EAAAruF,KAAA,MAAA+9F,GACAH,EAAAh9F,GAAA,SAAAq9F,UACA,SAAAA,SAAAj/B,EAAAk/B,GACA//E,EAAA,YACA,GAAA6gD,IAAAqvB,EAAA,CACA,GAAA6P,KAAAC,aAAA,OACAD,EAAAC,WAAA,KACAC,SACA,CACA,CACA,CACA,SAAA7E,QACAp7E,EAAA,SACAy/E,EAAA/8F,KACA,CAMA,IAAAw9F,EAAAC,YAAAjQ,GACAuP,EAAAh9F,GAAA,QAAAy9F,GACA,IAAAE,EAAA,MACA,SAAAH,UACAjgF,EAAA,WAEAy/E,EAAAz/D,eAAA,QAAAqgE,SACAZ,EAAAz/D,eAAA,SAAAsgE,UACAb,EAAAz/D,eAAA,QAAAkgE,GACAT,EAAAz/D,eAAA,QAAAugE,SACAd,EAAAz/D,eAAA,SAAA8/D,UACA5P,EAAAlwD,eAAA,MAAAo7D,OACAlL,EAAAlwD,eAAA,MAAA6/D,QACA3P,EAAAlwD,eAAA,OAAAwgE,QACAJ,EAAA,KAOA,GAAA7zF,EAAAuxF,cAAA2B,EAAA7+B,gBAAA6+B,EAAA7+B,eAAA6/B,WAAAP,GACA,CACAhQ,EAAAztF,GAAA,OAAA+9F,QACA,SAAAA,OAAAz2G,GACAi2B,EAAA,UACA,IAAAwqD,EAAAi1B,EAAAxgH,MAAA8K,GACAi2B,EAAA,aAAAwqD,GACA,GAAAA,IAAA,OAKA,IAAAj+D,EAAA2wF,aAAA,GAAA3wF,EAAA0wF,QAAAwC,GAAAlzF,EAAA2wF,WAAA,GAAAp/G,QAAAyuB,EAAA0wF,MAAAwC,MAAA,KAAAW,EAAA,CACApgF,EAAA,8BAAAzT,EAAAuxF,YACAvxF,EAAAuxF,YACA,CACA5N,EAAAt6D,OACA,CACA,CAIA,SAAA2qE,QAAAhC,GACAv+E,EAAA,UAAAu+E,GACAsB,SACAJ,EAAAz/D,eAAA,QAAAugE,SACA,GAAA9E,EAAAgE,EAAA,aAAA/C,EAAA+C,EAAAlB,EACA,CAGA3B,gBAAA6C,EAAA,QAAAc,SAGA,SAAAF,UACAZ,EAAAz/D,eAAA,SAAAsgE,UACAT,QACA,CACAJ,EAAA59F,KAAA,QAAAw+F,SACA,SAAAC,WACAtgF,EAAA,YACAy/E,EAAAz/D,eAAA,QAAAqgE,SACAR,QACA,CACAJ,EAAA59F,KAAA,SAAAy+F,UACA,SAAAT,SACA7/E,EAAA,UACAkwE,EAAA2P,OAAAJ,EACA,CAGAA,EAAA3pG,KAAA,OAAAo6F,GAGA,IAAA3jF,EAAA4wF,QAAA,CACAn9E,EAAA,eACAkwE,EAAA35D,QACA,CACA,OAAAkpE,CACA,EACA,SAAAU,YAAAjQ,GACA,gBAAAwQ,4BACA,IAAAn0F,EAAA2jF,EAAApvB,eACA9gD,EAAA,cAAAzT,EAAAuxF,YACA,GAAAvxF,EAAAuxF,WAAAvxF,EAAAuxF,aACA,GAAAvxF,EAAAuxF,aAAA,GAAArC,EAAAvL,EAAA,SACA3jF,EAAA4wF,QAAA,KACAoC,KAAArP,EACA,CACA,CACA,CACA5mG,SAAA7J,UAAAogH,OAAA,SAAAJ,GACA,IAAAlzF,EAAA/pB,KAAAs+E,eACA,IAAAi/B,EAAA,CACAC,WAAA,OAIA,GAAAzzF,EAAA2wF,aAAA,SAAA16G,KAGA,GAAA+pB,EAAA2wF,aAAA,GAEA,GAAAuC,OAAAlzF,EAAA0wF,MAAA,OAAAz6G,KACA,IAAAi9G,IAAAlzF,EAAA0wF,MAGA1wF,EAAA0wF,MAAA,KACA1wF,EAAA2wF,WAAA,EACA3wF,EAAA4wF,QAAA,MACA,GAAAsC,IAAA3pG,KAAA,SAAAtT,KAAAu9G,GACA,OAAAv9G,IACA,CAIA,IAAAi9G,EAAA,CAEA,IAAAkB,EAAAp0F,EAAA0wF,MACA,IAAAv+C,EAAAnyC,EAAA2wF,WACA3wF,EAAA0wF,MAAA,KACA1wF,EAAA2wF,WAAA,EACA3wF,EAAA4wF,QAAA,MACA,QAAAh/G,EAAA,EAAAA,EAAAugE,EAAAvgE,IAAAwiH,EAAAxiH,GAAA2X,KAAA,SAAAtT,KAAA,CACAw9G,WAAA,QAEA,OAAAx9G,IACA,CAGA,IAAAqE,EAAA/I,QAAAyuB,EAAA0wF,MAAAwC,GACA,GAAA54G,KAAA,SAAArE,KACA+pB,EAAA0wF,MAAAjwF,OAAAnmB,EAAA,GACA0lB,EAAA2wF,YAAA,EACA,GAAA3wF,EAAA2wF,aAAA,EAAA3wF,EAAA0wF,MAAA1wF,EAAA0wF,MAAA,GACAwC,EAAA3pG,KAAA,SAAAtT,KAAAu9G,GACA,OAAAv9G,IACA,EAIA8G,SAAA7J,UAAAgjB,GAAA,SAAAm+F,EAAA5jH,GACA,IAAA8kB,EAAA45F,EAAAj8G,UAAAgjB,GAAA7iB,KAAA4C,KAAAo+G,EAAA5jH,GACA,IAAAuvB,EAAA/pB,KAAAs+E,eACA,GAAA8/B,IAAA,QAGAr0F,EAAAixF,kBAAAh7G,KAAAq+G,cAAA,cAGA,GAAAt0F,EAAA4wF,UAAA,MAAA36G,KAAA+zC,QACA,SAAAqqE,IAAA,YACA,IAAAr0F,EAAA6wF,aAAA7wF,EAAAixF,kBAAA,CACAjxF,EAAAixF,kBAAAjxF,EAAA+wF,aAAA,KACA/wF,EAAA4wF,QAAA,MACA5wF,EAAAgxF,gBAAA,MACAv9E,EAAA,cAAAzT,EAAAnuB,OAAAmuB,EAAA8wF,SACA,GAAA9wF,EAAAnuB,OAAA,CACAugH,aAAAn8G,KACA,UAAA+pB,EAAA8wF,QAAA,CACAhgH,QAAAuuB,SAAAk1F,iBAAAt+G,KACA,CACA,CACA,CACA,OAAAsf,CACA,EACAxY,SAAA7J,UAAAshH,YAAAz3G,SAAA7J,UAAAgjB,GACAnZ,SAAA7J,UAAAugD,eAAA,SAAA4gE,EAAA5jH,GACA,IAAA8kB,EAAA45F,EAAAj8G,UAAAugD,eAAApgD,KAAA4C,KAAAo+G,EAAA5jH,GACA,GAAA4jH,IAAA,YAOAvjH,QAAAuuB,SAAAo1F,wBAAAx+G,KACA,CACA,OAAAsf,CACA,EACAxY,SAAA7J,UAAAwiB,mBAAA,SAAA2+F,GACA,IAAA9+F,EAAA45F,EAAAj8G,UAAAwiB,mBAAA/iB,MAAAsD,KAAArD,WACA,GAAAyhH,IAAA,YAAAA,IAAA95G,UAAA,CAOAzJ,QAAAuuB,SAAAo1F,wBAAAx+G,KACA,CACA,OAAAsf,CACA,EACA,SAAAk/F,wBAAAzqC,GACA,IAAAhqD,EAAAgqD,EAAAuK,eACAv0D,EAAAixF,kBAAAjnC,EAAAsqC,cAAA,cACA,GAAAt0F,EAAAkxF,kBAAAlxF,EAAAmxF,OAAA,CAGAnxF,EAAA4wF,QAAA,IAGA,SAAA5mC,EAAAsqC,cAAA,WACAtqC,EAAAhgC,QACA,CACA,CACA,SAAAuqE,iBAAAvqC,GACAv2C,EAAA,4BACAu2C,EAAA5X,KAAA,EACA,CAIAr1D,SAAA7J,UAAA82C,OAAA,WACA,IAAAhqB,EAAA/pB,KAAAs+E,eACA,IAAAv0D,EAAA4wF,QAAA,CACAn9E,EAAA,UAIAzT,EAAA4wF,SAAA5wF,EAAAixF,kBACAjnE,OAAA/zC,KAAA+pB,EACA,CACAA,EAAAmxF,OAAA,MACA,OAAAl7G,IACA,EACA,SAAA+zC,OAAApgC,EAAAoW,GACA,IAAAA,EAAAkxF,gBAAA,CACAlxF,EAAAkxF,gBAAA,KACApgH,QAAAuuB,SAAAq1F,QAAA9qG,EAAAoW,EACA,CACA,CACA,SAAA00F,QAAA9qG,EAAAoW,GACAyT,EAAA,SAAAzT,EAAA8wF,SACA,IAAA9wF,EAAA8wF,QAAA,CACAlnG,EAAAwoD,KAAA,EACA,CACApyC,EAAAkxF,gBAAA,MACAtnG,EAAAL,KAAA,UACAypG,KAAAppG,GACA,GAAAoW,EAAA4wF,UAAA5wF,EAAA8wF,QAAAlnG,EAAAwoD,KAAA,EACA,CACAr1D,SAAA7J,UAAAm2C,MAAA,WACA5V,EAAA,wBAAAx9B,KAAAs+E,eAAAq8B,SACA,GAAA36G,KAAAs+E,eAAAq8B,UAAA,OACAn9E,EAAA,SACAx9B,KAAAs+E,eAAAq8B,QAAA,MACA36G,KAAAsT,KAAA,QACA,CACAtT,KAAAs+E,eAAA48B,OAAA,KACA,OAAAl7G,IACA,EACA,SAAA+8G,KAAAppG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,OAAAzT,EAAA4wF,SACA,MAAA5wF,EAAA4wF,SAAAhnG,EAAAwoD,SAAA,MACA,CAKAr1D,SAAA7J,UAAAilE,KAAA,SAAAvuD,GACA,IAAA+qG,EAAA1+G,KACA,IAAA+pB,EAAA/pB,KAAAs+E,eACA,IAAA48B,EAAA,MACAvnG,EAAAsM,GAAA,kBACAud,EAAA,eACA,GAAAzT,EAAA4oB,UAAA5oB,EAAA4R,MAAA,CACA,IAAAp0B,EAAAwiB,EAAA4oB,QAAAzyB,MACA,GAAA3Y,KAAA3L,OAAA8iH,EAAAnjH,KAAAgM,EACA,CACAm3G,EAAAnjH,KAAA,KACA,IACAoY,EAAAsM,GAAA,iBAAA1Y,GACAi2B,EAAA,gBACA,GAAAzT,EAAA4oB,QAAAprC,EAAAwiB,EAAA4oB,QAAAl2C,MAAA8K,GAGA,GAAAwiB,EAAA/iB,aAAAO,IAAA,MAAAA,IAAAjD,WAAA,gBAAAylB,EAAA/iB,cAAAO,MAAA3L,QAAA,OACA,IAAAosF,EAAA02B,EAAAnjH,KAAAgM,GACA,IAAAygF,EAAA,CACAkzB,EAAA,KACAvnG,EAAAy/B,OACA,CACA,IAIA,QAAAz3C,KAAAgY,EAAA,CACA,GAAA3T,KAAArE,KAAA2I,kBAAAqP,EAAAhY,KAAA,YACAqE,KAAArE,GAAA,SAAAgjH,WAAA/yG,GACA,gBAAAgzG,2BACA,OAAAjrG,EAAA/H,GAAAlP,MAAAiX,EAAAhX,UACA,CACA,CAJA,CAIAhB,EACA,CACA,CAGA,QAAAk2C,EAAA,EAAAA,EAAAsoE,EAAAv+G,OAAAi2C,IAAA,CACAl+B,EAAAsM,GAAAk6F,EAAAtoE,GAAA7xC,KAAAsT,KAAAnF,KAAAnO,KAAAm6G,EAAAtoE,IACA,CAIA7xC,KAAAiH,MAAA,SAAA4qC,GACArU,EAAA,gBAAAqU,GACA,GAAAqpE,EAAA,CACAA,EAAA,MACAvnG,EAAAogC,QACA,CACA,EACA,OAAA/zC,IACA,EACA,UAAAmR,SAAA,YACArK,SAAA7J,UAAAkU,OAAAwvD,eAAA,WACA,GAAAs5C,IAAA31G,UAAA,CACA21G,EAAA7/G,EAAA,IACA,CACA,OAAA6/G,EAAAj6G,KACA,CACA,CACAhD,OAAA2B,eAAAmI,SAAA7J,UAAA,yBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,eAAAq5B,aACA,IAEA36G,OAAA2B,eAAAmI,SAAA7J,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,gBAAAt+E,KAAAs+E,eAAA/oB,MACA,IAEAv4D,OAAA2B,eAAAmI,SAAA7J,UAAA,mBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,eAAAq8B,OACA,EACAn/G,IAAA,SAAAA,IAAAuuB,GACA,GAAA/pB,KAAAs+E,eAAA,CACAt+E,KAAAs+E,eAAAq8B,QAAA5wF,CACA,CACA,IAIAjjB,SAAA+3G,UAAAhC,SACA7/G,OAAA2B,eAAAmI,SAAA7J,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,eAAA1iF,MACA,IAOA,SAAAihH,SAAAhrE,EAAA9nB,GAEA,GAAAA,EAAAnuB,SAAA,cACA,IAAAosF,EACA,GAAAj+D,EAAA/iB,WAAAghF,EAAAj+D,EAAAwrC,OAAA1gB,aAAA,IAAAhD,MAAA9nB,EAAAnuB,OAAA,CAEA,GAAAmuB,EAAA4oB,QAAAq1C,EAAAj+D,EAAAwrC,OAAA5jD,KAAA,YAAAoY,EAAAwrC,OAAA35D,SAAA,EAAAosF,EAAAj+D,EAAAwrC,OAAA9zC,aAAAumE,EAAAj+D,EAAAwrC,OAAArxD,OAAA6lB,EAAAnuB,QACAmuB,EAAAwrC,OAAAxV,OACA,MAEAioC,EAAAj+D,EAAAwrC,OAAAupD,QAAAjtE,EAAA9nB,EAAA4oB,QACA,CACA,OAAAq1C,CACA,CACA,SAAA20B,YAAAhpG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,cAAAzT,EAAA6wF,YACA,IAAA7wF,EAAA6wF,WAAA,CACA7wF,EAAA4R,MAAA,KACA9gC,QAAAuuB,SAAA21F,cAAAh1F,EAAApW,EACA,CACA,CACA,SAAAorG,cAAAh1F,EAAApW,GACA6pB,EAAA,gBAAAzT,EAAA6wF,WAAA7wF,EAAAnuB,QAGA,IAAAmuB,EAAA6wF,YAAA7wF,EAAAnuB,SAAA,GACAmuB,EAAA6wF,WAAA,KACAjnG,EAAA0qE,SAAA,MACA1qE,EAAAL,KAAA,OACA,GAAAyW,EAAAqxF,YAAA,CAGA,IAAA4D,EAAArrG,EAAAyqE,eACA,IAAA4gC,KAAA5D,aAAA4D,EAAAC,SAAA,CACAtrG,EAAA0X,SACA,CACA,CACA,CACA,CACA,UAAAla,SAAA,YACArK,SAAAmY,KAAA,SAAAigG,EAAAh7B,GACA,GAAAjlE,IAAA3a,UAAA,CACA2a,EAAA7kB,EAAA,KACA,CACA,OAAA6kB,EAAAnY,SAAAo4G,EAAAh7B,EACA,CACA,CACA,SAAA5oF,QAAA6jH,EAAAv3E,GACA,QAAAjsC,EAAA,EAAAipE,EAAAu6C,EAAAvjH,OAAAD,EAAAipE,EAAAjpE,IAAA,CACA,GAAAwjH,EAAAxjH,KAAAisC,EAAA,OAAAjsC,CACA,CACA,QACA,C,iBCv+BAtB,EAAAC,QAAA8M,SAGA,SAAAg4G,SAAA73G,EAAAC,EAAAC,GACAzH,KAAAuH,QACAvH,KAAAwH,WACAxH,KAAAD,SAAA0H,EACAzH,KAAAsN,KAAA,IACA,CAIA,SAAA+xG,cAAAt1F,GACA,IAAA20F,EAAA1+G,KACAA,KAAAsN,KAAA,KACAtN,KAAAumD,MAAA,KACAvmD,KAAAoxD,OAAA,WACAkuD,eAAAZ,EAAA30F,EACA,CACA,CAIA,IAAA9hB,EAGAb,SAAAm4G,4BAGA,IAAAC,EAAA,CACA9nE,UAAAt9C,EAAA,OAKA,IAAA8+G,EAAA9+G,EAAA,MAGA,IAAAqO,EAAArO,EAAA,aACA,IAAA++G,UAAA/uD,SAAA,YAAAA,cAAAwiD,SAAA,YAAAA,cAAA74B,OAAA,YAAAA,KAAA,IAAA9b,YAAA,aACA,SAAAmhD,oBAAA7xG,GACA,OAAAkB,EAAAwW,KAAA1X,EACA,CACA,SAAA8xG,cAAA9wG,GACA,OAAAE,EAAA24B,SAAA74B,iBAAA4wG,CACA,CACA,IAAAM,EAAAr/G,EAAA,MACA,IAAAs/G,EAAAt/G,EAAA,KACAu/G,EAAAD,EAAAC,iBACA,IAAAC,EAAAx/G,EAAA,QACAy/G,EAAAD,EAAAC,qBACAE,EAAAH,EAAAG,2BACA0F,EAAA7F,EAAA6F,sBACAC,EAAA9F,EAAA8F,uBACAC,EAAA/F,EAAA+F,qBACAC,EAAAhG,EAAAgG,uBACAC,EAAAjG,EAAAiG,2BACAC,EAAAlG,EAAAkG,qBACA,IAAA5F,EAAAT,EAAAS,eACA9/G,EAAA,KAAAA,CAAAgN,SAAA8xG,GACA,SAAA6G,MAAA,CACA,SAAAR,cAAAziH,EAAA6W,EAAA4mG,GACAtyG,KAAA7N,EAAA,MACA0C,KAAA,GAOA,UAAAy9G,IAAA,UAAAA,EAAA5mG,aAAA1L,EAIAjI,KAAAgH,aAAAlK,EAAAkK,WACA,GAAAuzG,EAAAv6G,KAAAgH,WAAAhH,KAAAgH,cAAAlK,EAAAkjH,mBAKAhgH,KAAA23G,cAAAgC,EAAA35G,KAAAlD,EAAA,wBAAAy9G,GAGAv6G,KAAAigH,YAAA,MAGAjgH,KAAAi+G,UAAA,MAEAj+G,KAAAkgH,OAAA,MAEAlgH,KAAA27B,MAAA,MAEA37B,KAAAi/G,SAAA,MAGAj/G,KAAA6zC,UAAA,MAKA,IAAAssE,EAAArjH,EAAAsjH,gBAAA,MACApgH,KAAAogH,eAAAD,EAKAngH,KAAAq7G,gBAAAv+G,EAAAu+G,iBAAA,OAKAr7G,KAAApE,OAAA,EAGAoE,KAAAqgH,QAAA,MAGArgH,KAAAsgH,OAAA,EAMAtgH,KAAAknG,KAAA,KAKAlnG,KAAAugH,iBAAA,MAGAvgH,KAAAwgH,QAAA,SAAAzE,GACAyE,QAAA7sG,EAAAooG,EACA,EAGA/7G,KAAAygH,QAAA,KAGAzgH,KAAA0gH,SAAA,EACA1gH,KAAA2gH,gBAAA,KACA3gH,KAAA4gH,oBAAA,KAIA5gH,KAAA6gH,UAAA,EAIA7gH,KAAA8gH,YAAA,MAGA9gH,KAAA+gH,aAAA,MAGA/gH,KAAAm7G,UAAAr+G,EAAAq+G,YAAA,MAGAn7G,KAAAo7G,cAAAt+G,EAAAs+G,YAGAp7G,KAAAghH,qBAAA,EAIAhhH,KAAAihH,mBAAA,IAAA5B,cAAAr/G,KACA,CACAu/G,cAAAtiH,UAAA47G,UAAA,SAAAA,YACA,IAAA34E,EAAAlgC,KAAA2gH,gBACA,IAAAp4B,EAAA,GACA,MAAAroD,EAAA,CACAqoD,EAAAhtF,KAAA2kC,GACAA,IAAA5yB,IACA,CACA,OAAAi7E,CACA,GACA,WACA,IACAvrF,OAAA2B,eAAA4gH,cAAAtiH,UAAA,UACA8Z,IAAAyoG,EAAA9nE,WAAA,SAAAwpE,4BACA,OAAAlhH,KAAA64G,WACA,+FAEA,OAAA/hE,GAAA,CACA,EARA,GAYA,IAAAqqE,EACA,UAAAhwG,SAAA,YAAAA,OAAAiwG,oBAAAtjH,SAAAb,UAAAkU,OAAAiwG,eAAA,YACAD,EAAArjH,SAAAb,UAAAkU,OAAAiwG,aACApkH,OAAA2B,eAAAyI,SAAA+J,OAAAiwG,YAAA,CACAxiH,MAAA,SAAAA,MAAAs1E,GACA,GAAAitC,EAAA/jH,KAAA4C,KAAAk0E,GAAA,YACA,GAAAl0E,OAAAoH,SAAA,aACA,OAAA8sE,KAAAkK,0BAAAmhC,aACA,GAEA,MACA4B,EAAA,SAAAA,gBAAAjtC,GACA,OAAAA,aAAAl0E,IACA,CACA,CACA,SAAAoH,SAAAtK,GACAmL,KAAA7N,EAAA,MAYA,IAAAmgH,EAAAv6G,gBAAAiI,EACA,IAAAsyG,IAAA4G,EAAA/jH,KAAAgK,SAAApH,MAAA,WAAAoH,SAAAtK,GACAkD,KAAAo+E,eAAA,IAAAmhC,cAAAziH,EAAAkD,KAAAu6G,GAGAv6G,KAAAsiD,SAAA,KACA,GAAAxlD,EAAA,CACA,UAAAA,EAAAL,QAAA,WAAAuD,KAAAsH,OAAAxK,EAAAL,MACA,UAAAK,EAAAukH,SAAA,WAAArhH,KAAAw3G,QAAA16G,EAAAukH,OACA,UAAAvkH,EAAAuuB,UAAA,WAAArrB,KAAAw7G,SAAA1+G,EAAAuuB,QACA,UAAAvuB,EAAAwkH,QAAA,WAAAthH,KAAA+H,OAAAjL,EAAAwkH,KACA,CACApI,EAAA97G,KAAA4C,KACA,CAGAoH,SAAAnK,UAAAkhF,KAAA,WACA+7B,EAAAl6G,KAAA,IAAA0/G,EACA,EACA,SAAA6B,cAAA5tG,EAAAlM,GACA,IAAAs0G,EAAA,IAAA8D,EAEA3F,EAAAvmG,EAAAooG,GACAlhH,QAAAuuB,SAAA3hB,EAAAs0G,EACA,CAKA,SAAAyF,WAAA7tG,EAAAoW,EAAAxiB,EAAAE,GACA,IAAAs0G,EACA,GAAAx0G,IAAA,MACAw0G,EAAA,IAAA6D,CACA,gBAAAr4G,IAAA,WAAAwiB,EAAA/iB,WAAA,CACA+0G,EAAA,IAAAlC,EAAA,4BAAAtyG,EACA,CACA,GAAAw0G,EAAA,CACA7B,EAAAvmG,EAAAooG,GACAlhH,QAAAuuB,SAAA3hB,EAAAs0G,GACA,YACA,CACA,WACA,CACA30G,SAAAnK,UAAAR,MAAA,SAAA8K,EAAAC,EAAAC,GACA,IAAAsiB,EAAA/pB,KAAAo+E,eACA,IAAA4J,EAAA,MACA,IAAAy5B,GAAA13F,EAAA/iB,YAAAqyG,cAAA9xG,GACA,GAAAk6G,IAAAh5G,EAAA24B,SAAA75B,GAAA,CACAA,EAAA6xG,oBAAA7xG,EACA,CACA,UAAAC,IAAA,YACAC,EAAAD,EACAA,EAAA,IACA,CACA,GAAAi6G,EAAAj6G,EAAA,kBAAAA,IAAAuiB,EAAAsxF,gBACA,UAAA5zG,IAAA,WAAAA,EAAAs4G,IACA,GAAAh2F,EAAAm2F,OAAAqB,cAAAvhH,KAAAyH,QAAA,GAAAg6G,GAAAD,WAAAxhH,KAAA+pB,EAAAxiB,EAAAE,GAAA,CACAsiB,EAAA82F,YACA74B,EAAA05B,cAAA1hH,KAAA+pB,EAAA03F,EAAAl6G,EAAAC,EAAAC,EACA,CACA,OAAAugF,CACA,EACA5gF,SAAAnK,UAAA0kH,KAAA,WACA3hH,KAAAo+E,eAAAkiC,QACA,EACAl5G,SAAAnK,UAAA2kH,OAAA,WACA,IAAA73F,EAAA/pB,KAAAo+E,eACA,GAAAr0D,EAAAu2F,OAAA,CACAv2F,EAAAu2F,SACA,IAAAv2F,EAAAs2F,UAAAt2F,EAAAu2F,SAAAv2F,EAAAw2F,kBAAAx2F,EAAA42F,gBAAAkB,YAAA7hH,KAAA+pB,EACA,CACA,EACA3iB,SAAAnK,UAAA6kH,mBAAA,SAAAA,mBAAAt6G,GAEA,UAAAA,IAAA,SAAAA,IAAA05B,cACA,gGAAA5lC,SAAAkM,EAAA,IAAA05B,gBAAA,aAAA4+E,EAAAt4G,GACAxH,KAAAo+E,eAAAi9B,gBAAA7zG,EACA,OAAAxH,IACA,EACAhD,OAAA2B,eAAAyI,SAAAnK,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,gBAAAp+E,KAAAo+E,eAAAy6B,WACA,IAEA,SAAAkJ,YAAAh4F,EAAAxiB,EAAAC,GACA,IAAAuiB,EAAA/iB,YAAA+iB,EAAAq2F,gBAAA,cAAA74G,IAAA,UACAA,EAAAkB,EAAAwW,KAAA1X,EAAAC,EACA,CACA,OAAAD,CACA,CACAvK,OAAA2B,eAAAyI,SAAAnK,UAAA,yBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAu5B,aACA,IAMA,SAAA+J,cAAA/tG,EAAAoW,EAAA03F,EAAAl6G,EAAAC,EAAAC,GACA,IAAAg6G,EAAA,CACA,IAAAO,EAAAD,YAAAh4F,EAAAxiB,EAAAC,GACA,GAAAD,IAAAy6G,EAAA,CACAP,EAAA,KACAj6G,EAAA,SACAD,EAAAy6G,CACA,CACA,CACA,IAAA9lD,EAAAnyC,EAAA/iB,WAAA,EAAAO,EAAA3L,OACAmuB,EAAAnuB,QAAAsgE,EACA,IAAA8rB,EAAAj+D,EAAAnuB,OAAAmuB,EAAA4tF,cAEA,IAAA3vB,EAAAj+D,EAAAk0F,UAAA,KACA,GAAAl0F,EAAAs2F,SAAAt2F,EAAAu2F,OAAA,CACA,IAAA2B,EAAAl4F,EAAA62F,oBACA72F,EAAA62F,oBAAA,CACAr5G,QACAC,WACAi6G,QACA1hH,SAAA0H,EACA6F,KAAA,MAEA,GAAA20G,EAAA,CACAA,EAAA30G,KAAAyc,EAAA62F,mBACA,MACA72F,EAAA42F,gBAAA52F,EAAA62F,mBACA,CACA72F,EAAAi3F,sBAAA,CACA,MACAkB,QAAAvuG,EAAAoW,EAAA,MAAAmyC,EAAA30D,EAAAC,EAAAC,EACA,CACA,OAAAugF,CACA,CACA,SAAAk6B,QAAAvuG,EAAAoW,EAAAs3F,EAAAnlD,EAAA30D,EAAAC,EAAAC,GACAsiB,EAAA22F,SAAAxkD,EACAnyC,EAAA02F,QAAAh5G,EACAsiB,EAAAs2F,QAAA,KACAt2F,EAAAm9E,KAAA,KACA,GAAAn9E,EAAA8pB,UAAA9pB,EAAAy2F,QAAA,IAAAb,EAAA,kBAAA0B,EAAA1tG,EAAA6jG,QAAAjwG,EAAAwiB,EAAAy2F,cAAA7sG,EAAArM,OAAAC,EAAAC,EAAAuiB,EAAAy2F,SACAz2F,EAAAm9E,KAAA,KACA,CACA,SAAAib,aAAAxuG,EAAAoW,EAAAm9E,EAAA6U,EAAAt0G,KACAsiB,EAAA82F,UACA,GAAA3Z,EAAA,CAGArsG,QAAAuuB,SAAA3hB,EAAAs0G,GAGAlhH,QAAAuuB,SAAAg5F,YAAAzuG,EAAAoW,GACApW,EAAAyqE,eAAA2iC,aAAA,KACA7G,EAAAvmG,EAAAooG,EACA,MAGAt0G,EAAAs0G,GACApoG,EAAAyqE,eAAA2iC,aAAA,KACA7G,EAAAvmG,EAAAooG,GAGAqG,YAAAzuG,EAAAoW,EACA,CACA,CACA,SAAAs4F,mBAAAt4F,GACAA,EAAAs2F,QAAA,MACAt2F,EAAA02F,QAAA,KACA12F,EAAAnuB,QAAAmuB,EAAA22F,SACA32F,EAAA22F,SAAA,CACA,CACA,SAAAF,QAAA7sG,EAAAooG,GACA,IAAAhyF,EAAApW,EAAAyqE,eACA,IAAA8oB,EAAAn9E,EAAAm9E,KACA,IAAAz/F,EAAAsiB,EAAA02F,QACA,UAAAh5G,IAAA,qBAAAg4G,EACA4C,mBAAAt4F,GACA,GAAAgyF,EAAAoG,aAAAxuG,EAAAoW,EAAAm9E,EAAA6U,EAAAt0G,OAAA,CAEA,IAAAw3G,EAAAqD,WAAAv4F,IAAApW,EAAAkgC,UACA,IAAAorE,IAAAl1F,EAAAu2F,SAAAv2F,EAAAw2F,kBAAAx2F,EAAA42F,gBAAA,CACAkB,YAAAluG,EAAAoW,EACA,CACA,GAAAm9E,EAAA,CACArsG,QAAAuuB,SAAAm5F,WAAA5uG,EAAAoW,EAAAk1F,EAAAx3G,EACA,MACA86G,WAAA5uG,EAAAoW,EAAAk1F,EAAAx3G,EACA,CACA,CACA,CACA,SAAA86G,WAAA5uG,EAAAoW,EAAAk1F,EAAAx3G,GACA,IAAAw3G,EAAAuD,aAAA7uG,EAAAoW,GACAA,EAAA82F,YACAp5G,IACA26G,YAAAzuG,EAAAoW,EACA,CAKA,SAAAy4F,aAAA7uG,EAAAoW,GACA,GAAAA,EAAAnuB,SAAA,GAAAmuB,EAAAk0F,UAAA,CACAl0F,EAAAk0F,UAAA,MACAtqG,EAAAL,KAAA,QACA,CACA,CAGA,SAAAuuG,YAAAluG,EAAAoW,GACAA,EAAAw2F,iBAAA,KACA,IAAAh6D,EAAAx8B,EAAA42F,gBACA,GAAAhtG,EAAA6jG,SAAAjxD,KAAAj5C,KAAA,CAEA,IAAAs3D,EAAA76C,EAAAi3F,qBACA,IAAAzrD,EAAA,IAAA73D,MAAAknE,GACA,IAAA69C,EAAA14F,EAAAk3F,mBACAwB,EAAAl8D,QACA,IAAAha,EAAA,EACA,IAAAm2E,EAAA,KACA,MAAAn8D,EAAA,CACAgP,EAAAhpB,GAAAga,EACA,IAAAA,EAAAk7D,MAAAiB,EAAA,MACAn8D,IAAAj5C,KACAi/B,GAAA,CACA,CACAgpB,EAAAmtD,aACAR,QAAAvuG,EAAAoW,EAAA,KAAAA,EAAAnuB,OAAA25D,EAAA,GAAAktD,EAAArxD,QAIArnC,EAAA82F,YACA92F,EAAA62F,oBAAA,KACA,GAAA6B,EAAAn1G,KAAA,CACAyc,EAAAk3F,mBAAAwB,EAAAn1G,KACAm1G,EAAAn1G,KAAA,IACA,MACAyc,EAAAk3F,mBAAA,IAAA5B,cAAAt1F,EACA,CACAA,EAAAi3F,qBAAA,CACA,MAEA,MAAAz6D,EAAA,CACA,IAAAh/C,EAAAg/C,EAAAh/C,MACA,IAAAC,EAAA++C,EAAA/+C,SACA,IAAAC,EAAA8+C,EAAAxmD,SACA,IAAAm8D,EAAAnyC,EAAA/iB,WAAA,EAAAO,EAAA3L,OACAsmH,QAAAvuG,EAAAoW,EAAA,MAAAmyC,EAAA30D,EAAAC,EAAAC,GACA8+C,IAAAj5C,KACAyc,EAAAi3F,uBAKA,GAAAj3F,EAAAs2F,QAAA,CACA,KACA,CACA,CACA,GAAA95D,IAAA,KAAAx8B,EAAA62F,oBAAA,IACA,CACA72F,EAAA42F,gBAAAp6D,EACAx8B,EAAAw2F,iBAAA,KACA,CACAn5G,SAAAnK,UAAAqK,OAAA,SAAAC,EAAAC,EAAAC,GACAA,EAAA,IAAAsyG,EAAA,YACA,EACA3yG,SAAAnK,UAAAu6G,QAAA,KACApwG,SAAAnK,UAAAijB,IAAA,SAAA3Y,EAAAC,EAAAC,GACA,IAAAsiB,EAAA/pB,KAAAo+E,eACA,UAAA72E,IAAA,YACAE,EAAAF,EACAA,EAAA,KACAC,EAAA,IACA,gBAAAA,IAAA,YACAC,EAAAD,EACAA,EAAA,IACA,CACA,GAAAD,IAAA,MAAAA,IAAAjD,UAAAtE,KAAAvD,MAAA8K,EAAAC,GAGA,GAAAuiB,EAAAu2F,OAAA,CACAv2F,EAAAu2F,OAAA,EACAtgH,KAAA4hH,QACA,CAGA,IAAA73F,EAAAm2F,OAAAyC,YAAA3iH,KAAA+pB,EAAAtiB,GACA,OAAAzH,IACA,EACAhD,OAAA2B,eAAAyI,SAAAnK,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAxiF,MACA,IAEA,SAAA0mH,WAAAv4F,GACA,OAAAA,EAAAm2F,QAAAn2F,EAAAnuB,SAAA,GAAAmuB,EAAA42F,kBAAA,OAAA52F,EAAAk1F,WAAAl1F,EAAAs2F,OACA,CACA,SAAAuC,UAAAjvG,EAAAoW,GACApW,EAAA5L,QAAA,SAAAjF,GACAinB,EAAA82F,YACA,GAAA/9G,EAAA,CACAo3G,EAAAvmG,EAAA7Q,EACA,CACAinB,EAAA+2F,YAAA,KACAntG,EAAAL,KAAA,aACA8uG,YAAAzuG,EAAAoW,EACA,GACA,CACA,SAAA84F,UAAAlvG,EAAAoW,GACA,IAAAA,EAAA+2F,cAAA/2F,EAAAk2F,YAAA,CACA,UAAAtsG,EAAA5L,SAAA,aAAAgiB,EAAA8pB,UAAA,CACA9pB,EAAA82F,YACA92F,EAAAk2F,YAAA,KACAplH,QAAAuuB,SAAAw5F,UAAAjvG,EAAAoW,EACA,MACAA,EAAA+2F,YAAA,KACAntG,EAAAL,KAAA,YACA,CACA,CACA,CACA,SAAA8uG,YAAAzuG,EAAAoW,GACA,IAAA+4F,EAAAR,WAAAv4F,GACA,GAAA+4F,EAAA,CACAD,UAAAlvG,EAAAoW,GACA,GAAAA,EAAA82F,YAAA,GACA92F,EAAAk1F,SAAA,KACAtrG,EAAAL,KAAA,UACA,GAAAyW,EAAAqxF,YAAA,CAGA,IAAA2H,EAAApvG,EAAA2qE,eACA,IAAAykC,KAAA3H,aAAA2H,EAAAnI,WAAA,CACAjnG,EAAA0X,SACA,CACA,CACA,CACA,CACA,OAAAy3F,CACA,CACA,SAAAH,YAAAhvG,EAAAoW,EAAAtiB,GACAsiB,EAAAm2F,OAAA,KACAkC,YAAAzuG,EAAAoW,GACA,GAAAtiB,EAAA,CACA,GAAAsiB,EAAAk1F,SAAApkH,QAAAuuB,SAAA3hB,QAAAkM,EAAA0L,KAAA,SAAA5X,EACA,CACAsiB,EAAA4R,MAAA,KACAhoB,EAAA2uC,SAAA,KACA,CACA,SAAAg9D,eAAA0D,EAAAj5F,EAAAjnB,GACA,IAAAyjD,EAAAy8D,EAAAz8D,MACAy8D,EAAAz8D,MAAA,KACA,MAAAA,EAAA,CACA,IAAA9+C,EAAA8+C,EAAAxmD,SACAgqB,EAAA82F,YACAp5G,EAAA3E,GACAyjD,IAAAj5C,IACA,CAGAyc,EAAAk3F,mBAAA3zG,KAAA01G,CACA,CACAhmH,OAAA2B,eAAAyI,SAAAnK,UAAA,aAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,GAAA/W,KAAAo+E,iBAAA95E,UAAA,CACA,YACA,CACA,OAAAtE,KAAAo+E,eAAAvqC,SACA,EACAr4C,IAAA,SAAAA,IAAAoD,GAGA,IAAAoB,KAAAo+E,eAAA,CACA,MACA,CAIAp+E,KAAAo+E,eAAAvqC,UAAAj1C,CACA,IAEAwI,SAAAnK,UAAAouB,QAAAouF,EAAApuF,QACAjkB,SAAAnK,UAAAw+G,WAAAhC,EAAAiC,UACAt0G,SAAAnK,UAAAu+G,SAAA,SAAA14G,EAAA2E,GACAA,EAAA3E,EACA,C,gBC9nBA,IAAAmgH,EACA,SAAAC,gBAAA36G,EAAApL,EAAAyB,GAAAzB,EAAAgmH,eAAAhmH,GAAA,GAAAA,KAAAoL,EAAA,CAAAvL,OAAA2B,eAAA4J,EAAApL,EAAA,CAAAyB,QAAAoc,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,YAAA/5C,EAAApL,GAAAyB,CAAA,QAAA2J,CAAA,CACA,SAAA46G,eAAA3xG,GAAA,IAAArU,EAAAimH,aAAA5xG,EAAA,wBAAArU,IAAA,SAAAA,EAAAyb,OAAAzb,EAAA,CACA,SAAAimH,aAAA7M,EAAA8M,GAAA,UAAA9M,IAAA,UAAAA,IAAA,YAAAA,EAAA,IAAA+M,EAAA/M,EAAAplG,OAAAoyG,aAAA,GAAAD,IAAAh/G,UAAA,KAAAgb,EAAAgkG,EAAAlmH,KAAAm5G,EAAA8M,GAAA,qBAAA/jG,IAAA,gBAAAA,EAAA,UAAA5W,UAAA,uDAAA26G,IAAA,SAAAzqG,OAAAhR,QAAA2uG,EAAA,CACA,IAAA0I,EAAA7kH,EAAA,MACA,IAAAopH,EAAAryG,OAAA,eACA,IAAAsyG,EAAAtyG,OAAA,cACA,IAAAuyG,EAAAvyG,OAAA,SACA,IAAAwyG,EAAAxyG,OAAA,SACA,IAAAyyG,EAAAzyG,OAAA,eACA,IAAA0yG,EAAA1yG,OAAA,iBACA,IAAA2yG,EAAA3yG,OAAA,UACA,SAAA4yG,iBAAAnlH,EAAAm4C,GACA,OACAn4C,QACAm4C,OAEA,CACA,SAAAitE,eAAAC,GACA,IAAAloH,EAAAkoH,EAAAT,GACA,GAAAznH,IAAA,MACA,IAAAiZ,EAAAivG,EAAAH,GAAA3nD,OAIA,GAAAnnD,IAAA,MACAivG,EAAAL,GAAA,KACAK,EAAAT,GAAA,KACAS,EAAAR,GAAA,KACA1nH,EAAAgoH,iBAAA/uG,EAAA,OACA,CACA,CACA,CACA,SAAAkvG,WAAAD,GAGAppH,QAAAuuB,SAAA46F,eAAAC,EACA,CACA,SAAAE,YAAAC,EAAAH,GACA,gBAAAloH,EAAA6G,GACAwhH,EAAAjoH,MAAA,WACA,GAAA8nH,EAAAN,GAAA,CACA5nH,EAAAgoH,iBAAAz/G,UAAA,OACA,MACA,CACA2/G,EAAAJ,GAAA9nH,EAAA6G,EACA,GAAAA,EACA,CACA,CACA,IAAAyhH,EAAArnH,OAAAo0G,gBAAA,eACA,IAAAkT,EAAAtnH,OAAAunH,gBAAAtB,EAAA,CACA,UAAAtvG,GACA,OAAA3T,KAAA8jH,EACA,EACAx2G,KAAA,SAAAA,OACA,IAAAoxG,EAAA1+G,KAGA,IAAAsG,EAAAtG,KAAA0jH,GACA,GAAAp9G,IAAA,MACA,OAAAzK,QAAA+G,OAAA0D,EACA,CACA,GAAAtG,KAAA2jH,GAAA,CACA,OAAA9nH,QAAAE,QAAAgoH,iBAAAz/G,UAAA,MACA,CACA,GAAAtE,KAAA8jH,GAAAjwE,UAAA,CAKA,WAAAh4C,SAAA,SAAAE,EAAA6G,GACA/H,QAAAuuB,UAAA,WACA,GAAAs1F,EAAAgF,GAAA,CACA9gH,EAAA87G,EAAAgF,GACA,MACA3nH,EAAAgoH,iBAAAz/G,UAAA,MACA,CACA,GACA,GACA,CAMA,IAAA8/G,EAAApkH,KAAA4jH,GACA,IAAAzmD,EACA,GAAAinD,EAAA,CACAjnD,EAAA,IAAAthE,QAAAsoH,YAAAC,EAAApkH,MACA,MAGA,IAAAgV,EAAAhV,KAAA8jH,GAAA3nD,OACA,GAAAnnD,IAAA,MACA,OAAAnZ,QAAAE,QAAAgoH,iBAAA/uG,EAAA,OACA,CACAmoD,EAAA,IAAAthE,QAAAmE,KAAA6jH,GACA,CACA7jH,KAAA4jH,GAAAzmD,EACA,OAAAA,CACA,GACA+lD,gBAAAD,EAAA9xG,OAAAwvD,eAAA,WACA,OAAA3gE,IACA,IAAAkjH,gBAAAD,EAAA,mBAAAuB,UACA,IAAAC,EAAAzkH,KAIA,WAAAnE,SAAA,SAAAE,EAAA6G,GACA6hH,EAAAX,GAAAz4F,QAAA,eAAAvoB,GACA,GAAAA,EAAA,CACAF,EAAAE,GACA,MACA,CACA/G,EAAAgoH,iBAAAz/G,UAAA,MACA,GACA,GACA,IAAA2+G,GAAAoB,GACA,IAAApK,EAAA,SAAAA,kCAAAtmG,GACA,IAAA+wG,EACA,IAAA3jD,EAAA/jE,OAAAzC,OAAA+pH,GAAAI,EAAA,GAAAxB,gBAAAwB,EAAAZ,EAAA,CACAllH,MAAA+U,EACA2uC,SAAA,OACA4gE,gBAAAwB,EAAAlB,EAAA,CACA5kH,MAAA,KACA0jD,SAAA,OACA4gE,gBAAAwB,EAAAjB,EAAA,CACA7kH,MAAA,KACA0jD,SAAA,OACA4gE,gBAAAwB,EAAAhB,EAAA,CACA9kH,MAAA,KACA0jD,SAAA,OACA4gE,gBAAAwB,EAAAf,EAAA,CACA/kH,MAAA+U,EAAA2qE,eAAAs8B,WACAt4D,SAAA,OACA4gE,gBAAAwB,EAAAb,EAAA,CACAjlH,MAAA,SAAAA,MAAA7C,EAAA6G,GACA,IAAAoS,EAAA+rD,EAAA+iD,GAAA3nD,OACA,GAAAnnD,EAAA,CACA+rD,EAAA6iD,GAAA,KACA7iD,EAAAyiD,GAAA,KACAziD,EAAA0iD,GAAA,KACA1nH,EAAAgoH,iBAAA/uG,EAAA,OACA,MACA+rD,EAAAyiD,GAAAznH,EACAglE,EAAA0iD,GAAA7gH,CACA,CACA,EACA0/C,SAAA,OACAoiE,IACA3jD,EAAA6iD,GAAA,KACA3E,EAAAtrG,GAAA,SAAA7Q,GACA,GAAAA,KAAAqD,OAAA,8BACA,IAAAvD,EAAAm+D,EAAA0iD,GAGA,GAAA7gH,IAAA,MACAm+D,EAAA6iD,GAAA,KACA7iD,EAAAyiD,GAAA,KACAziD,EAAA0iD,GAAA,KACA7gH,EAAAE,EACA,CACAi+D,EAAA2iD,GAAA5gH,EACA,MACA,CACA,IAAA/G,EAAAglE,EAAAyiD,GACA,GAAAznH,IAAA,MACAglE,EAAA6iD,GAAA,KACA7iD,EAAAyiD,GAAA,KACAziD,EAAA0iD,GAAA,KACA1nH,EAAAgoH,iBAAAz/G,UAAA,MACA,CACAy8D,EAAA4iD,GAAA,IACA,IACAhwG,EAAAsM,GAAA,WAAAikG,WAAA/1G,KAAA,KAAA4yD,IACA,OAAAA,CACA,EACA1mE,EAAAC,QAAA2/G,C,iBCjLA,SAAA0K,QAAAzwC,EAAA0wC,GAAA,IAAAzhH,EAAAnG,OAAAmG,KAAA+wE,GAAA,GAAAl3E,OAAA6nH,sBAAA,KAAAC,EAAA9nH,OAAA6nH,sBAAA3wC,GAAA0wC,IAAAE,IAAAz0G,QAAA,SAAA00G,GAAA,OAAA/nH,OAAA65C,yBAAAq9B,EAAA6wC,GAAA/pG,UAAA,KAAA7X,EAAA5H,KAAAmB,MAAAyG,EAAA2hH,EAAA,QAAA3hH,CAAA,CACA,SAAA6hH,cAAAj6G,GAAA,QAAApP,EAAA,EAAAA,EAAAgB,UAAAf,OAAAD,IAAA,KAAAy6D,EAAA,MAAAz5D,UAAAhB,GAAAgB,UAAAhB,GAAA,GAAAA,EAAA,EAAAgpH,QAAA3nH,OAAAo5D,IAAA,GAAA/2B,SAAA,SAAAliC,GAAA+lH,gBAAAn4G,EAAA5N,EAAAi5D,EAAAj5D,GAAA,IAAAH,OAAAioH,0BAAAjoH,OAAAgqF,iBAAAj8E,EAAA/N,OAAAioH,0BAAA7uD,IAAAuuD,QAAA3nH,OAAAo5D,IAAA/2B,SAAA,SAAAliC,GAAAH,OAAA2B,eAAAoM,EAAA5N,EAAAH,OAAA65C,yBAAAuf,EAAAj5D,GAAA,WAAA4N,CAAA,CACA,SAAAm4G,gBAAA36G,EAAApL,EAAAyB,GAAAzB,EAAAgmH,eAAAhmH,GAAA,GAAAA,KAAAoL,EAAA,CAAAvL,OAAA2B,eAAA4J,EAAApL,EAAA,CAAAyB,QAAAoc,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,YAAA/5C,EAAApL,GAAAyB,CAAA,QAAA2J,CAAA,CACA,SAAA28G,gBAAA9/B,EAAA+/B,GAAA,KAAA//B,aAAA+/B,GAAA,WAAAz8G,UAAA,sCACA,SAAA08G,kBAAAr6G,EAAAs6G,GAAA,QAAA1pH,EAAA,EAAAA,EAAA0pH,EAAAzpH,OAAAD,IAAA,KAAAi7C,EAAAyuE,EAAA1pH,GAAAi7C,EAAA57B,WAAA47B,EAAA57B,YAAA,MAAA47B,EAAAyL,aAAA,kBAAAzL,IAAA0L,SAAA,KAAAtlD,OAAA2B,eAAAoM,EAAAo4G,eAAAvsE,EAAAz5C,KAAAy5C,EAAA,EACA,SAAA0uE,aAAAH,EAAAI,EAAAC,GAAA,GAAAD,EAAAH,kBAAAD,EAAAloH,UAAAsoH,GAAA,GAAAC,EAAAJ,kBAAAD,EAAAK,GAAAxoH,OAAA2B,eAAAwmH,EAAA,aAAA7iE,SAAA,eAAA6iE,CAAA,CACA,SAAAhC,eAAA3xG,GAAA,IAAArU,EAAAimH,aAAA5xG,EAAA,wBAAArU,IAAA,SAAAA,EAAAyb,OAAAzb,EAAA,CACA,SAAAimH,aAAA7M,EAAA8M,GAAA,UAAA9M,IAAA,UAAAA,IAAA,YAAAA,EAAA,IAAA+M,EAAA/M,EAAAplG,OAAAoyG,aAAA,GAAAD,IAAAh/G,UAAA,KAAAgb,EAAAgkG,EAAAlmH,KAAAm5G,EAAA8M,GAAA,qBAAA/jG,IAAA,gBAAAA,EAAA,UAAA5W,UAAA,uDAAA26G,IAAA,SAAAzqG,OAAAhR,QAAA2uG,EAAA,CACA,IAAAmD,EAAAt/G,EAAA,MACAqO,EAAAixG,EAAAjxG,OACA,IAAAg9G,EAAArrH,EAAA,MACA8tF,EAAAu9B,EAAAv9B,QACA,IAAAzsF,EAAAysF,KAAAzsF,QAAA,UACA,SAAAiqH,WAAAhY,EAAA3iG,EAAAiqD,GACAvsD,EAAAxL,UAAA6X,KAAA1X,KAAAswG,EAAA3iG,EAAAiqD,EACA,CACA36D,EAAAC,QAAA,WACA,SAAAk/G,aACA0L,gBAAAllH,KAAAw5G,YACAx5G,KAAAwf,KAAA,KACAxf,KAAA4uG,KAAA,KACA5uG,KAAApE,OAAA,CACA,CACA0pH,aAAA9L,WAAA,EACAr8G,IAAA,OACAyB,MAAA,SAAArD,KAAAimC,GACA,IAAA+kB,EAAA,CACAvxC,KAAAwsB,EACAl0B,KAAA,MAEA,GAAAtN,KAAApE,OAAA,EAAAoE,KAAA4uG,KAAAthG,KAAAi5C,OAAAvmD,KAAAwf,KAAA+mC,EACAvmD,KAAA4uG,KAAAroD,IACAvmD,KAAApE,MACA,GACA,CACAuB,IAAA,UACAyB,MAAA,SAAAqd,QAAAulB,GACA,IAAA+kB,EAAA,CACAvxC,KAAAwsB,EACAl0B,KAAAtN,KAAAwf,MAEA,GAAAxf,KAAApE,SAAA,EAAAoE,KAAA4uG,KAAAroD,EACAvmD,KAAAwf,KAAA+mC,IACAvmD,KAAApE,MACA,GACA,CACAuB,IAAA,QACAyB,MAAA,SAAAi2C,QACA,GAAA70C,KAAApE,SAAA,SACA,IAAAosF,EAAAhoF,KAAAwf,KAAAxK,KACA,GAAAhV,KAAApE,SAAA,EAAAoE,KAAAwf,KAAAxf,KAAA4uG,KAAA,UAAA5uG,KAAAwf,KAAAxf,KAAAwf,KAAAlS,OACAtN,KAAApE,OACA,OAAAosF,CACA,GACA,CACA7qF,IAAA,QACAyB,MAAA,SAAAmhD,QACA//C,KAAAwf,KAAAxf,KAAA4uG,KAAA,KACA5uG,KAAApE,OAAA,CACA,GACA,CACAuB,IAAA,OACAyB,MAAA,SAAA+S,KAAAgzD,GACA,GAAA3kE,KAAApE,SAAA,WACA,IAAAo7C,EAAAh3C,KAAAwf,KACA,IAAAwoE,EAAA,GAAAhxC,EAAAhiC,KACA,MAAAgiC,IAAA1pC,KAAA06E,GAAArjB,EAAA3tB,EAAAhiC,KACA,OAAAgzE,CACA,GACA,CACA7qF,IAAA,SACAyB,MAAA,SAAAsF,OAAA2tC,GACA,GAAA7xC,KAAApE,SAAA,SAAA6M,EAAAs8C,MAAA,GACA,IAAAijC,EAAAv/E,EAAAkM,YAAAk9B,IAAA,GACA,IAAAmF,EAAAh3C,KAAAwf,KACA,IAAA7jB,EAAA,EACA,MAAAq7C,EAAA,CACA0uE,WAAA1uE,EAAAhiC,KAAAgzE,EAAArsF,GACAA,GAAAq7C,EAAAhiC,KAAApZ,OACAo7C,IAAA1pC,IACA,CACA,OAAA06E,CACA,GAGA,CACA7qF,IAAA,UACAyB,MAAA,SAAAkgH,QAAAjtE,EAAA8zE,GACA,IAAA39B,EACA,GAAAn2C,EAAA7xC,KAAAwf,KAAAxK,KAAApZ,OAAA,CAEAosF,EAAAhoF,KAAAwf,KAAAxK,KAAArX,MAAA,EAAAk0C,GACA7xC,KAAAwf,KAAAxK,KAAAhV,KAAAwf,KAAAxK,KAAArX,MAAAk0C,EACA,SAAAA,IAAA7xC,KAAAwf,KAAAxK,KAAApZ,OAAA,CAEAosF,EAAAhoF,KAAA60C,OACA,MAEAmzC,EAAA29B,EAAA3lH,KAAA4lH,WAAA/zE,GAAA7xC,KAAA6lH,WAAAh0E,EACA,CACA,OAAAm2C,CACA,GACA,CACA7qF,IAAA,QACAyB,MAAA,SAAA6iB,QACA,OAAAzhB,KAAAwf,KAAAxK,IACA,GAGA,CACA7X,IAAA,aACAyB,MAAA,SAAAgnH,WAAA/zE,GACA,IAAAmF,EAAAh3C,KAAAwf,KACA,IAAAo2C,EAAA,EACA,IAAAoyB,EAAAhxC,EAAAhiC,KACA68B,GAAAm2C,EAAApsF,OACA,MAAAo7C,IAAA1pC,KAAA,CACA,IAAA6lE,EAAAn8B,EAAAhiC,KACA,IAAAigG,EAAApjE,EAAAshC,EAAAv3E,OAAAu3E,EAAAv3E,OAAAi2C,EACA,GAAAojE,IAAA9hC,EAAAv3E,OAAAosF,GAAA7U,OAAA6U,GAAA7U,EAAAx1E,MAAA,EAAAk0C,GACAA,GAAAojE,EACA,GAAApjE,IAAA,GACA,GAAAojE,IAAA9hC,EAAAv3E,OAAA,GACAg6D,EACA,GAAA5e,EAAA1pC,KAAAtN,KAAAwf,KAAAw3B,EAAA1pC,UAAAtN,KAAAwf,KAAAxf,KAAA4uG,KAAA,IACA,MACA5uG,KAAAwf,KAAAw3B,EACAA,EAAAhiC,KAAAm+D,EAAAx1E,MAAAs3G,EACA,CACA,KACA,GACAr/C,CACA,CACA51D,KAAApE,QAAAg6D,EACA,OAAAoyB,CACA,GAGA,CACA7qF,IAAA,aACAyB,MAAA,SAAAinH,WAAAh0E,GACA,IAAAm2C,EAAAv/E,EAAAkM,YAAAk9B,GACA,IAAAmF,EAAAh3C,KAAAwf,KACA,IAAAo2C,EAAA,EACA5e,EAAAhiC,KAAAF,KAAAkzE,GACAn2C,GAAAmF,EAAAhiC,KAAApZ,OACA,MAAAo7C,IAAA1pC,KAAA,CACA,IAAAorD,EAAA1hB,EAAAhiC,KACA,IAAAigG,EAAApjE,EAAA6mB,EAAA98D,OAAA88D,EAAA98D,OAAAi2C,EACA6mB,EAAA5jD,KAAAkzE,IAAApsF,OAAAi2C,EAAA,EAAAojE,GACApjE,GAAAojE,EACA,GAAApjE,IAAA,GACA,GAAAojE,IAAAv8C,EAAA98D,OAAA,GACAg6D,EACA,GAAA5e,EAAA1pC,KAAAtN,KAAAwf,KAAAw3B,EAAA1pC,UAAAtN,KAAAwf,KAAAxf,KAAA4uG,KAAA,IACA,MACA5uG,KAAAwf,KAAAw3B,EACAA,EAAAhiC,KAAA0jD,EAAA/6D,MAAAs3G,EACA,CACA,KACA,GACAr/C,CACA,CACA51D,KAAApE,QAAAg6D,EACA,OAAAoyB,CACA,GAGA,CACA7qF,IAAA1B,EACAmD,MAAA,SAAAA,MAAAk4C,EAAAh6C,GACA,OAAAorF,EAAAloF,KAAAglH,4BAAA,GAAAloH,GAAA,IAEAiyF,MAAA,EAEA+2B,cAAA,QAEA,KAEA,OAAAtM,UACA,CApKA,E,WCfA,SAAAnuF,QAAAvoB,EAAA2E,GACA,IAAAi3G,EAAA1+G,KACA,IAAA+lH,EAAA/lH,KAAAs+E,gBAAAt+E,KAAAs+E,eAAAzqC,UACA,IAAAmyE,EAAAhmH,KAAAo+E,gBAAAp+E,KAAAo+E,eAAAvqC,UACA,GAAAkyE,GAAAC,EAAA,CACA,GAAAv+G,EAAA,CACAA,EAAA3E,EACA,SAAAA,EAAA,CACA,IAAA9C,KAAAo+E,eAAA,CACAvjF,QAAAuuB,SAAA68F,YAAAjmH,KAAA8C,EACA,UAAA9C,KAAAo+E,eAAA2iC,aAAA,CACA/gH,KAAAo+E,eAAA2iC,aAAA,KACAlmH,QAAAuuB,SAAA68F,YAAAjmH,KAAA8C,EACA,CACA,CACA,OAAA9C,IACA,CAKA,GAAAA,KAAAs+E,eAAA,CACAt+E,KAAAs+E,eAAAzqC,UAAA,IACA,CAGA,GAAA7zC,KAAAo+E,eAAA,CACAp+E,KAAAo+E,eAAAvqC,UAAA,IACA,CACA7zC,KAAAw7G,SAAA14G,GAAA,eAAAA,GACA,IAAA2E,GAAA3E,EAAA,CACA,IAAA47G,EAAAtgC,eAAA,CACAvjF,QAAAuuB,SAAA88F,oBAAAxH,EAAA57G,EACA,UAAA47G,EAAAtgC,eAAA2iC,aAAA,CACArC,EAAAtgC,eAAA2iC,aAAA,KACAlmH,QAAAuuB,SAAA88F,oBAAAxH,EAAA57G,EACA,MACAjI,QAAAuuB,SAAA+8F,YAAAzH,EACA,CACA,SAAAj3G,EAAA,CACA5M,QAAAuuB,SAAA+8F,YAAAzH,GACAj3G,EAAA3E,EACA,MACAjI,QAAAuuB,SAAA+8F,YAAAzH,EACA,CACA,IACA,OAAA1+G,IACA,CACA,SAAAkmH,oBAAAnyC,EAAAjxE,GACAmjH,YAAAlyC,EAAAjxE,GACAqjH,YAAApyC,EACA,CACA,SAAAoyC,YAAApyC,GACA,GAAAA,EAAAqK,iBAAArK,EAAAqK,eAAA+8B,UAAA,OACA,GAAApnC,EAAAuK,iBAAAvK,EAAAuK,eAAA68B,UAAA,OACApnC,EAAAzgE,KAAA,QACA,CACA,SAAAooG,YACA,GAAA17G,KAAAs+E,eAAA,CACAt+E,KAAAs+E,eAAAzqC,UAAA,MACA7zC,KAAAs+E,eAAAu8B,QAAA,MACA76G,KAAAs+E,eAAA3iD,MAAA,MACA37B,KAAAs+E,eAAAs8B,WAAA,KACA,CACA,GAAA56G,KAAAo+E,eAAA,CACAp+E,KAAAo+E,eAAAvqC,UAAA,MACA7zC,KAAAo+E,eAAAziD,MAAA,MACA37B,KAAAo+E,eAAA8hC,OAAA,MACAlgH,KAAAo+E,eAAA6hC,YAAA,MACAjgH,KAAAo+E,eAAA0iC,YAAA,MACA9gH,KAAAo+E,eAAA6gC,SAAA,MACAj/G,KAAAo+E,eAAA2iC,aAAA,KACA,CACA,CACA,SAAAkF,YAAAlyC,EAAAjxE,GACAixE,EAAAzgE,KAAA,QAAAxQ,EACA,CACA,SAAAo3G,eAAAvmG,EAAA7Q,GAOA,IAAAigH,EAAApvG,EAAA2qE,eACA,IAAA0gC,EAAArrG,EAAAyqE,eACA,GAAA2kC,KAAA3H,aAAA4D,KAAA5D,YAAAznG,EAAA0X,QAAAvoB,QAAA6Q,EAAAL,KAAA,QAAAxQ,EACA,CACAzI,EAAAC,QAAA,CACA+wB,gBACAqwF,oBACAxB,8B,iBCzFA,IAAAkM,EAAAhsH,EAAA,MAAA6rE,EAAA,2BACA,SAAA5mD,KAAAtf,GACA,IAAAywF,EAAA,MACA,kBACA,GAAAA,EAAA,OACAA,EAAA,KACA,QAAA61B,EAAA1pH,UAAAf,OAAA6B,EAAA,IAAAC,MAAA2oH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA,CACA7oH,EAAA6oH,GAAA3pH,UAAA2pH,EACA,CACAvmH,EAAArD,MAAAsD,KAAAvC,EACA,CACA,CACA,SAAAg6C,OAAA,CACA,SAAA8uE,UAAA5yG,GACA,OAAAA,EAAA6yG,kBAAA7yG,EAAA8yG,QAAA,UACA,CACA,SAAAC,IAAA/yG,EAAAuwE,EAAAnkF,GACA,UAAAmkF,IAAA,kBAAAwiC,IAAA/yG,EAAA,KAAAuwE,GACA,IAAAA,IAAA,GACAnkF,EAAAsf,KAAAtf,GAAA03C,MACA,IAAA4mC,EAAA6F,EAAA7F,UAAA6F,EAAA7F,WAAA,OAAA1qE,EAAA0qE,SACA,IAAA/7B,EAAA4hC,EAAA5hC,UAAA4hC,EAAA5hC,WAAA,OAAA3uC,EAAA2uC,SACA,IAAAqkE,EAAA,SAAAA,iBACA,IAAAhzG,EAAA2uC,SAAAw7D,GACA,EACA,IAAA8I,EAAAjzG,EAAAyqE,gBAAAzqE,EAAAyqE,eAAA6gC,SACA,IAAAnB,EAAA,SAAAA,WACAx7D,EAAA,MACAskE,EAAA,KACA,IAAAvoC,EAAAt+E,EAAA3C,KAAAuW,EACA,EACA,IAAAkzG,EAAAlzG,EAAA2qE,gBAAA3qE,EAAA2qE,eAAAs8B,WACA,IAAAhC,EAAA,SAAAA,QACAv6B,EAAA,MACAwoC,EAAA,KACA,IAAAvkE,EAAAviD,EAAA3C,KAAAuW,EACA,EACA,IAAAoqG,EAAA,SAAAA,QAAAj7G,GACA/C,EAAA3C,KAAAuW,EAAA7Q,EACA,EACA,IAAA+6G,EAAA,SAAAA,UACA,IAAA/6G,EACA,GAAAu7E,IAAAwoC,EAAA,CACA,IAAAlzG,EAAA2qE,iBAAA3qE,EAAA2qE,eAAA3iD,MAAA74B,EAAA,IAAAsjH,EACA,OAAArmH,EAAA3C,KAAAuW,EAAA7Q,EACA,CACA,GAAAw/C,IAAAskE,EAAA,CACA,IAAAjzG,EAAAyqE,iBAAAzqE,EAAAyqE,eAAAziD,MAAA74B,EAAA,IAAAsjH,EACA,OAAArmH,EAAA3C,KAAAuW,EAAA7Q,EACA,CACA,EACA,IAAAgkH,EAAA,SAAAA,YACAnzG,EAAAozG,IAAA9mG,GAAA,SAAA69F,EACA,EACA,GAAAyI,UAAA5yG,GAAA,CACAA,EAAAsM,GAAA,WAAA69F,GACAnqG,EAAAsM,GAAA,QAAA49F,GACA,GAAAlqG,EAAAozG,IAAAD,SAAAnzG,EAAAsM,GAAA,UAAA6mG,EACA,SAAAxkE,IAAA3uC,EAAAyqE,eAAA,CAEAzqE,EAAAsM,GAAA,MAAA0mG,GACAhzG,EAAAsM,GAAA,QAAA0mG,EACA,CACAhzG,EAAAsM,GAAA,MAAA24F,GACAjlG,EAAAsM,GAAA,SAAA69F,GACA,GAAA55B,EAAA59E,QAAA,MAAAqN,EAAAsM,GAAA,QAAA89F,GACApqG,EAAAsM,GAAA,QAAA49F,GACA,kBACAlqG,EAAA6pC,eAAA,WAAAsgE,GACAnqG,EAAA6pC,eAAA,QAAAqgE,GACAlqG,EAAA6pC,eAAA,UAAAspE,GACA,GAAAnzG,EAAAozG,IAAApzG,EAAAozG,IAAAvpE,eAAA,SAAAsgE,GACAnqG,EAAA6pC,eAAA,MAAAmpE,GACAhzG,EAAA6pC,eAAA,QAAAmpE,GACAhzG,EAAA6pC,eAAA,SAAAsgE,GACAnqG,EAAA6pC,eAAA,MAAAo7D,GACAjlG,EAAA6pC,eAAA,QAAAugE,GACApqG,EAAA6pC,eAAA,QAAAqgE,EACA,CACA,CACAxjH,EAAAC,QAAAosH,G,iBCnFA,SAAAM,mBAAAljH,EAAA/H,EAAA6G,EAAAqkH,EAAAC,EAAA/pH,EAAAqU,GAAA,QAAA+rB,EAAAz5B,EAAA3G,GAAAqU,GAAA,IAAA5S,EAAA2+B,EAAA3+B,KAAA,OAAA0H,GAAA1D,EAAA0D,GAAA,UAAAi3B,EAAAwZ,KAAA,CAAAh7C,EAAA6C,EAAA,MAAA/C,QAAAE,QAAA6C,GAAAzC,KAAA8qH,EAAAC,EAAA,EACA,SAAAC,kBAAA3sH,GAAA,sBAAAu5E,EAAA/zE,KAAAvC,EAAAd,UAAA,WAAAd,SAAA,SAAAE,EAAA6G,GAAA,IAAAkB,EAAAtJ,EAAAkC,MAAAq3E,EAAAt2E,GAAA,SAAAwpH,MAAAroH,GAAAooH,mBAAAljH,EAAA/H,EAAA6G,EAAAqkH,MAAAC,OAAA,OAAAtoH,EAAA,UAAAsoH,OAAApkH,GAAAkkH,mBAAAljH,EAAA/H,EAAA6G,EAAAqkH,MAAAC,OAAA,QAAApkH,EAAA,CAAAmkH,MAAA3iH,UAAA,KACA,SAAAqgH,QAAAzwC,EAAA0wC,GAAA,IAAAzhH,EAAAnG,OAAAmG,KAAA+wE,GAAA,GAAAl3E,OAAA6nH,sBAAA,KAAAC,EAAA9nH,OAAA6nH,sBAAA3wC,GAAA0wC,IAAAE,IAAAz0G,QAAA,SAAA00G,GAAA,OAAA/nH,OAAA65C,yBAAAq9B,EAAA6wC,GAAA/pG,UAAA,KAAA7X,EAAA5H,KAAAmB,MAAAyG,EAAA2hH,EAAA,QAAA3hH,CAAA,CACA,SAAA6hH,cAAAj6G,GAAA,QAAApP,EAAA,EAAAA,EAAAgB,UAAAf,OAAAD,IAAA,KAAAy6D,EAAA,MAAAz5D,UAAAhB,GAAAgB,UAAAhB,GAAA,GAAAA,EAAA,EAAAgpH,QAAA3nH,OAAAo5D,IAAA,GAAA/2B,SAAA,SAAAliC,GAAA+lH,gBAAAn4G,EAAA5N,EAAAi5D,EAAAj5D,GAAA,IAAAH,OAAAioH,0BAAAjoH,OAAAgqF,iBAAAj8E,EAAA/N,OAAAioH,0BAAA7uD,IAAAuuD,QAAA3nH,OAAAo5D,IAAA/2B,SAAA,SAAAliC,GAAAH,OAAA2B,eAAAoM,EAAA5N,EAAAH,OAAA65C,yBAAAuf,EAAAj5D,GAAA,WAAA4N,CAAA,CACA,SAAAm4G,gBAAA36G,EAAApL,EAAAyB,GAAAzB,EAAAgmH,eAAAhmH,GAAA,GAAAA,KAAAoL,EAAA,CAAAvL,OAAA2B,eAAA4J,EAAApL,EAAA,CAAAyB,QAAAoc,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,YAAA/5C,EAAApL,GAAAyB,CAAA,QAAA2J,CAAA,CACA,SAAA46G,eAAA3xG,GAAA,IAAArU,EAAAimH,aAAA5xG,EAAA,wBAAArU,IAAA,SAAAA,EAAAyb,OAAAzb,EAAA,CACA,SAAAimH,aAAA7M,EAAA8M,GAAA,UAAA9M,IAAA,UAAAA,IAAA,YAAAA,EAAA,IAAA+M,EAAA/M,EAAAplG,OAAAoyG,aAAA,GAAAD,IAAAh/G,UAAA,KAAAgb,EAAAgkG,EAAAlmH,KAAAm5G,EAAA8M,GAAA,qBAAA/jG,IAAA,gBAAAA,EAAA,UAAA5W,UAAA,uDAAA26G,IAAA,SAAAzqG,OAAAhR,QAAA2uG,EAAA,CACA,IAAAsD,EAAAz/G,EAAA,MAAA6rE,EAAA,qBACA,SAAAhnD,KAAAnY,EAAAo4G,EAAAh7B,GACA,IAAAnjB,EACA,GAAAm+C,YAAA5xG,OAAA,YACAyzD,EAAAm+C,CACA,SAAAA,KAAA/tG,OAAAwvD,eAAAI,EAAAm+C,EAAA/tG,OAAAwvD,sBAAA,GAAAu+C,KAAA/tG,OAAA4vD,YAAAm+C,EAAA/tG,OAAA4vD,iBAAA,UAAA84C,EAAA,wBAAAqF,GACA,IAAA7gC,EAAA,IAAAv3E,EAAAk+G,cAAA,CACAh+G,WAAA,MACAk9E,IAGA,IAAA22B,EAAA,MACAx8B,EAAAp3E,MAAA,WACA,IAAA4zG,EAAA,CACAA,EAAA,KACAvtG,MACA,CACA,EACA,SAAAA,OACA,OAAA85G,OAAA1qH,MAAAsD,KAAArD,UACA,CACA,SAAAyqH,SACAA,OAAAD,mBAAA,YACA,IACA,IAAAE,QAAAtmD,EAAAzzD,OACA1O,EAAAyoH,EAAAzoH,MACAm4C,EAAAswE,EAAAtwE,KACA,GAAAA,EAAA,CACAsnC,EAAA9iF,KAAA,KACA,SAAA8iF,EAAA9iF,WAAAqD,GAAA,CACA0O,MACA,MACAutG,EAAA,KACA,CACA,OAAA/3G,GACAu7E,EAAAhzD,QAAAvoB,EACA,CACA,IACA,OAAAskH,OAAA1qH,MAAAsD,KAAArD,UACA,CACA,OAAA0hF,CACA,CACAhkF,EAAAC,QAAA2kB,I,gBCjDA,IAAAqoG,EAAAltH,EAAA,MAAA6rE,EAAA,sBACA,SAAAshD,kBAAAzqH,EAAAy9G,EAAAiN,GACA,OAAA1qH,EAAA66G,eAAA,KAAA76G,EAAA66G,cAAA4C,EAAAz9G,EAAA0qH,GAAA,IACA,CACA,SAAA7N,iBAAA5vF,EAAAjtB,EAAA0qH,EAAAjN,GACA,IAAAkN,EAAAF,kBAAAzqH,EAAAy9G,EAAAiN,GACA,GAAAC,GAAA,MACA,KAAAz3B,SAAAy3B,IAAA7nH,KAAA2mB,MAAAkhG,WAAA,GACA,IAAAh7G,EAAA8tG,EAAAiN,EAAA,gBACA,UAAAF,EAAA76G,EAAAg7G,EACA,CACA,OAAA7nH,KAAA2mB,MAAAkhG,EACA,CAGA,OAAA19F,EAAA/iB,WAAA,UACA,CACA3M,EAAAC,QAAA,CACAq/G,kC,iBCpBAt/G,EAAAC,QAAAF,EAAA,K,iBCSA,MAAAstH,EAAAttH,EAAA,MACA,MAAAg8G,QAAAh8G,EAAA,MAMAE,EAAAozF,QAAAtzF,EAAA,MAAAszF,QAKApzF,EAAAqtH,WAAAvtH,EAAA,MAKAE,EAAA4wB,OAAA9wB,EAAA,MAKAE,EAAAoqF,UAAAgjC,EAAAvjC,OAKA7pF,EAAA0nB,OAAA0lG,EAAA1lG,OAKA1nB,EAAAstH,aAAAxtH,EAAA,MAKAE,EAAAutH,OAAAztH,EAAA,MAKAE,EAAAwtH,iBAAA1tH,EAAA,MAKAE,EAAAytH,iBAAA3tH,EAAA,MAKAE,EAAA0tH,UAAA5tH,EAAA,MAKAE,EAAA2tH,UAAA7tH,EAAA,MAYAE,EAAA4tH,QAAA,IAAA5tH,EAAA0tH,UAUA,MAAAG,EAAA7tH,EAAAstH,eAGA5qH,OAAAmG,KAAA7I,EAAA4wB,OAAA+iE,IAAA9J,QACAjgF,OAAA,CACA,MACA,QACA,SACA,MACA,SACA,QACA,UACA,aACA,mBACA,qBACA,mBACA,qBACA,YACA,UAEAm7B,SACAzzB,GAAAtR,EAAAsR,GAAA,IAAAnO,IAAA0qH,EAAAv8G,MAAAnO,KAQAT,OAAA2B,eAAArE,EAAA,SACA,GAAAyc,GACA,OAAAoxG,EAAA/yC,KACA,EACA,GAAA55E,CAAA2mC,GACAgmF,EAAA/yC,MAAAjzC,CACA,IAQAnlC,OAAA2B,eAAArE,EAAA,cACA,GAAAyc,GACA,OAAAoxG,EAAAC,UACA,IAQAprH,OAAA2B,eAAArE,EAAA,cACA,GAAAyc,GACA,OAAAoxG,EAAAE,UACA,IAQA,gBAAAhpF,SAAA44D,IACAj7F,OAAA2B,eAAArE,EAAA29F,EAAA,CACA,GAAAlhF,GACA,OAAAoxG,EAAAlwB,EACA,EACA,GAAAz8F,CAAA2mC,GACAgmF,EAAAlwB,GAAA91D,CACA,GACA,IAOAnlC,OAAA2B,eAAArE,EAAA,WACA,GAAAyc,GACA,OACAuxG,kBAAAH,EAAAG,kBACAC,kBAAAJ,EAAAI,kBACAZ,WAAAQ,EAAAR,WAEA,IAKAvR,EAAAoS,WAAAluH,EAAA,aACA87G,EAAAqS,aAAAnuH,EAAA,qBACA87G,EAAAsS,cAAApuH,EAAA,yCACA87G,EAAAqS,aAAAnuH,EAAA,cACA,cACA,YACA,QACA,WAEA87G,EAAAsS,cAAApuH,EAAA,wC,iBCpLA,MAAA0nB,UAAA5nB,EAAA,MAQAE,EAAA87G,KAAA,CACA,UAAAoS,CAAAvwB,GACA,WACA,UAAAj1F,MAAAgf,EAAA,uCAAAi2E,GAAA,CAEA,EACA,SAAA0wB,CAAA1wB,GACA,WACA,UAAAj1F,MAAA,CACAgf,EAAA,uCAAAi2E,GACA,mEACAtmF,KAAA,OAEA,EACA,YAAA82G,CAAAlgH,EAAA0iB,EAAAo6F,GACAA,EAAAhmF,SAAA44D,IACA1vF,EAAA0vF,GAAA39F,EAAA87G,KAAAnrF,GAAAgtE,EAAA,GAEA,EACA,aAAAywB,CAAAngH,EAAA0iB,EAAAo6F,GACAA,EAAAhmF,SAAA44D,IACA,MAAA4e,EAAAv8G,EAAA87G,KAAAnrF,GAAAgtE,GACAj7F,OAAA2B,eAAA4J,EAAA0vF,EAAA,CACAlhF,IAAA8/F,EACAr7G,IAAAq7G,GACA,GAEA,E,iBCnCA,MAAA6Q,EAAAttH,EAAA,MACA,MAAAkhC,WAAAlhC,EAAA,MAMAE,EAAA8pF,IAAAsjC,EAAAvjC,OAAA7oD,EAAA8oD,KAMA9pF,EAAA2zF,IAAAy5B,EAAAvjC,OAAA7oD,EAAA2yD,KAMA3zF,EAAAsuH,OAAAlB,EAAAvjC,OAAA7oD,EAAAstF,QAMAtuH,EAAAoqF,UAAAgjC,EAAAvjC,M,iBCzBA,MAAAyjC,EAAAxtH,EAAA,MAMAC,EAAAC,QAAA,MAAA0tH,UAMA,WAAAloH,CAAAhD,EAAA,IACAkD,KAAAkoH,QAAA,IAAA9jG,IACApkB,KAAAlD,SACA,CASA,GAAAsG,CAAAwmB,EAAA9sB,GACA,IAAAkD,KAAAkoH,QAAAnrH,IAAA6sB,GAAA,CAGA9sB,EAAAE,OAAAwJ,OAAA,GAAA1J,GAAAkD,KAAAlD,SACA,MAAA+rH,EAAA/rH,EAAA6qH,YAAA3nH,KAAAlD,QAAA6qH,WAIA,GAAAkB,EAAA,CACA/rH,EAAA6qH,WAAAjqH,MAAAwzB,QAAA23F,KAAAlrH,QAAA,CAAAkrH,EACA,MACA/rH,EAAA6qH,WAAA,EACA,CAEA,MAAAxsH,EAAAysH,EAAA9qH,GACA3B,EAAA8kB,GAAA,aAAAjgB,KAAA8oH,QAAAl/F,KACA5pB,KAAAkoH,QAAA1sH,IAAAouB,EAAAzuB,EACA,CAEA,OAAA6E,KAAAkoH,QAAAnxG,IAAA6S,EACA,CASA,GAAA7S,CAAA6S,EAAA9sB,GACA,OAAAkD,KAAAoD,IAAAwmB,EAAA9sB,EACA,CAQA,GAAAC,CAAA6sB,GACA,QAAA5pB,KAAAkoH,QAAAnrH,IAAA6sB,EACA,CAQA,KAAAze,CAAAye,GACA,GAAAA,EAAA,CACA,OAAA5pB,KAAA+oH,cAAAn/F,EACA,CAEA5pB,KAAAkoH,QAAA7oF,SAAA,CAAA8C,EAAAhlC,IAAA6C,KAAA+oH,cAAA5rH,IACA,CAQA,aAAA4rH,CAAAn/F,GACA,IAAA5pB,KAAAkoH,QAAAnrH,IAAA6sB,GAAA,CACA,MACA,CAEA,MAAAzuB,EAAA6E,KAAAkoH,QAAAnxG,IAAA6S,GACAzuB,EAAAgQ,QACAnL,KAAA8oH,QAAAl/F,EACA,CASA,OAAAk/F,CAAAl/F,GACA5pB,KAAAkoH,QAAA/+F,OAAAS,EACA,E,iBC3GA,MAAA46D,SAAApqF,EAAA,MACA,MAAA8wB,EAAA9wB,EAAA,MACA,MAAAytH,EAAAztH,EAAA,MACA,MAAAojC,EAAApjC,EAAA,KAAAA,CAAA,yBAEA,SAAA4uH,2BAAA5zC,GACA,WAAAA,EAAA51C,OAAA,GAAA1B,cAAAs3C,EAAAz3E,MAAA,YACA,CAQAtD,EAAAC,QAAA,SAAA4pF,EAAA,IAIAA,EAAAC,OAAAD,EAAAC,QAAAj5D,EAAA+iE,IAAA9J,OAOA,MAAA8kC,sBAAApB,EAOA,WAAA/nH,CAAAhD,GACA2G,MAAA3G,EACA,EAGA,MAAA3B,EAAA,IAAA8tH,cAAA/kC,GAKAlnF,OAAAmG,KAAA+gF,EAAAC,QAAA9kD,SAAA,SAAA+1C,GACA53C,EAAA,mCAAA43C,GACA,GAAAA,IAAA,OAEAr3E,QAAAq4G,KAAA,yFACA,MACA,CAYA6S,cAAAhsH,UAAAm4E,GAAA,YAAA33E,GAEA,MAAAs2E,EAAA/zE,MAAA7E,EAGA,GAAAsC,EAAA7B,SAAA,GACA,MAAAyJ,GAAA5H,EACA,MAAA8/B,EAAAl4B,KAAAzI,SAAAyI,GAAA,CAAAzI,QAAAyI,GACAk4B,EAAA63C,MAAA73C,EAAAinD,GAAApP,EACArB,EAAAm1C,gBAAA3rF,GACAw2C,EAAAt3E,MAAA8gC,GACA,OAAAv9B,MAAA7E,CACA,CAGA,GAAAsC,EAAA7B,SAAA,GACAm4E,EAAA/1E,IAAAo3E,EAAA,IACA,OAAArB,CACA,CAMA,OAAAA,EAAA/1E,IAAAo3E,KAAA33E,EACA,EAEAwrH,cAAAhsH,UAAA+rH,2BAAA5zC,IAAA,WACA,OAAAp1E,MAAA7E,GAAAguH,eAAA/zC,EACA,CACA,IAEA,OAAAj6E,CACA,C,iBC9FA,MAAAwnD,EAAAvoD,EAAA,MACA,MAAAgvH,EAAAhvH,EAAA,MACA,MAAAojC,EAAApjC,EAAA,KAAAA,CAAA,qBACA,MAAAilB,EAAAjlB,EAAA,MACA,MAAAivH,EAAAjvH,EAAA,MACA,MAAAkvH,EAAAlvH,EAAA,MAMAC,EAAAC,QAAA,MAAAwtH,iBAKA,WAAAhoH,CAAA3E,GACA,IAAAA,EAAA,CACA,UAAA6H,MAAA,0CACA,CAEAhD,KAAA7E,SACA6E,KAAAm4C,SAAA,IAAA/zB,GACA,CAOA,MAAAmlG,IAAA9rH,GACAA,EAAA4hC,SAAA7tB,IACA,GAAA9T,MAAAwzB,QAAA1f,GAAA,CACA,OAAAA,EAAA6tB,SAAAiT,GAAAtyC,KAAAwpH,YAAAl3E,IACA,CAEAtyC,KAAAwpH,YAAAh4G,EAAA,IAGA,IAAAxR,KAAAypH,QAAA,CACAzpH,KAAAypH,QAAAzpH,KAAA0pH,mBAAAv7G,KAAAnO,MACAnF,QAAAolB,GAAA,oBAAAjgB,KAAAypH,QACA,CACA,CAOA,QAAAE,GACA,GAAA3pH,KAAAypH,QAAA,CACA5uH,QAAA2iD,eAAA,oBAAAx9C,KAAAypH,SACAzpH,KAAAypH,QAAA,MAEA/rH,MAAAuhB,KAAAjf,KAAAm4C,SAAA97C,UACAgjC,SAAAoiC,GAAAzhE,KAAA7E,OAAAkiH,OAAA57C,IACA,CACA,CAOA,UAAAmoD,CAAA9mH,GACA,IAAAlG,EAAA,KACA,GAAAkG,EAAA,CACAlG,SAAAkG,IAAA,SAAAA,IAAAlG,OACA,CAEA,OACA0J,MAAAxD,EAEAsyE,MAAA,QACAx4E,QAAA,CACA,sBAAAA,GAAA,uBACAkG,KAAAyD,OAAA,oBACAoL,KAAA,MACApL,MAAAzD,KAAAyD,MACA+wG,UAAA,KACAuS,MAAA,IAAArpH,MAAA0e,WACArkB,QAAAmF,KAAA8pH,iBACAnnE,GAAA3iD,KAAA+pH,YACAjvG,MAAA9a,KAAAgqH,SAAAlnH,GAEA,CAMA,cAAAgnH,GACA,OACAnrF,IAAA9jC,QAAA8jC,IACAsrF,IAAApvH,QAAAqvH,OAAArvH,QAAAqvH,SAAA,KACAC,IAAAtvH,QAAAuvH,OAAAvvH,QAAAuvH,SAAA,KACAC,IAAAxvH,QAAAwvH,MACAC,SAAAzvH,QAAAyvH,SACA58B,QAAA7yF,QAAA6yF,QACAhB,KAAA7xF,QAAA6xF,KACA69B,YAAA1vH,QAAA0vH,cAEA,CAMA,SAAAR,GACA,OACAS,QAAA7nE,EAAA6nE,UACAC,OAAA9nE,EAAA8nE,SAEA,CAOA,QAAAT,CAAAlnH,GACA,MAAAgY,EAAAhY,EAAAumH,EAAAjhF,MAAAtlC,GAAAumH,EAAAtyG,MACA,OAAA+D,EAAA7e,KAAAyuH,IACA,CACAC,OAAAD,EAAAE,kBACAj4D,KAAA+3D,EAAAG,cACAC,SAAAJ,EAAAK,kBACAnqB,KAAA8pB,EAAAM,gBACAp/G,OAAA8+G,EAAAO,gBACAhX,OAAAyW,EAAAvW,cAGA,CAOA,WAAAqV,CAAAl3E,GACA,IAAAtyC,KAAAm4C,SAAAp7C,IAAAu1C,GAAA,CACAA,EAAA2kE,iBAAA,KACA,MAAAx1C,EAAA,IAAA6nD,EAAAh3E,GACAtyC,KAAAm4C,SAAA38C,IAAA82C,EAAAmvB,GACAzhE,KAAA7E,OAAAgjF,KAAA1c,EACA,CACA,CASA,kBAAAioD,CAAA5mH,GACA,MAAAy6B,EAAAv9B,KAAA4pH,WAAA9mH,GACA,MAAAq1C,EAAAn4C,KAAAkrH,wBAEA,IAAAC,SAAAnrH,KAAA7E,OAAAiwH,cAAA,WACAprH,KAAA7E,OAAAiwH,YAAAtoH,GACA9C,KAAA7E,OAAAiwH,YACA,IAAApyG,EAEA,IAAAm/B,EAAAv8C,QAAAuvH,EAAA,CAEAptH,QAAAq4G,KAAA,mEAEAr4G,QAAAq4G,KAAA,iCACA+U,EAAA,KACA,CAEA,SAAAE,eACA7tF,EAAA,SAAA2tF,GACA3tF,EAAA,mBAAA3iC,QAAAywH,UAEA,GAAAH,IAAAtwH,QAAAywH,SAAA,CAGA,GAAAtyG,EAAA,CACAnY,aAAAmY,EACA,CAEAne,QAAA0wH,KAAA,EACA,CACA,CAEA,IAAApzE,KAAAv8C,SAAA,GACA,OAAAf,QAAAuuB,SAAAiiG,aACA,CAGAjC,EAAAjxE,GAAA,CAAA7F,EAAAhlC,KACA,MAAAypC,EAAA13B,EAAA/R,GACA,MAAAy5C,EAAAzU,EAAAyU,WAAAzU,EAGA,SAAAk5E,OAAAnR,GACA,WACA78E,EAAA68E,GACAtjE,GAAA,CAEA,CAEAgQ,EAAA0kE,QAAA,KACA1kE,EAAA1nC,KAAA,SAAAmsG,OAAA,aACAzkE,EAAA1nC,KAAA,QAAAmsG,OAAA,aACA,IAAAL,GAAAE,iBAEArrH,KAAA7E,OAAA6C,IAAAu/B,GAIA,GAAA4tF,EAAA,CACAnyG,EAAApY,WAAAyqH,aAAA,IACA,CACA,CAQA,qBAAAH,GAKA,OAAAlrH,KAAA7E,OAAAwsH,WAAAt3G,QAAA6xD,IACA,MAAAnb,EAAAmb,EAAAnb,WAAAmb,EACA,OAAAnb,EAAAkwD,gBAAA,GAEA,E,iBC1OA,MAAA7vG,YAAAhN,EAAA,MAOAC,EAAAC,QAAA,MAAAgvH,wBAAAliH,EAOA,WAAAtH,CAAAinD,GACAtjD,MAAA,CAAAuD,WAAA,OAEA,IAAA+/C,EAAA,CACA,UAAA/jD,MAAA,uDACA,CAIAhD,KAAAi3G,iBAAA,KACAj3G,KAAA+mD,WACA,CAWA,MAAAz/C,CAAAi2B,EAAAs3E,EAAA90G,GACA,GAAAw9B,EAAA+5E,UAAA,CACA,OAAAt3G,KAAA+mD,UAAA/oD,IAAAu/B,EAAAx9B,EACA,CAEAA,IACA,WACA,E,iBC3CA,MAAAm5G,SAAAwS,aAAAtxH,EAAA,MACA,MAAAgvH,EAAAhvH,EAAA,MACA,MAAAoqF,QAAAqK,SAAAz0F,EAAA,MACA,MAAA8jF,EAAA9jF,EAAA,MACA,MAAA0tH,EAAA1tH,EAAA,MACA,MAAA2tH,EAAA3tH,EAAA,MACA,MAAA28G,EAAA38G,EAAA,MACA,MAAAuxH,EAAAvxH,EAAA,MACA,MAAAg8G,QAAAh8G,EAAA,MACA,MAAA8wB,EAAA9wB,EAAA,MAQA,MAAAi1F,EAAA,gBAOA,MAAAw4B,eAAA6D,EAMA,WAAA5rH,CAAAhD,GACA2G,MAAA,CAAAuD,WAAA,OACAhH,KAAA8lF,UAAAhpF,EACA,CAEA,KAAAkoB,CAAA4mG,GACA,MAAAzwH,EAAA6E,KACA,OAAAhD,OAAAzC,OAAAY,EAAA,CACAsB,MAAA,CACAmC,MAAA,SAAA2+B,GACA,MAAAsuF,EAAA7uH,OAAAwJ,OACA,GACAolH,EACAruF,GASA,GAAAA,aAAAv6B,MAAA,CACA6oH,EAAAtlH,MAAAg3B,EAAAh3B,MACAslH,EAAAjvH,QAAA2gC,EAAA3gC,OACA,CAEAzB,EAAAsB,MAAAovH,EACA,IAGA,CAUA,SAAA/lC,EAAAuxB,OACAA,EAAAr1F,OACAA,EAAA8pG,YACAA,EAAA3nC,OACAA,EAAA/O,MACAA,EAAA,OAAAg2C,YACAA,EAAA,KAAAzD,WACAA,EAAAtpH,OACAA,EAAA0tH,SACAA,EAAAC,WACAA,EAAAC,UACAA,EAAAC,UACAA,EAAA7kC,YACAA,EAAAihC,kBACAA,EAAAC,kBACAA,GACA,IAEA,GAAAvoH,KAAA2nH,WAAA/rH,OAAA,CACAoE,KAAA+/C,OACA,CAEA//C,KAAAq3G,SACAr3G,KAAAgiB,UAAAhiB,KAAAgiB,QAAA5nB,EAAA,KAAAA,GAEA4F,KAAA8rH,eAAA,KAEA9rH,KAAAmkF,UAAAnkF,KAAAmkF,QAAAj5D,EAAA+iE,IAAA9J,OACAnkF,KAAAo1E,QACA,GAAAp1E,KAAAooH,WAAA,CACApoH,KAAAooH,WAAAuB,UACA,CACA,GAAA3pH,KAAAqoH,WAAA,CACAroH,KAAAqoH,WAAAsB,UACA,CACA3pH,KAAAooH,WAAA,IAAAN,EAAA9nH,MACAA,KAAAqoH,WAAA,IAAAN,EAAA/nH,MACAA,KAAAmsH,UAAA,GACAnsH,KAAAorH,cAGA,GAAAzD,EAAA,CACAA,EAAAjqH,MAAAwzB,QAAAy2F,KAAA,CAAAA,GACAA,EAAAtoF,SAAA0nB,GAAA/mD,KAAAoD,IAAA2jD,IACA,CAEA,GACA1oD,GACA0tH,GACAC,GACAC,GACAC,GACA7kC,EACA,CACA,UAAArkF,MACA,CACA,qGACA,iDACA,wEACA2O,KAAA,MAEA,CAEA,GAAA22G,EAAA,CACAtoH,KAAAooH,WAAAmB,OAAAjB,EACA,CACA,GAAAC,EAAA,CACAvoH,KAAAqoH,WAAAkB,OAAAhB,EACA,CACA,CAEA,cAAAY,CAAA/zC,GACA,MAAAg3C,EAAAC,cAAArsH,KAAAmkF,OAAA/O,GACA,GAAAg3C,IAAA,MACA,YACA,CAEA,MAAAE,EAAAD,cAAArsH,KAAAmkF,OAAAnkF,KAAAo1E,OACA,GAAAk3C,IAAA,MACA,YACA,CAEA,IAAAtsH,KAAA2nH,YAAA3nH,KAAA2nH,WAAA/rH,SAAA,GACA,OAAA0wH,GAAAF,CACA,CAEA,MAAA/nH,EAAArE,KAAA2nH,WAAAp9F,WAAAw8B,IACA,IAAAwlE,EAAAF,cAAArsH,KAAAmkF,OAAAp9B,EAAAquB,OACA,GAAAm3C,IAAA,MACAA,EAAAD,CACA,CACA,OAAAC,GAAAH,CAAA,IAEA,OAAA/nH,KAAA,CACA,CAgCA,GAAArG,CAAAo3E,EAAA/vE,KAAA+pF,GAGA,GAAAzyF,UAAAf,SAAA,GAIAw5E,EAAAoP,GAAApP,QACAp1E,KAAAkpH,gBAAA9zC,GACAp1E,KAAAvD,MAAA24E,GACA,OAAAp1E,IACA,CAGA,GAAArD,UAAAf,SAAA,GACA,GAAAyJ,cAAA,UACAA,EAAAm/E,GAAAn/E,EAAA+vE,QACAp1E,KAAAkpH,gBAAA7jH,GACArF,KAAAvD,MAAA4I,GACA,OAAArF,IACA,CAEAqF,EAAA,CAAAm/E,IAAApP,UAAAx4E,QAAAyI,GACArF,KAAAkpH,gBAAA7jH,GACArF,KAAAvD,MAAA4I,GACA,OAAArF,IACA,CAEA,MAAApC,GAAAwxF,EACA,UAAAxxF,IAAA,UAAAA,IAAA,MAGA,MAAAmrC,EAAA1jC,KAAAsuC,OAAAtuC,EAAAsuC,MAAA07C,GAEA,IAAAtmD,EAAA,CACA,MAAAxL,EAAAvgC,OAAAwJ,OAAA,GAAAxG,KAAA8rH,YAAAluH,EAAA,CACA4mF,IAAApP,EACAyZ,IAAAO,EACAha,QACAx4E,QAAAyI,IAGA,GAAAzH,EAAAhB,QAAA2gC,EAAA3gC,QAAA,GAAA2gC,EAAA3gC,WAAAgB,EAAAhB,UACA,GAAAgB,EAAA2I,MAAAg3B,EAAAh3B,MAAA3I,EAAA2I,MAEAvG,KAAAvD,MAAA8gC,GACA,OAAAv9B,IACA,CACA,CAEAA,KAAAvD,MAAAO,OAAAwJ,OAAA,GAAAxG,KAAA8rH,YAAA,CACAtnC,IAAApP,EACAyZ,IAAAO,EACAha,QACAx4E,QAAAyI,KAGA,OAAArF,IACA,CAUA,UAAAy+E,CAAAlhD,EAAAs3E,EAAA90G,GACA,GAAAC,KAAAq3G,OAAA,CACA,OAAAt3G,GACA,CASA,IAAAw9B,EAAAinD,GAAA,CACAjnD,EAAAinD,GAAAjnD,EAAA63C,KACA,CAKA,IAAAp1E,KAAAmkF,OAAA5mD,EAAAinD,KAAAxkF,KAAAmkF,OAAA5mD,EAAAinD,MAAA,GAEAzmF,QAAAuI,MAAA,qCAAAi3B,EAAAinD,GACA,CAGA,IAAAxkF,KAAAs+E,eAAAm8B,MAAA,CAEA18G,QAAAuI,MACA,0FACAi3B,EAEA,CAMA,IACAv9B,KAAAzE,KAAAyE,KAAAgiB,OAAAw8D,UAAAjhD,EAAAv9B,KAAAgiB,OAAAllB,SACA,SACAkD,KAAAo+E,eAAA8oB,KAAA,MAEAnnG,GACA,CACA,CAOA,MAAAgI,CAAAhI,GACA,MAAA4nH,EAAA3nH,KAAA2nH,WAAAhqH,QACAyrH,EACAzB,GACA,CAAA5gE,EAAAz5C,KACA,IAAAy5C,KAAAk4D,SAAA,OAAA1sG,aAAAjF,GACAy5C,EAAA1nC,KAAA,SAAA/R,GACAy5C,EAAA7mC,KAAA,GAEAngB,EAEA,CAOA,GAAAqD,CAAA2jD,GAMA,MAAAh8C,GACAmzE,EAAAn3B,MAAA/oD,IAAApC,OAAA,EACA,IAAAm7G,EAAA,CAAAhwD,cACAA,EAEA,IAAAh8C,EAAAqzE,iBAAArzE,EAAAqzE,eAAAp3E,WAAA,CACA,UAAAhE,MACA,2EAEA,CAGAhD,KAAAwsH,SAAA,QAAAzhH,GACA/K,KAAAwsH,SAAA,OAAAzhH,GACA/K,KAAAm+E,KAAApzE,GAEA,GAAAg8C,EAAAkwD,iBAAA,CACAj3G,KAAAooH,WAAAmB,QACA,CAEA,GAAAxiE,EAAA6wD,iBAAA,CACA53G,KAAAqoH,WAAAkB,QACA,CAEA,OAAAvpH,IACA,CAOA,MAAA4W,CAAAmwC,GACA,IAAAA,EAAA,OAAA/mD,KACA,IAAA+K,EAAAg8C,EACA,IAAAm3B,EAAAn3B,MAAA/oD,IAAApC,OAAA,GACAmP,EAAA/K,KAAA2nH,WAAAt3G,QACAsjC,KAAAoT,gBACA,EACA,CAEA,GAAAh8C,EAAA,CACA/K,KAAAq9G,OAAAtyG,EACA,CACA,OAAA/K,IACA,CAMA,KAAA+/C,GACA//C,KAAAq9G,SACA,OAAAr9G,IACA,CAOA,KAAAmL,GACAnL,KAAAooH,WAAAuB,WACA3pH,KAAAqoH,WAAAsB,WACA3pH,KAAA+/C,QACA//C,KAAAsT,KAAA,SACA,OAAAtT,IACA,CAMA,SAAAysH,GACArW,EAAAoS,WAAA,YACA,CASA,KAAAkE,CAAA5vH,EAAAiD,GACA,UAAAjD,IAAA,YACAiD,EAAAjD,EACAA,EAAA,EACA,CAEAA,KAAA,GACA,MAAAglE,EAAA,GACA,MAAA6qD,EAAA3vH,OAAAwJ,OAAA,GAAA1J,EAAA4vH,OAAA,IAGA,SAAAE,eAAA7lE,EAAAz5C,GACA,GAAAxQ,EAAA4vH,cAAA3lE,EAAA8lE,cAAA,YACA/vH,EAAA4vH,MAAA3lE,EAAA8lE,YAAAF,EACA,CAEA5lE,EAAA2lE,MAAA5vH,GAAA,CAAAgG,EAAAwc,KACA,GAAAxc,EAAA,CACA,OAAAwK,EAAAxK,EACA,CAEA,UAAAikD,EAAA+lE,gBAAA,YACAxtG,EAAAynC,EAAA+lE,cAAAxtG,EAAAxiB,EAAAklB,OACA,CAEA1U,EAAA,KAAAgS,EAAA,GAEA,CAIA,SAAAytG,WAAAhmE,EAAAz5C,GACAs/G,eAAA7lE,GAAA,CAAAjkD,EAAAiZ,KAGA,GAAAzO,EAAA,CACAyO,EAAAjZ,GAAAiZ,EACA,GAAAA,EAAA,CACA+lD,EAAA/a,EAAAt6C,MAAAsP,CACA,CAGAzO,GACA,CAEAA,EAAA,OAEA,CAIA87G,EACAppH,KAAA2nH,WAAAt3G,QAAA02C,OAAA2lE,QACAK,YACA,IAAAhtH,EAAA,KAAA+hE,IAEA,CAOA,MAAAnuD,CAAA7W,EAAA,IACA,MAAAyrF,EAAA,IAAA2wB,EACA,MAAA8T,EAAA,GAEAzkC,EAAA0kC,SAAAD,EACAzkC,EAAAl9D,QAAA,KACA,IAAA1vB,EAAAqxH,EAAApxH,OACA,MAAAD,IAAA,CACAqxH,EAAArxH,GAAA0vB,SACA,GAIArrB,KAAA2nH,WACAt3G,QAAA02C,OAAApzC,SACA0rB,SAAA0nB,IACA,MAAAosB,EAAApsB,EAAApzC,OAAA7W,GACA,IAAAq2E,EAAA,CACA,MACA,CAEA65C,EAAAzxH,KAAA43E,GAEAA,EAAAlzD,GAAA,OAAAjiB,IACAA,EAAA+oD,UAAA/oD,EAAA+oD,WAAA,GACA/oD,EAAA+oD,UAAAxrD,KAAAwrD,EAAAt6C,MACA87E,EAAAj1E,KAAA,MAAAtV,EAAA,IAGAm1E,EAAAlzD,GAAA,SAAAnd,IACAA,EAAAikD,UAAAjkD,EAAAikD,WAAA,GACAjkD,EAAAikD,UAAAxrD,KAAAwrD,EAAAt6C,MACA87E,EAAAj1E,KAAA,QAAAxQ,EAAA,GACA,IAGA,OAAAylF,CACA,CAcA,UAAAhzD,GACA,WAAAo2F,EAAA3rH,KACA,CASA,OAAAktH,CAAAtjG,KAAAnsB,GACA,MAAA0vH,EAAA3sH,KAAAkB,MACA,GAAA1B,KAAAmsH,UAAAviG,GAAA,CACA,MAAAwjG,EAAAptH,KAAAmsH,UAAAviG,UACA5pB,KAAAmsH,UAAAviG,GAGA,UAAAnsB,IAAA7B,OAAA,iBAEAmC,QAAAq4G,KACA,6DAEA34G,EAAAy/D,KACA,CAGA,MAAA3/B,SAAA9/B,IAAA7B,OAAA,cAAA6B,EAAAy/D,MAAA,GACA3/B,EAAA63C,MAAA73C,EAAA63C,OAAA,OACA73C,EAAA8vF,WAAAF,EAAAC,EACA7vF,EAAA3gC,QAAA2gC,EAAA3gC,SAAAgtB,EACA,OAAA5pB,KAAAvD,MAAA8gC,EACA,CAEAv9B,KAAAmsH,UAAAviG,GAAAujG,EACA,OAAAntH,IACA,CAOA,gBAAAi3G,IAAAx5G,GAEAM,QAAAq4G,KACA,0FAEAp2G,KAAAooH,WAAAmB,UAAA9rH,EACA,CAOA,kBAAA6vH,IAAA7vH,GAEAM,QAAAq4G,KACA,8FAEAp2G,KAAAooH,WAAAuB,YAAAlsH,EACA,CAMA,GAAA2mF,GACA,UAAAphF,MACA,CACA,4CACA,8CACA,wEACA2O,KAAA,MAEA,CASA,QAAA66G,CAAAnS,EAAAtzD,GACA,SAAAwmE,eAAAzqH,GAEA,GAAAu3G,IAAA,UAAAr6G,KAAA2nH,WAAAnxG,SAAAuwC,GAAA,CACA/mD,KAAAoD,IAAA2jD,EACA,CACA/mD,KAAAsT,KAAA+mG,EAAAv3G,EAAAikD,EACA,CAEA,IAAAA,EAAA,YAAAszD,GAAA,CACAtzD,EAAA,YAAAszD,GAAAkT,eAAAp/G,KAAAnO,MACA+mD,EAAA9mC,GAAAo6F,EAAAtzD,EAAA,YAAAszD,GACA,CACA,CAEA,eAAA6O,CAAA7jH,GACA,GAAArF,KAAA8rH,YAAA,CACA9uH,OAAAwJ,OAAAnB,EAAArF,KAAA8rH,YACA,CACA,EAGA,SAAAO,cAAAloC,EAAA/O,GACA,MAAAx2E,EAAAulF,EAAA/O,GACA,IAAAx2E,OAAA,GACA,WACA,CACA,OAAAA,CACA,CAMA5B,OAAA2B,eAAAkpH,OAAA5qH,UAAA,cACAolD,aAAA,MACArnC,WAAA,KACA,GAAAjE,GACA,MAAA0jG,SAAAz6G,KAAAs+E,eACA,OAAA5gF,MAAAwzB,QAAAupF,GAAA,CAAAA,GAAApqG,OAAA9T,SAAAk+G,CACA,IAGApgH,EAAAC,QAAAutH,M,iBCtpBA,MAAA8D,SAQA,WAAA7rH,CAAA3E,GACA,MAAA0sH,EAAAztH,EAAA,MACA,UAAAe,IAAA,UAAAuC,MAAAwzB,QAAA/1B,mBAAA0sH,GAAA,CACA,UAAA7kH,MAAA,mCACA,MACAhD,KAAA7E,SACA6E,KAAA+M,MAAAvM,KAAAkB,KACA,CACA,CAQA,IAAAq1C,IAAAt5C,GACA,UAAAA,IAAA7B,OAAA,iBAEAmC,QAAAq4G,KAAA,6DACA34G,EAAAy/D,KACA,CAEA,MAAA3/B,SAAA9/B,IAAA7B,OAAA,cAAA6B,EAAAy/D,MAAA,GACA3/B,EAAA63C,MAAA73C,EAAA63C,OAAA,OACA73C,EAAA8vF,WAAA7sH,KAAAkB,MAAA1B,KAAA+M,MAEA,OAAA/M,KAAA7E,OAAAsB,MAAA8gC,EACA,EAGAljC,EAAAC,QAAAqxH,Q,iBC3CA,MAAAhpE,EAAAvoD,EAAA,MACA,MAAAgvH,EAAAhvH,EAAA,MACA,MAAAojC,EAAApjC,EAAA,KAAAA,CAAA,qBACA,MAAAilB,EAAAjlB,EAAA,MACA,MAAAivH,EAAAjvH,EAAA,MACA,MAAAozH,EAAApzH,EAAA,MAMAC,EAAAC,QAAA,MAAAytH,iBAKA,WAAAjoH,CAAA3E,GACA,IAAAA,EAAA,CACA,UAAA6H,MAAA,0CACA,CAEAhD,KAAA7E,SACA6E,KAAAm4C,SAAA,IAAA/zB,GACA,CAOA,MAAAmlG,IAAA9rH,GACAA,EAAA4hC,SAAA7tB,IACA,GAAA9T,MAAAwzB,QAAA1f,GAAA,CACA,OAAAA,EAAA6tB,SAAAiT,GAAAtyC,KAAAwpH,YAAAl3E,IACA,CAEAtyC,KAAAwpH,YAAAh4G,EAAA,IAGA,IAAAxR,KAAAypH,QAAA,CACAzpH,KAAAypH,QAAAzpH,KAAAytH,oBAAAt/G,KAAAnO,MACAnF,QAAAolB,GAAA,qBAAAjgB,KAAAypH,QACA,CACA,CAOA,QAAAE,GACA,GAAA3pH,KAAAypH,QAAA,CACA5uH,QAAA2iD,eAAA,qBAAAx9C,KAAAypH,SACAzpH,KAAAypH,QAAA,MAEA/rH,MAAAuhB,KAAAjf,KAAAm4C,SAAA97C,UAAAgjC,SAAAoiC,GACAzhE,KAAA7E,OAAAkiH,OAAA57C,IAEA,CACA,CAOA,UAAAmoD,CAAA9mH,GACA,IAAAlG,EAAA,KACA,GAAAkG,EAAA,CACAlG,SAAAkG,IAAA,SAAAA,IAAAlG,OACA,CAEA,OACA0J,MAAAxD,EAEAsyE,MAAA,QACAx4E,QAAA,CACA,uBAAAA,GAAA,uBACAkG,KAAAyD,OAAA,oBACAoL,KAAA,MACApL,MAAAzD,KAAAyD,MACAmnH,UAAA,KACA7D,MAAA,IAAArpH,MAAA0e,WACArkB,QAAAmF,KAAA8pH,iBACAnnE,GAAA3iD,KAAA+pH,YACAjvG,MAAA9a,KAAAgqH,SAAAlnH,GAEA,CAMA,cAAAgnH,GACA,OACAnrF,IAAA9jC,QAAA8jC,IACAsrF,IAAApvH,QAAAqvH,OAAArvH,QAAAqvH,SAAA,KACAC,IAAAtvH,QAAAuvH,OAAAvvH,QAAAuvH,SAAA,KACAC,IAAAxvH,QAAAwvH,MACAC,SAAAzvH,QAAAyvH,SACA58B,QAAA7yF,QAAA6yF,QACAhB,KAAA7xF,QAAA6xF,KACA69B,YAAA1vH,QAAA0vH,cAEA,CAMA,SAAAR,GACA,OACAS,QAAA7nE,EAAA6nE,UACAC,OAAA9nE,EAAA8nE,SAEA,CAOA,QAAAT,CAAAlnH,GACA,MAAAgY,EAAAhY,EAAAumH,EAAAjhF,MAAAtlC,GAAAumH,EAAAtyG,MACA,OAAA+D,EAAA7e,KAAAyuH,IACA,CACAC,OAAAD,EAAAE,kBACAj4D,KAAA+3D,EAAAG,cACAC,SAAAJ,EAAAK,kBACAnqB,KAAA8pB,EAAAM,gBACAp/G,OAAA8+G,EAAAO,gBACAhX,OAAAyW,EAAAvW,cAGA,CAOA,WAAAqV,CAAAl3E,GACA,IAAAtyC,KAAAm4C,SAAAp7C,IAAAu1C,GAAA,CACAA,EAAAslE,iBAAA,KACA,MAAAn2C,EAAA,IAAA+rD,EAAAl7E,GACAtyC,KAAAm4C,SAAA38C,IAAA82C,EAAAmvB,GACAzhE,KAAA7E,OAAAgjF,KAAA1c,EACA,CACA,CASA,mBAAAgsD,CAAA3qH,GACA,MAAAy6B,EAAAv9B,KAAA4pH,WAAA9mH,GACA,MAAAq1C,EAAAn4C,KAAA2tH,wBAEA,IAAAxC,SACAnrH,KAAA7E,OAAAiwH,cAAA,WACAprH,KAAA7E,OAAAiwH,YAAAtoH,GACA9C,KAAA7E,OAAAiwH,YACA,IAAApyG,EAEA,IAAAm/B,EAAAv8C,QAAAuvH,EAAA,CAEAptH,QAAAq4G,KAAA,mEAEAr4G,QAAAq4G,KAAA,iCACA+U,EAAA,KACA,CAEA,SAAAE,eACA7tF,EAAA,SAAA2tF,GACA3tF,EAAA,mBAAA3iC,QAAAywH,UAEA,GAAAH,IAAAtwH,QAAAywH,SAAA,CAGA,GAAAtyG,EAAA,CACAnY,aAAAmY,EACA,CAEAne,QAAA0wH,KAAA,EACA,CACA,CAEA,IAAApzE,KAAAv8C,SAAA,GACA,OAAAf,QAAAuuB,SAAAiiG,aACA,CAGAjC,EACAjxE,GACA,CAAA7F,EAAAhlC,KACA,MAAAypC,EAAA13B,EAAA/R,GACA,MAAAy5C,EAAAzU,EAAAyU,WAAAzU,EAGA,SAAAk5E,OAAAnR,GACA,WACA78E,EAAA68E,GACAtjE,GAAA,CAEA,CAEAgQ,EAAA0kE,QAAA,KACA1kE,EAAA1nC,KAAA,SAAAmsG,OAAA,aACAzkE,EAAA1nC,KAAA,QAAAmsG,OAAA,aAEA,IAAAL,GAAAE,iBAGArrH,KAAA7E,OAAA6C,IAAAu/B,GAIA,GAAA4tF,EAAA,CACAnyG,EAAApY,WAAAyqH,aAAA,IACA,CACA,CAQA,qBAAAsC,GAKA,OAAA3tH,KAAA7E,OAAAwsH,WAAAt3G,QAAA6xD,IACA,MAAAnb,EAAAmb,EAAAnb,WAAAmb,EACA,OAAAnb,EAAA6wD,gBAAA,GAEA,E,iBChPA,MAAAxwG,YAAAhN,EAAA,MAOAC,EAAAC,QAAA,MAAAkzH,wBAAApmH,EAOA,WAAAtH,CAAAinD,GACAtjD,MAAA,CAAAuD,WAAA,OAEA,IAAA+/C,EAAA,CACA,UAAA/jD,MAAA,uDACA,CAEAhD,KAAA43G,iBAAA,KACA53G,KAAA+mD,WACA,CAWA,MAAAz/C,CAAAi2B,EAAAs3E,EAAA90G,GACA,GAAAw9B,EAAAmwF,UAAA,CACA,OAAA1tH,KAAA+mD,UAAA/oD,IAAAu/B,EAAAx9B,EACA,CAEAA,IACA,WACA,E,iBCzCA,MAAAurD,EAAAlxD,EAAA,MACA,MAAA46G,iBAAA56G,EAAA,MACA,MAAA8+G,UAAA9+G,EAAA,MAMA,SAAAq9C,OAAA,CASAp9C,EAAAC,QAAA,CAAAwC,EAAAmnH,KACA,MAAA1uD,EAAA9sD,OAAAs8C,MAAA,SACA,MAAAiM,EAAA,IAAAgkD,EAAA,QACA,MAAArhG,EAAA,IAAAulG,EACA,IAAA0U,EAAA,GACA,IAAAj1D,EAAA,EACA,IAAAk1D,EAAA,EAEA,GAAA/wH,EAAAiQ,SAAA,UACAjQ,EAAAiQ,KACA,CAEA4G,EAAA0qE,SAAA,KACA1qE,EAAA0X,QAAA,KACA1X,EAAAkgC,UAAA,KACAlgC,EAAAL,KAAA,OACAK,EAAAL,KAAA,UAGAg4C,EAAA6M,KAAAr7D,EAAA61D,KAAA,cAAA7vD,EAAAgrH,KACA,GAAAhrH,EAAA,CACA,IAAAmhH,EAAA,CACAtwG,EAAAL,KAAA,QAAAxQ,EACA,MACAmhH,EAAAnhH,EACA,CACA6Q,EAAA0X,UACA,MACA,EAEA,SAAA8wC,OACA,GAAAxoD,EAAAkgC,UAAA,CACAyX,EAAAngD,MAAA2iH,EAAAr2E,MACA,MACA,CAEA,OAAA6T,EAAA6Q,KAAA2xD,EAAAv4D,EAAA,EAAAA,EAAA35D,OAAA+8D,GAAA,CAAAryD,EAAAmpD,KACA,GAAAnpD,EAAA,CACA,IAAA29G,EAAA,CACAtwG,EAAAL,KAAA,QAAAhN,EACA,MACA29G,EAAA39G,EACA,CACAqN,EAAA0X,UACA,MACA,CAEA,IAAAokC,EAAA,CACA,GAAAm+D,EAAA,CAEA,GAAA9wH,EAAAiQ,OAAA,MAAA8gH,EAAA/wH,EAAAiQ,MAAA,CACA,IAAAk3G,EAAA,CACAtwG,EAAAL,KAAA,OAAAs6G,EACA,MACA3J,EAAA,KAAA2J,EACA,CACA,CACAC,IACAD,EAAA,EACA,CACA,OAAAhtH,WAAAu7D,KAAA,IACA,CAEA,IAAAnnD,EAAAg8C,EAAAv0D,MAAA84D,EAAA53D,MAAA,EAAA8xD,IACA,IAAAw0D,EAAA,CACAtwG,EAAAL,KAAA,OAAA0B,EACA,CAEAA,GAAA44G,EAAA54G,GAAAtD,MAAA,OAEA,MAAAkzD,EAAA5vD,EAAApZ,OAAA,EACA,IAAAD,EAAA,EAEA,KAAAA,EAAAipE,EAAAjpE,IAAA,CAEA,GAAAmB,EAAAiQ,OAAA,MAAA8gH,EAAA/wH,EAAAiQ,MAAA,CACA,IAAAk3G,EAAA,CACAtwG,EAAAL,KAAA,OAAA0B,EAAArZ,GACA,MACAsoH,EAAA,KAAAjvG,EAAArZ,GACA,CACA,CACAkyH,GACA,CAEAD,EAAA54G,EAAA4vD,GACAjM,GAAAlJ,EACA,OAAA0M,MAAA,GAEA,EA3DA,EA2DA,IAGA,IAAA8nD,EAAA,CACA,OAAAtwG,CACA,CAEA,OAAAA,EAAA0X,OAAA,C,iBChHA,MAAAs3B,EAAAvoD,EAAA,MACA,MAAAoqF,QAAAR,WAAA5pF,EAAA,MACA,MAAA48G,EAAA58G,EAAA,MAOAC,EAAAC,QAAA,MAAAyzH,gBAAA/W,EAMA,WAAAl3G,CAAAhD,EAAA,IACA2G,MAAA3G,GAGAkD,KAAAyM,KAAA3P,EAAA2P,MAAA,UACAzM,KAAAguH,aAAAhuH,KAAAiuH,kBAAAnxH,EAAAkxH,cACAhuH,KAAAkuH,kBAAAluH,KAAAiuH,kBAAAnxH,EAAAoxH,mBACAluH,KAAAmuH,WAAArxH,EAAAqxH,MAAA,SAAArxH,EAAAqxH,IAAAxrE,EAAAyrE,IAEApuH,KAAAquH,gBAAA,GACA,CAQA,GAAArwH,CAAAu/B,EAAAx9B,GACAwS,cAAA,IAAAvS,KAAAsT,KAAA,SAAAiqB,KAGA,GAAAv9B,KAAAguH,aAAAzwF,EAAAinD,IAAA,CACA,GAAAzmF,QAAAuwH,QAAA,CAEAvwH,QAAAuwH,QAAA7xH,MAAA,GAAA8gC,EAAAymD,KAAAhkF,KAAAmuH,MACA,MAEApwH,QAAAuI,MAAAi3B,EAAAymD,GACA,CAEA,GAAAjkF,EAAA,CACAA,GACA,CACA,MACA,SAAAC,KAAAkuH,kBAAA3wF,EAAAinD,IAAA,CACA,GAAAzmF,QAAAuwH,QAAA,CAGAvwH,QAAAuwH,QAAA7xH,MAAA,GAAA8gC,EAAAymD,KAAAhkF,KAAAmuH,MACA,MAEApwH,QAAAq4G,KAAA74E,EAAAymD,GACA,CAEA,GAAAjkF,EAAA,CACAA,GACA,CACA,MACA,CAEA,GAAAhC,QAAAwwH,QAAA,CAEAxwH,QAAAwwH,QAAA9xH,MAAA,GAAA8gC,EAAAymD,KAAAhkF,KAAAmuH,MACA,MAEApwH,QAAAC,IAAAu/B,EAAAymD,GACA,CAEA,GAAAjkF,EAAA,CACAA,GACA,CACA,CAUA,iBAAAkuH,CAAAO,EAAAC,GACA,IAAAD,EACA,SAEAC,KAAA,gEAEA,IAAA/wH,MAAAwzB,QAAAs9F,GAAA,CACA,UAAAxrH,MAAAyrH,EACA,CAEA,OAAAD,EAAAltG,QAAA,CAAA9lB,EAAAkzH,KACA,UAAAA,IAAA,UACA,UAAA1rH,MAAAyrH,EACA,CACAjzH,EAAAkzH,GAAA,KAEA,OAAAlzH,CAAA,GACA,GACA,E,iBCzGA,MAAA8vD,EAAAlxD,EAAA,MACA,MAAAsU,EAAAtU,EAAA,MACA,MAAAu0H,EAAAv0H,EAAA,MACA,MAAA4Z,EAAA5Z,EAAA,MACA,MAAA4pF,WAAA5pF,EAAA,MACA,MAAA8+G,SAAA0V,eAAAx0H,EAAA,MACA,MAAA48G,EAAA58G,EAAA,MACA,MAAAojC,EAAApjC,EAAA,KAAAA,CAAA,gBACA,MAAAuoD,EAAAvoD,EAAA,MACA,MAAAy0H,EAAAz0H,EAAA,MAOAC,EAAAC,QAAA,MAAAw0H,aAAA9X,EAMA,WAAAl3G,CAAAhD,EAAA,IACA2G,MAAA3G,GAGAkD,KAAAyM,KAAA3P,EAAA2P,MAAA,OAIA,SAAAsiH,QAAAhkH,KAAAtN,GACAA,EAAAE,MAAA,GAAA0hC,SAAA5yB,IACA,GAAA3P,EAAA2P,GAAA,CACA,UAAAzJ,MAAA,cAAAyJ,SAAA1B,aACA,IAEA,CAGA/K,KAAAgvH,QAAA,IAAAJ,EACA5uH,KAAAgvH,QAAAX,gBAAA,IAGAruH,KAAAivH,SAAAjvH,KAAAivH,SAAA9gH,KAAAnO,MAEA,GAAAlD,EAAAilB,UAAAjlB,EAAAoyH,QAAA,CACAH,QAAA,gCACA/uH,KAAAmvH,UAAAnvH,KAAA+hB,SAAAjlB,EAAAilB,SACArT,EAAA0gH,SAAAtyH,EAAAilB,UACA,cAEA/hB,KAAAkvH,QAAApyH,EAAAoyH,SAAAxgH,EAAAwgH,QAAApyH,EAAAilB,UACA/hB,KAAAlD,mBAAA,CAAA6K,MAAA,IACA,SAAA7K,EAAA6W,OAAA,CAEA5V,QAAAq4G,KAAA,8EACA2Y,QAAA,+BACA/uH,KAAAqvH,MAAArvH,KAAAgvH,QAAA7wC,KAAAn+E,KAAAsvH,aAAAxyH,EAAA6W,SACA3T,KAAAkvH,QAAAxgH,EAAAwgH,QAAAlvH,KAAAqvH,MAAA3gH,KAGA,MACA,UAAA1L,MAAA,iDACA,CAEAhD,KAAAuvH,QAAAzyH,EAAAyyH,SAAA,KACAvvH,KAAAwvH,eAAA1yH,EAAA0yH,gBAAA,MACAxvH,KAAAyvH,cAAA3yH,EAAA2yH,eAAA,MACAzvH,KAAA0vH,SAAA5yH,EAAA4yH,UAAA,KACA1vH,KAAAmuH,WAAArxH,EAAAqxH,MAAA,SAAArxH,EAAAqxH,IAAAxrE,EAAAyrE,IACApuH,KAAA2vH,SAAA7yH,EAAA6yH,UAAA,MACA3vH,KAAA4vH,KAAA9yH,EAAA8yH,MAAA,MAIA5vH,KAAAkH,MAAA,EACAlH,KAAA6vH,aAAA,EACA7vH,KAAA8vH,SAAA,EACA9vH,KAAA+vH,OAAA,MACA/vH,KAAAgwH,SAAA,MACAhwH,KAAAyrH,QAAA,MACAzrH,KAAAiwH,WAAA,MAEA,GAAAjwH,KAAAkvH,QAAAlvH,KAAAkwH,wBAAAlwH,KAAAkvH,SACA,IAAAlvH,KAAA4vH,KAAA5vH,KAAAm4D,MACA,CAEA,cAAAg4D,GACA,GAAAnwH,KAAAyrH,QAAA,CACA,GAAAzrH,KAAAgwH,SAAA,CACAhwH,KAAAqf,KAAA,aACArf,KAAAgvH,QAAA3vG,KAAA,cAAArf,KAAAsT,KAAA,YACAf,cAAA,IAAAvS,KAAAgvH,QAAA9uG,OAAA,GAEA,MACAlgB,KAAAgvH,QAAA3vG,KAAA,cAAArf,KAAAsT,KAAA,YACAf,cAAA,IAAAvS,KAAAgvH,QAAA9uG,OACA,CACA,CACA,CAQA,GAAAliB,CAAAu/B,EAAAx9B,EAAA,UAIA,GAAAC,KAAAq3G,OAAA,CACAt3G,IACA,WACA,CAIA,GAAAC,KAAA+vH,OAAA,CACA/vH,KAAAgvH,QAAA3vG,KAAA,cACArf,KAAA+vH,OAAA,MACA/vH,KAAAhC,IAAAu/B,EAAAx9B,EAAA,IAEA,MACA,CACA,GAAAC,KAAAowH,QAAA,CACApwH,KAAAgvH,QAAA3vG,KAAA,eACArf,KAAAowH,QAAA,MACApwH,KAAAhC,IAAAu/B,EAAAx9B,EAAA,IAEA,MACA,CACA,GAAAC,KAAA4vH,KAAA,CACA,IAAA5vH,KAAAiwH,WAAA,CACA,IAAAjwH,KAAAgwH,SAAA,CACAhwH,KAAAm4D,MACA,CACAn4D,KAAAqf,KAAA,aACArf,KAAAiwH,WAAA,KACAjwH,KAAAhC,IAAAu/B,EAAAx9B,GACA,UAEA,MACA,CACA,GAAAC,KAAAqwH,cAAArwH,KAAA6vH,cAAA,CACA7vH,KAAAqvH,MAAAhwG,KAAA,cACA,IAAArf,KAAAgwH,SAAA,CACAhwH,KAAAm4D,MACA,CACAn4D,KAAAqf,KAAA,aACArf,KAAAhC,IAAAu/B,EAAAx9B,GACA,UAEA,UAEA,MACA,CACA,CAGA,MAAA2U,EAAA,GAAA6oB,EAAAymD,KAAAhkF,KAAAmuH,MACA,MAAA1+D,EAAAhnD,OAAAyrC,WAAAx/B,GAOA,SAAA47G,SACAtwH,KAAAkH,OAAAuoD,EACAzvD,KAAA6vH,cAAApgE,EAEAjyB,EAAA,eAAAx9B,KAAAkH,MAAAwN,GACA1U,KAAAsT,KAAA,SAAAiqB,GAGA,GAAAv9B,KAAAowH,QAAA,CACA,MACA,CAGA,GAAApwH,KAAAgwH,SAAA,CACA,MACA,CAGA,IAAAhwH,KAAAqwH,gBAAA,CACA,MACA,CACA,GAAArwH,KAAA4vH,KAAA,CACA5vH,KAAAuwH,YAAA,KAAAvwH,KAAAsT,KAAA,iBACA,MACA,CAKAtT,KAAAowH,QAAA,KACApwH,KAAAuwH,YAAA,IAAAvwH,KAAAwwH,eACA,CAKAxwH,KAAA6vH,cAAApgE,EACA,GAAAzvD,KAAAgwH,WACAhwH,KAAAywH,qBACAzwH,KAAAqwH,cAAArwH,KAAAkH,MAAAlH,KAAA6vH,cAAA,CACA7vH,KAAAywH,oBAAA,IACA,CAEA,MAAAC,EAAA1wH,KAAAgvH,QAAAvyH,MAAAiY,EAAA47G,OAAAniH,KAAAnO,OACA,IAAA0wH,EAAA,CACA1wH,KAAA+vH,OAAA,KACA/vH,KAAAgvH,QAAA3vG,KAAA,cACArf,KAAA+vH,OAAA,MACAhwH,GAAA,GAEA,MACAA,GACA,CAEAy9B,EAAA,UAAAkzF,EAAA1wH,KAAA+vH,QAEA/vH,KAAAmwH,iBAEA,OAAAO,CACA,CAQA,KAAAhE,CAAA5vH,EAAAiD,GACA,UAAAjD,IAAA,YACAiD,EAAAjD,EACAA,EAAA,EACA,CAEAA,EAAA6zH,eAAA7zH,GACA,MAAA61D,EAAAjkD,EAAAiD,KAAA3R,KAAAkvH,QAAAlvH,KAAA+hB,UACA,IAAA6rG,EAAA,GACA,IAAA9rD,EAAA,GACA,IAAA+rD,EAAA,EAEA,MAAAl6G,EAAA23C,EAAAslE,iBAAAj+D,EAAA,CACAnrD,SAAA,SAGAmM,EAAAsM,GAAA,SAAAnd,IACA,GAAA6Q,EAAA0qE,SAAA,CACA1qE,EAAA0X,SACA,CACA,IAAAtrB,EAAA,CACA,MACA,CAEA,OAAA+C,EAAAqD,OAAA,SAAApG,EAAA+C,GAAA/C,EAAA,KAAA+hE,EAAA,IAGAnuD,EAAAsM,GAAA,QAAAjL,IACAA,GAAA44G,EAAA54G,GAAAtD,MAAA,OACA,MAAAkzD,EAAA5vD,EAAApZ,OAAA,EACA,IAAAD,EAAA,EAEA,KAAAA,EAAAipE,EAAAjpE,IAAA,CACA,IAAAmB,EAAAiQ,OAAA8gH,GAAA/wH,EAAAiQ,MAAA,CACA3J,IAAA4R,EAAArZ,GACA,CACAkyH,GACA,CAEAD,EAAA54G,EAAA4vD,EAAA,IAGAjxD,EAAAsM,GAAA,cACA,GAAA2tG,EAAA,CACAxqH,IAAAwqH,EAAA,KACA,CACA,GAAA9wH,EAAA+zH,QAAA,QACA/uD,IAAAgvD,SACA,CAGA,GAAA/wH,IAAA,KAAA+hE,EAAA,IAGA,SAAA1+D,IAAAwqH,EAAAmD,GACA,IACA,MAAA/yH,EAAA0rB,KAAA0e,MAAAwlF,GACA,GAAAoD,MAAAhzH,GAAA,CACAzC,KAAAyC,EACA,CACA,OAAArD,GACA,IAAAo2H,EAAA,CACAp9G,EAAAL,KAAA,QAAA3Y,EACA,CACA,CACA,CAEA,SAAAY,KAAAyC,GACA,GACAlB,EAAAm0H,MACAnvD,EAAAlmE,QAAAkB,EAAAm0H,MACAn0H,EAAA+zH,QAAA,OACA,CACA,GAAAl9G,EAAA0qE,SAAA,CACA1qE,EAAA0X,SACA,CACA,MACA,CAEA,GAAAvuB,EAAA+4F,OAAA,CACA73F,EAAAlB,EAAA+4F,OAAAv0E,QAAA,CAAA/Y,EAAApL,KACAoL,EAAApL,GAAAa,EAAAb,GACA,OAAAoL,CAAA,GACA,GACA,CAEA,GAAAzL,EAAA+zH,QAAA,QACA,GAAA/uD,EAAAlmE,QAAAkB,EAAAm0H,KAAA,CACAnvD,EAAAjtB,OACA,CACA,CACAitB,EAAAvmE,KAAAyC,EACA,CAEA,SAAAgzH,MAAAhzH,GACA,IAAAA,EAAA,CACA,MACA,CAEA,UAAAA,IAAA,UACA,MACA,CAEA,MAAAmvH,EAAA,IAAA3sH,KAAAxC,EAAAkoF,WACA,GACAppF,EAAAmiB,MAAAkuG,EAAArwH,EAAAmiB,MACAniB,EAAAo0H,OAAA/D,EAAArwH,EAAAo0H,OACAp0H,EAAAs4E,OAAAt4E,EAAAs4E,QAAAp3E,EAAAo3E,MACA,CACA,MACA,CAEA,WACA,CAEA,SAAAu7C,eAAA7zH,GACAA,KAAA,GAGAA,EAAAm0H,KAAAn0H,EAAAm0H,MAAAn0H,EAAAgiE,OAAA,GAGAhiE,EAAAiQ,MAAAjQ,EAAAiQ,OAAA,EAGAjQ,EAAAo0H,MAAAp0H,EAAAo0H,OAAA,IAAA1wH,KACA,UAAA1D,EAAAo0H,QAAA,UACAp0H,EAAAo0H,MAAA,IAAA1wH,KAAA1D,EAAAo0H,MACA,CAGAp0H,EAAAmiB,KAAAniB,EAAAmiB,MAAAniB,EAAAo0H,MAAA,aACA,UAAAp0H,EAAAmiB,OAAA,UACAniB,EAAAmiB,KAAA,IAAAze,KAAA1D,EAAAmiB,KACA,CAGAniB,EAAA+zH,MAAA/zH,EAAA+zH,OAAA,OAEA,OAAA/zH,CACA,CACA,CAQA,MAAA6W,CAAA7W,EAAA,IACA,MAAA61D,EAAAjkD,EAAAiD,KAAA3R,KAAAkvH,QAAAlvH,KAAA+hB,UACA,MAAApO,EAAA,IAAAulG,EACA,MAAAtK,EAAA,CACAj8C,OACA5lD,MAAAjQ,EAAAiQ,OAGA4G,EAAA0X,QAAAwjG,EAAAjgB,GAAA,CAAA9rG,EAAA89F,KACA,GAAA99F,EAAA,CACA,OAAA6Q,EAAAL,KAAA,QAAAxQ,EACA,CAEA,IACA6Q,EAAAL,KAAA,OAAAstF,GACAA,EAAAl3E,KAAA0e,MAAAw4D,GACAjtF,EAAAL,KAAA,MAAAstF,EACA,OAAAjmG,GACAgZ,EAAAL,KAAA,QAAA3Y,EACA,KAGA,OAAAgZ,CACA,CAMA,IAAAwkD,GAGA,IAAAn4D,KAAA+hB,SAAA,OACA,GAAA/hB,KAAAgwH,SAAA,OAEAhwH,KAAAgwH,SAAA,KAGAhwH,KAAAmxH,MAAA,CAAAruH,EAAA4wB,KACA,GAAA5wB,EAAA,CACA,OAAA9C,KAAAsT,KAAA,QAAAxQ,EACA,CACA06B,EAAA,6BAAAx9B,KAAA+hB,SAAA2R,GACA1zB,KAAAkH,MAAAwsB,EACA1zB,KAAAqvH,MAAArvH,KAAAoxH,cAAApxH,KAAAgvH,SACAhvH,KAAAgwH,SAAA,MACAhwH,KAAAqf,KAAA,aACA,GAAArf,KAAAgvH,QAAAqC,aAAA76G,SAAA,WACAxW,KAAAgvH,QAAA17G,KAAA,SACA,MACAtT,KAAAowH,QAAA,KACA,IACA,GAEA,CAOA,IAAAe,CAAApxH,GACA,MAAAgL,EAAA/K,KAAAsxH,WACA,MAAAC,EAAA7iH,EAAAiD,KAAA3R,KAAAkvH,QAAAnkH,GAEAugD,EAAA6lE,KAAAI,GAAA,CAAAzuH,EAAAquH,KACA,GAAAruH,KAAAqD,OAAA,UACAq3B,EAAA,YAAA+zF,GAEAvxH,KAAA+hB,SAAAhX,EACA,OAAAhL,EAAA,OACA,CAEA,GAAA+C,EAAA,CACA06B,EAAA,OAAA16B,EAAAqD,QAAAorH,KACA,OAAAxxH,EAAA+C,EACA,CAEA,IAAAquH,GAAAnxH,KAAAqwH,cAAAc,EAAAz9F,MAAA,CAGA,OAAA1zB,KAAAwxH,UAAA,IAAAxxH,KAAAmxH,KAAApxH,IACA,CAIAC,KAAA+hB,SAAAhX,EACAhL,EAAA,KAAAoxH,EAAAz9F,KAAA,GAEA,CAOA,KAAAvoB,CAAA1D,GACA,IAAAzH,KAAAgvH,QAAA,CACA,MACA,CAEAhvH,KAAAgvH,QAAA9uG,KAAA,KACA,GAAAzY,EAAA,CACAA,GACA,CACAzH,KAAAsT,KAAA,SACAtT,KAAAsT,KAAA,YAEA,CAOA,aAAA+8G,CAAA38F,GACAA,KAAA1zB,KAAAkH,MACA,OAAAlH,KAAAuvH,SAAA77F,GAAA1zB,KAAAuvH,OACA,CAOA,QAAAN,CAAAnsH,GACA9C,KAAAsT,KAAA,QAAAxQ,EACA,CAOA,YAAAwsH,CAAA37G,GACAA,EAAAsM,GAAA,QAAAjgB,KAAAivH,UAEA,OAAAt7G,CACA,CAOA,cAAA89G,CAAA99G,GACAA,EAAA6pC,eAAA,QAAAx9C,KAAAivH,UACAt7G,EAAA0X,UACA,OAAA1X,CACA,CAKA,WAAA68G,GACAxwH,KAAAwxH,UAAA,IAAAxxH,KAAAm4D,QACA,CASA,UAAAo4D,CAAAxwH,EAAA,UACA,GAAAC,KAAAqvH,MAAA,CACArvH,KAAAgvH,QAAA3R,OAAAr9G,KAAAqvH,OACArvH,KAAAqvH,MAAAnvG,KAAA,KACAlgB,KAAAyxH,eAAAzxH,KAAAqvH,OACAtvH,GAAA,GAEA,MACAA,GACA,CACA,CASA,aAAAqxH,CAAAh7D,GACA,MAAAm7D,EAAA7iH,EAAAiD,KAAA3R,KAAAkvH,QAAAlvH,KAAA+hB,UAEAyb,EAAA,sBAAA+zF,EAAAvxH,KAAAlD,SACA,MAAAmgH,EAAA3xD,EAAAomE,kBAAAH,EAAAvxH,KAAAlD,SAEAmjB,GAAA,SAAAnd,GAAA06B,EAAA16B,KACAmd,GAAA,aAAAud,EAAA,QAAAy/E,EAAAvuG,KAAAuuG,EAAA0U,gBACA1xG,GAAA,aACAud,EAAA,eAAA+zF,GACAvxH,KAAAsT,KAAA,OAAAi+G,GACAn7D,EAAA+nB,KAAA8+B,GAKA,GAAAj9G,KAAAywH,oBAAA,CACAzwH,KAAAgvH,QAAA,IAAAJ,EACA5uH,KAAAgvH,QAAAX,gBAAA,IACAruH,KAAAwwH,cACAxwH,KAAAywH,oBAAA,MACAzwH,KAAAyxH,eAAAxU,GACA7mD,EAAAl2C,KACA,KAGAsd,EAAA,mBAAA+zF,GACA,OAAAtU,CACA,CAOA,QAAAuU,CAAAzxH,GACAy9B,EAAA,WAAAx9B,KAAA+hB,UACA,MAAA6vG,EAAAljH,EAAAmjH,QAAA7xH,KAAAmvH,WACA,MAAAC,EAAA1gH,EAAA0gH,SAAApvH,KAAAmvH,UAAAyC,GACA,MAAA/vD,EAAA,GAEA,GAAA7hE,KAAAyvH,cAAA,CACA5tD,EAAAtmE,KACA,SAAAkM,GACA,MAAAo/C,EAAA7mD,KAAA8vH,SAAA,IAAA9vH,KAAA2vH,SAAA3vH,KAAA8vH,SAAA,GACA9vH,KAAA8xH,cACApjH,EAAAiD,KAAA3R,KAAAkvH,QAAA,GAAAE,IAAAvoE,IAAA+qE,KACAljH,EAAAiD,KAAA3R,KAAAkvH,QAAA,GAAAE,IAAAvoE,IAAA+qE,QACAnqH,EAEA,EAAA0G,KAAAnO,MAEA,CAEA6hE,EAAAtmE,KACA,SAAAkM,GACA,IAAAzH,KAAA2vH,SAAA,CACA3vH,KAAA8vH,UAAA,EACA9vH,KAAA+xH,2BAAAH,EAAAxC,EAAA3nH,EACA,MACAzH,KAAAgyH,uBAAAJ,EAAAxC,EAAA3nH,EACA,CACA,EAAA0G,KAAAnO,OAGA2uH,EAAA9sD,EAAA9hE,EACA,CAQA,QAAAuxH,GACA,MAAAM,EAAAljH,EAAAmjH,QAAA7xH,KAAAmvH,WACA,MAAAC,EAAA1gH,EAAA0gH,SAAApvH,KAAAmvH,UAAAyC,GACA,MAAAK,EAAAjyH,KAAAwvH,eACAxvH,KAAAwvH,iBACAxvH,KAAA8vH,SAKA,OAAA9vH,KAAA2vH,UAAA3vH,KAAA8vH,SACA,GAAAV,IAAA6C,IAAAL,IACA,GAAAxC,IAAAwC,GACA,CAUA,0BAAAG,CAAAH,EAAAxC,EAAArvH,GAEA,IAAAC,KAAA0vH,UAAA1vH,KAAA8vH,SAAA9vH,KAAA0vH,SAAA,CACA,OAAAn9G,aAAAxS,EACA,CAEA,MAAAmyH,EAAAlyH,KAAA8vH,SAAA9vH,KAAA0vH,SACA,MAAAyC,EAAAD,IAAA,EAAAA,EAAA,GACA,MAAAE,EAAApyH,KAAAyvH,cAAA,SACA,MAAA4C,EAAA,GAAAjD,IAAA+C,IAAAP,IAAAQ,IACA,MAAArnH,EAAA2D,EAAAiD,KAAA3R,KAAAkvH,QAAAmD,GAEA/mE,EAAAgnE,OAAAvnH,EAAAhL,EACA,CAaA,sBAAAiyH,CAAAJ,EAAAxC,EAAArvH,GACA,MAAA8hE,EAAA,GACA,IAAA7hE,KAAA0vH,SAAA,CACA,MACA,CAGA,MAAA0C,EAAApyH,KAAAyvH,cAAA,SACA,QAAA7nF,EAAA5nC,KAAA0vH,SAAA,EAAA9nF,EAAA,EAAAA,IAAA,CACAi6B,EAAAtmE,KAAA,SAAAI,EAAA8L,GACA,IAAAqsG,EAAA,GAAAsb,IAAAzzH,EAAA,IAAAi2H,IAAAQ,IACA,MAAAG,EAAA7jH,EAAAiD,KAAA3R,KAAAkvH,QAAApb,GAEAxoD,EAAAknE,OAAAD,GAAAC,IACA,IAAAA,EAAA,CACA,OAAA/qH,EAAA,KACA,CAEAqsG,EAAA,GAAAsb,IAAAzzH,IAAAi2H,IAAAQ,IACA9mE,EAAAmnE,OAAAF,EAAA7jH,EAAAiD,KAAA3R,KAAAkvH,QAAApb,GAAArsG,EAAA,GAEA,EAAA0G,KAAAnO,KAAA4nC,GACA,CAEA+mF,EAAA9sD,GAAA,KACAvW,EAAAmnE,OACA/jH,EAAAiD,KAAA3R,KAAAkvH,QAAA,GAAAE,IAAAwC,IAAAQ,KACA1jH,EAAAiD,KAAA3R,KAAAkvH,QAAA,GAAAE,KAAAwC,IAAAQ,KACAryH,EACA,GAEA,CAUA,aAAA+xH,CAAApkB,EAAAuP,EAAAl9G,GACAurD,EAAArU,OAAAy2D,EAAApiD,EAAAonE,MAAA5vH,IACA,GAAAA,EAAA,CACA,OAAA/C,GACA,CACA,IAAA0V,EAAAzB,EAAA2+G,aACA,IAAAC,EAAAtnE,EAAAslE,iBAAAljB,GACA,IAAAnlB,EAAAj9B,EAAAomE,kBAAAzU,GACA10B,EAAAtoE,GAAA,eACAqrC,EAAAgnE,OAAA5kB,EAAA3tG,EAAA,IAEA6yH,EAAAz0C,KAAA1oE,GAAA0oE,KAAAoK,EAAA,GAEA,CAEA,uBAAA2nC,CAAA2C,GAEA,IAAAvnE,EAAAwnE,WAAAD,GAAA,CACAvnE,EAAAynE,UAAAF,EAAA,CAAAG,UAAA,MACA,CAEA,E,iBClvBA,MAAAv2G,EAAAriB,EAAA,MACA,MAAA64H,EAAA74H,EAAA,MACA,MAAA8+G,UAAA9+G,EAAA,MACA,MAAA48G,EAAA58G,EAAA,MACA,MAAAyrF,EAAAzrF,EAAA,MAOAC,EAAAC,QAAA,MAAA44H,aAAAlc,EAOA,WAAAl3G,CAAAhD,EAAA,IACA2G,MAAA3G,GAEAkD,KAAAlD,UACAkD,KAAAyM,KAAA3P,EAAA2P,MAAA,OACAzM,KAAAmzH,MAAAr2H,EAAAq2H,IACAnzH,KAAA6L,KAAA/O,EAAA+O,MAAA,YACA7L,KAAA6d,KAAA/gB,EAAA+gB,KACA7d,KAAAozH,KAAAt2H,EAAAs2H,KACApzH,KAAA0O,KAAA5R,EAAA4R,MAAA,GACA1O,KAAAqzH,MAAAv2H,EAAAu2H,MACArzH,KAAA+C,QAAAjG,EAAAiG,SAAA,GACA/C,KAAA+C,QAAA,mCACA/C,KAAAszH,MAAAx2H,EAAAw2H,OAAA,MACAtzH,KAAAuzH,cAAAz2H,EAAAy2H,eAAA,IACAvzH,KAAAwzH,WAAA12H,EAAA02H,YAAA,GACAxzH,KAAAyzH,aAAA,GACAzzH,KAAA0zH,gBAAA,EACA1zH,KAAA2zH,cAAA,GAEA,IAAA3zH,KAAA6d,KAAA,CACA7d,KAAA6d,KAAA7d,KAAAmzH,IAAA,MACA,CACA,CAQA,GAAAn1H,CAAAu/B,EAAAx9B,GACAC,KAAA4zH,SAAAr2F,EAAA,YAAAz6B,EAAAwc,KACA,GAAAA,KAAAI,aAAA,KACA5c,EAAA,IAAAE,MAAA,6BAAAsc,EAAAI,aACA,CAEA,GAAA5c,EAAA,CACA9C,KAAAsT,KAAA,OAAAxQ,EACA,MACA9C,KAAAsT,KAAA,SAAAiqB,EACA,KAKA,GAAAx9B,EAAA,CACAwS,aAAAxS,EACA,CACA,CAQA,KAAA2sH,CAAA5vH,EAAAiD,GACA,UAAAjD,IAAA,YACAiD,EAAAjD,EACAA,EAAA,EACA,CAEAA,EAAA,CACA8O,OAAA,QACAmpD,OAAA/0D,KAAA2wH,eAAA7zH,IAGA,MAAAs2H,EAAAt2H,EAAAi4D,OAAAq+D,MAAA,YACAt2H,EAAAi4D,OAAAq+D,KAEA,MAAA1kH,EAAA5R,EAAAi4D,OAAArmD,MAAA,YACA5R,EAAAi4D,OAAArmD,KAEA1O,KAAA4zH,SAAA92H,EAAAs2H,EAAA1kH,GAAA,CAAA5L,EAAAwc,EAAA22C,KACA,GAAA32C,KAAAI,aAAA,KACA5c,EAAA,IAAAE,MAAA,6BAAAsc,EAAAI,aACA,CAEA,GAAA5c,EAAA,CACA,OAAA/C,EAAA+C,EACA,CAEA,UAAAmzD,IAAA,UACA,IACAA,EAAAvsC,KAAA0e,MAAA6tB,EACA,OAAAt7D,GACA,OAAAoF,EAAApF,EACA,CACA,CAEAoF,EAAA,KAAAk2D,EAAA,GAEA,CAOA,MAAAtiD,CAAA7W,EAAA,IACA,MAAA6W,EAAA,IAAAulG,EACAp8G,EAAA,CACA8O,OAAA,SACAmpD,OAAAj4D,GAGA,MAAA4R,EAAA5R,EAAAi4D,OAAArmD,MAAA,YACA5R,EAAAi4D,OAAArmD,KAEA,MAAA0kH,EAAAt2H,EAAAi4D,OAAAq+D,MAAA,YACAt2H,EAAAi4D,OAAAq+D,KAEA,IAAAxF,EAAA,GACA,MAAA7G,EAAA/mH,KAAA4zH,SAAA92H,EAAAs2H,EAAA1kH,GAEAiF,EAAA0X,QAAA,IAAA07F,EAAA17F,UACA07F,EAAA9mG,GAAA,QAAAjL,IACAA,GAAA44G,EAAA54G,GAAAtD,MAAA,OACA,MAAAkzD,EAAA5vD,EAAApZ,OAAA,EAEA,IAAAD,EAAA,EACA,KAAAA,EAAAipE,EAAAjpE,IAAA,CACA,IACAgY,EAAAL,KAAA,MAAAoW,KAAA0e,MAAApzB,EAAArZ,IACA,OAAAhB,GACAgZ,EAAAL,KAAA,QAAA3Y,EACA,CACA,CAEAizH,EAAA54G,EAAA4vD,EAAA,IAEAmiD,EAAA9mG,GAAA,SAAAnd,GAAA6Q,EAAAL,KAAA,QAAAxQ,KAEA,OAAA6Q,CACA,CAUA,QAAAigH,CAAA92H,EAAAs2H,EAAA1kH,EAAA3O,GACAjD,KAAA,GAEAs2H,KAAApzH,KAAAozH,KACA1kH,KAAA1O,KAAA0O,MAAA,GAEA,GAAA1O,KAAAszH,MAAA,CACAtzH,KAAA6zH,SAAA/2H,EAAAiD,EAAAqzH,EAAA1kH,EACA,MACA1O,KAAA8zH,WAAAh3H,EAAAiD,EAAAqzH,EAAA1kH,EACA,CACA,CASA,QAAAmlH,CAAA/2H,EAAAiD,EAAAqzH,EAAA1kH,GACA1O,KAAAyzH,aAAAl4H,KAAAuB,GACA,GAAAkD,KAAAyzH,aAAA73H,SAAA,GAEA,MAAAm4H,EAAA/zH,KACAA,KAAA2zH,cAAA5zH,EACAC,KAAA0zH,eAAA9yH,YAAA,WAEAmzH,EAAAL,gBAAA,EACAK,EAAAC,gBAAAD,EAAAJ,cAAAP,EAAA1kH,EACA,GAAA1O,KAAAuzH,cACA,CACA,GAAAvzH,KAAAyzH,aAAA73H,SAAAoE,KAAAwzH,WAAA,CAEAxzH,KAAAg0H,gBAAAh0H,KAAA2zH,cAAAP,EAAA1kH,EACA,CACA,CAQA,eAAAslH,CAAAj0H,EAAAqzH,EAAA1kH,GACA,GAAA1O,KAAA0zH,eAAA,GACA7yH,aAAAb,KAAA0zH,gBACA1zH,KAAA0zH,gBAAA,CACA,CACA,MAAAO,EAAAj0H,KAAAyzH,aAAA91H,QACAqC,KAAAyzH,aAAA,GACAzzH,KAAA8zH,WAAAG,EAAAl0H,EAAAqzH,EAAA1kH,EACA,CAUA,UAAAolH,CAAAh3H,EAAAiD,EAAAqzH,EAAA1kH,GAEA,MAAA3L,EAAA/F,OAAAwJ,OAAA,GAAAxG,KAAA+C,SACA,GAAAqwH,KAAAc,OAAA,CACAnxH,EAAAoxH,cAAA,UAAAf,EAAAc,QACA,CACA,MAAAnN,GAAA/mH,KAAAmzH,IAAAF,EAAAx2G,GAAA2C,QAAA,IACApf,KAAAlD,QACA8O,OAAA,OACAC,KAAA7L,KAAA6L,KACAgS,KAAA7d,KAAA6d,KACAnP,KAAA,IAAAA,EAAAkoD,QAAA,YACA7zD,UACAqwH,UAAA31G,UAAA21G,EAAA11G,SAAA,GAAA01G,EAAA31G,YAAA21G,EAAA11G,WAAA,GACA21G,MAAArzH,KAAAqzH,QAGAtM,EAAA9mG,GAAA,QAAAlgB,GACAgnH,EAAA9mG,GAAA,YAAAX,GACAA,EAAAW,GAAA,WAAAlgB,EAAA,KAAAuf,KAAAy0B,WAEAgzE,EAAA7mG,IAAAzX,OAAAwW,KAAA4mE,EAAA/oF,EAAAkD,KAAAlD,QAAA8oF,UAAA,QACA,E,iBCnPA5oF,OAAA2B,eAAArE,EAAA,WACA+nD,aAAA,KACArnC,WAAA,KACA,GAAAjE,GACA,OAAA3c,EAAA,KACA,IAOA4C,OAAA2B,eAAArE,EAAA,QACA+nD,aAAA,KACArnC,WAAA,KACA,GAAAjE,GACA,OAAA3c,EAAA,KACA,IAOA4C,OAAA2B,eAAArE,EAAA,QACA+nD,aAAA,KACArnC,WAAA,KACA,GAAAjE,GACA,OAAA3c,EAAA,KACA,IAOA4C,OAAA2B,eAAArE,EAAA,UACA+nD,aAAA,KACArnC,WAAA,KACA,GAAAjE,GACA,OAAA3c,EAAA,KACA,G,iBC7CA,MAAA8jF,EAAA9jF,EAAA,MACA,MAAA4pF,WAAA5pF,EAAA,MACA,MAAAuoD,EAAAvoD,EAAA,MACA,MAAA48G,EAAA58G,EAAA,MAOAC,EAAAC,QAAA,MAAA4+G,eAAAlC,EAMA,WAAAl3G,CAAAhD,EAAA,IACA2G,MAAA3G,GAEA,IAAAA,EAAA6W,SAAAuqE,EAAAphF,EAAA6W,QAAA,CACA,UAAA3Q,MAAA,8BACA,CAIAhD,KAAAgvH,QAAAlyH,EAAA6W,OACA3T,KAAAgvH,QAAAX,gBAAA1/G,UACA3O,KAAAo0H,aAAAt3H,EAAA6W,OAAAyqE,eAAAp3E,WACAhH,KAAAmuH,WAAArxH,EAAAqxH,MAAA,SAAArxH,EAAAqxH,IAAAxrE,EAAAyrE,GACA,CAQA,GAAApwH,CAAAu/B,EAAAx9B,GACAwS,cAAA,IAAAvS,KAAAsT,KAAA,SAAAiqB,KACA,GAAAv9B,KAAAo0H,aAAA,CACAp0H,KAAAgvH,QAAAvyH,MAAA8gC,GACA,GAAAx9B,EAAA,CACAA,GACA,CACA,MACA,CAEAC,KAAAgvH,QAAAvyH,MAAA,GAAA8gC,EAAAymD,KAAAhkF,KAAAmuH,OACA,GAAApuH,EAAA,CACAA,GACA,CACA,MACA,E,WC3DA,MAAAmqF,EAAA,GAEA,SAAA+tB,gBAAA9xG,EAAAvJ,EAAAs7G,GACA,IAAAA,EAAA,CACAA,EAAAl1G,KACA,CAEA,SAAAm1G,WAAA1lG,EAAAC,EAAAC,GACA,UAAA/V,IAAA,UACA,OAAAA,CACA,MACA,OAAAA,EAAA6V,EAAAC,EAAAC,EACA,CACA,CAEA,MAAAylG,kBAAAF,EACA,WAAAp4G,CAAA2S,EAAAC,EAAAC,GACAlP,MAAA00G,WAAA1lG,EAAAC,EAAAC,GACA,EAGAylG,UAAAn7G,UAAAwP,KAAAyrG,EAAAzrG,KACA2rG,UAAAn7G,UAAAkJ,OAEA+jF,EAAA/jF,GAAAiyG,SACA,CAGA,SAAAC,MAAA1N,EAAA2N,GACA,GAAA56G,MAAAwzB,QAAAy5E,GAAA,CACA,MAAAzuC,EAAAyuC,EAAA/uG,OACA+uG,IAAA1uG,KAAAN,GAAAid,OAAAjd,KACA,GAAAugE,EAAA,GACA,gBAAAo8C,KAAA3N,EAAAhtG,MAAA,EAAAu+D,EAAA,GAAAvqD,KAAA,aACAg5F,EAAAzuC,EAAA,EACA,SAAAA,IAAA,GACA,gBAAAo8C,KAAA3N,EAAA,SAAAA,EAAA,IACA,MACA,YAAA2N,KAAA3N,EAAA,IACA,CACA,MACA,YAAA2N,KAAA1/F,OAAA+xF,IACA,CACA,CAGA,SAAAnsE,WAAA20C,EAAAolC,EAAA5/C,GACA,OAAAwa,EAAAgE,QAAAxe,KAAA,KAAAA,EAAA4/C,EAAA38G,UAAA28G,CACA,CAGA,SAAAx3E,SAAAoyC,EAAAolC,EAAAC,GACA,GAAAA,IAAAl0G,WAAAk0G,EAAArlC,EAAAv3E,OAAA,CACA48G,EAAArlC,EAAAv3E,MACA,CACA,OAAAu3E,EAAAtpD,UAAA2uF,EAAAD,EAAA38G,OAAA48G,KAAAD,CACA,CAGA,SAAA/hG,SAAA28D,EAAAolC,EAAAxrG,GACA,UAAAA,IAAA,UACAA,EAAA,CACA,CAEA,GAAAA,EAAAwrG,EAAA38G,OAAAu3E,EAAAv3E,OAAA,CACA,YACA,MACA,OAAAu3E,EAAA73E,QAAAi9G,EAAAxrG,MAAA,CACA,CACA,CAEAkrG,gBAAA,kCAAAxrG,EAAA7N,GACA,oBAAAA,EAAA,4BAAA6N,EAAA,GACA,GAAA/D,WACAuvG,gBAAA,iCAAAxrG,EAAAk+F,EAAAC,GAEA,IAAA6N,EACA,UAAA9N,IAAA,UAAAnsE,WAAAmsE,EAAA,SACA8N,EAAA,cACA9N,IAAA/zC,QAAA,WACA,MACA6hD,EAAA,SACA,CAEA,IAAApzG,EACA,GAAA07B,SAAAt0B,EAAA,cAEApH,EAAA,OAAAoH,KAAAgsG,KAAAJ,MAAA1N,EAAA,SACA,MACA,MAAA1/E,EAAAzU,SAAA/J,EAAA,2BACApH,EAAA,QAAAoH,MAAAwe,KAAAwtF,KAAAJ,MAAA1N,EAAA,SACA,CAEAtlG,GAAA,0BAAAulG,IACA,OAAAvlG,CACA,GAAAqD,WACAuvG,gBAAA,uDACAA,gBAAA,uCAAAxrG,GACA,aAAAA,EAAA,4BACA,IACAwrG,gBAAA,gDACAA,gBAAA,iCAAAxrG,GACA,qBAAAA,EAAA,+BACA,IACAwrG,gBAAA,0DACAA,gBAAA,sDACAA,gBAAA,gDACAA,gBAAA,+DAAAvvG,WACAuvG,gBAAA,iCAAAzmG,GACA,2BAAAA,CACA,GAAA9I,WACAuvG,gBAAA,yEAEA59G,EAAAC,QAAA2rE,EAAAikB,C,iBCtFA,IAAAwuB,EAAA17G,OAAAmG,MAAA,SAAAoF,GACA,IAAApF,EAAA,GACA,QAAAhG,KAAAoL,EAAApF,EAAA5H,KAAA4B,GACA,OAAAgG,CACA,EAGA9I,EAAAC,QAAA2N,OACA,IAAAnB,EAAA1M,EAAA,MACA,IAAAgN,EAAAhN,EAAA,MACAA,EAAA,KAAAA,CAAA6N,OAAAnB,GACA,CAEA,IAAA3D,EAAAu1G,EAAAtxG,EAAAnK,WACA,QAAAukC,EAAA,EAAAA,EAAAr+B,EAAAvH,OAAA4lC,IAAA,CACA,IAAA51B,EAAAzI,EAAAq+B,GACA,IAAAv5B,OAAAhL,UAAA2O,GAAA3D,OAAAhL,UAAA2O,GAAAxE,EAAAnK,UAAA2O,EACA,CACA,CACA,SAAA3D,OAAAnL,GACA,KAAAkD,gBAAAiI,QAAA,WAAAA,OAAAnL,GACAgK,EAAA1J,KAAA4C,KAAAlD,GACAsK,EAAAhK,KAAA4C,KAAAlD,GACAkD,KAAA24G,cAAA,KACA,GAAA77G,EAAA,CACA,GAAAA,EAAAuhF,WAAA,MAAAr+E,KAAAq+E,SAAA,MACA,GAAAvhF,EAAAwlD,WAAA,MAAAtiD,KAAAsiD,SAAA,MACA,GAAAxlD,EAAA67G,gBAAA,OACA34G,KAAA24G,cAAA,MACA34G,KAAAqf,KAAA,MAAAu5F,MACA,CACA,CACA,CACA57G,OAAA2B,eAAAsJ,OAAAhL,UAAA,yBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAu5B,aACA,IAEA36G,OAAA2B,eAAAsJ,OAAAhL,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,gBAAAp+E,KAAAo+E,eAAAy6B,WACA,IAEA77G,OAAA2B,eAAAsJ,OAAAhL,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAxiF,MACA,IAIA,SAAAg9G,QAEA,GAAA54G,KAAAo+E,eAAAziD,MAAA,OAIA9gC,QAAAuuB,SAAA0vF,QAAA94G,KACA,CACA,SAAA84G,QAAA/kC,GACAA,EAAA7zD,KACA,CACAljB,OAAA2B,eAAAsJ,OAAAhL,UAAA,aAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,GAAA/W,KAAAs+E,iBAAAh6E,WAAAtE,KAAAo+E,iBAAA95E,UAAA,CACA,YACA,CACA,OAAAtE,KAAAs+E,eAAAzqC,WAAA7zC,KAAAo+E,eAAAvqC,SACA,EACAr4C,IAAA,SAAAA,IAAAoD,GAGA,GAAAoB,KAAAs+E,iBAAAh6E,WAAAtE,KAAAo+E,iBAAA95E,UAAA,CACA,MACA,CAIAtE,KAAAs+E,eAAAzqC,UAAAj1C,EACAoB,KAAAo+E,eAAAvqC,UAAAj1C,CACA,G,iBCjGAvE,EAAAC,QAAAs0H,YACA,IAAAlD,EAAAtxH,EAAA,MACAA,EAAA,KAAAA,CAAAw0H,YAAAlD,GACA,SAAAkD,YAAA9xH,GACA,KAAAkD,gBAAA4uH,aAAA,WAAAA,YAAA9xH,GACA4uH,EAAAtuH,KAAA4C,KAAAlD,EACA,CACA8xH,YAAA3xH,UAAAwhF,WAAA,SAAAl3E,EAAAC,EAAAC,GACAA,EAAA,KAAAF,EACA,C,iBCbAlN,EAAAC,QAAAwM,SAGA,IAAAmB,EAGAnB,SAAAiyG,4BAGA,IAAAC,EAAA5+G,EAAA,mBACA,IAAA6+G,EAAA,SAAAA,gBAAA/lG,EAAA+X,GACA,OAAA/X,EAAAikD,UAAAlsC,GAAArvB,MACA,EAIA,IAAAs9G,EAAA9+G,EAAA,MAGA,IAAAqO,EAAArO,EAAA,aACA,IAAA++G,UAAA/uD,SAAA,YAAAA,cAAAwiD,SAAA,YAAAA,cAAA74B,OAAA,YAAAA,KAAA,IAAA9b,YAAA,aACA,SAAAmhD,oBAAA7xG,GACA,OAAAkB,EAAAwW,KAAA1X,EACA,CACA,SAAA8xG,cAAA9wG,GACA,OAAAE,EAAA24B,SAAA74B,iBAAA4wG,CACA,CAGA,IAAAG,EAAAl/G,EAAA,MACA,IAAAojC,EACA,GAAA87E,KAAAC,SAAA,CACA/7E,EAAA87E,EAAAC,SAAA,SACA,MACA/7E,EAAA,SAAAA,QAAA,CACA,CAGA,IAAAg8E,EAAAp/G,EAAA,MACA,IAAAq/G,EAAAr/G,EAAA,MACA,IAAAs/G,EAAAt/G,EAAA,MACAu/G,EAAAD,EAAAC,iBACA,IAAAC,EAAAx/G,EAAA,QACAy/G,EAAAD,EAAAC,qBACAC,EAAAF,EAAAE,0BACAC,EAAAH,EAAAG,2BACAC,EAAAJ,EAAAI,mCAGA,IAAAhF,EACA,IAAAiF,EACA,IAAAh7F,EACA7kB,EAAA,KAAAA,CAAA0M,SAAAoyG,GACA,IAAAgB,EAAAT,EAAAS,eACA,IAAAC,EAAA,6CACA,SAAAC,gBAAAlnG,EAAAmnG,EAAA7/G,GAGA,UAAA0Y,EAAAknG,kBAAA,kBAAAlnG,EAAAknG,gBAAAC,EAAA7/G,GAMA,IAAA0Y,EAAAonG,UAAApnG,EAAAonG,QAAAD,GAAAnnG,EAAA+M,GAAAo6F,EAAA7/G,QAAA,GAAAkD,MAAAwzB,QAAAhe,EAAAonG,QAAAD,IAAAnnG,EAAAonG,QAAAD,GAAAp+F,QAAAzhB,QAAA0Y,EAAAonG,QAAAD,GAAA,CAAA7/G,EAAA0Y,EAAAonG,QAAAD,GACA,CACA,SAAAtB,cAAAj8G,EAAA6W,EAAA4mG,GACAtyG,KAAA7N,EAAA,MACA0C,KAAA,GAOA,UAAAy9G,IAAA,UAAAA,EAAA5mG,aAAA1L,EAIAjI,KAAAgH,aAAAlK,EAAAkK,WACA,GAAAuzG,EAAAv6G,KAAAgH,WAAAhH,KAAAgH,cAAAlK,EAAA09G,mBAIAx6G,KAAA23G,cAAAgC,EAAA35G,KAAAlD,EAAA,wBAAAy9G,GAKAv6G,KAAAu1D,OAAA,IAAAikD,EACAx5G,KAAApE,OAAA,EACAoE,KAAAy6G,MAAA,KACAz6G,KAAA06G,WAAA,EACA16G,KAAA26G,QAAA,KACA36G,KAAA27B,MAAA,MACA37B,KAAA46G,WAAA,MACA56G,KAAA66G,QAAA,MAMA76G,KAAAknG,KAAA,KAIAlnG,KAAA86G,aAAA,MACA96G,KAAA+6G,gBAAA,MACA/6G,KAAAg7G,kBAAA,MACAh7G,KAAAi7G,gBAAA,MACAj7G,KAAAk7G,OAAA,KAGAl7G,KAAAm7G,UAAAr+G,EAAAq+G,YAAA,MAGAn7G,KAAAo7G,cAAAt+G,EAAAs+G,YAGAp7G,KAAA6zC,UAAA,MAKA7zC,KAAAq7G,gBAAAv+G,EAAAu+G,iBAAA,OAGAr7G,KAAAs7G,WAAA,EAGAt7G,KAAAu7G,YAAA,MACAv7G,KAAA2yC,QAAA,KACA3yC,KAAAwH,SAAA,KACA,GAAA1K,EAAA0K,SAAA,CACA,IAAAwtG,IAAA56G,EAAA,QACA4F,KAAA2yC,QAAA,IAAAqiE,EAAAl4G,EAAA0K,UACAxH,KAAAwH,SAAA1K,EAAA0K,QACA,CACA,CACA,SAAAV,SAAAhK,GACAmL,KAAA7N,EAAA,MACA,KAAA4F,gBAAA8G,UAAA,WAAAA,SAAAhK,GAIA,IAAAy9G,EAAAv6G,gBAAAiI,EACAjI,KAAAs+E,eAAA,IAAAy6B,cAAAj8G,EAAAkD,KAAAu6G,GAGAv6G,KAAAq+E,SAAA,KACA,GAAAvhF,EAAA,CACA,UAAAA,EAAAq/D,OAAA,WAAAn8D,KAAAiH,MAAAnK,EAAAq/D,KACA,UAAAr/D,EAAAuuB,UAAA,WAAArrB,KAAAw7G,SAAA1+G,EAAAuuB,OACA,CACA6tF,EAAA97G,KAAA4C,KACA,CACAhD,OAAA2B,eAAAmI,SAAA7J,UAAA,aAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,GAAA/W,KAAAs+E,iBAAAh6E,UAAA,CACA,YACA,CACA,OAAAtE,KAAAs+E,eAAAzqC,SACA,EACAr4C,IAAA,SAAAA,IAAAoD,GAGA,IAAAoB,KAAAs+E,eAAA,CACA,MACA,CAIAt+E,KAAAs+E,eAAAzqC,UAAAj1C,CACA,IAEAkI,SAAA7J,UAAAouB,QAAAouF,EAAApuF,QACAvkB,SAAA7J,UAAAw+G,WAAAhC,EAAAiC,UACA50G,SAAA7J,UAAAu+G,SAAA,SAAA14G,EAAA2E,GACAA,EAAA3E,EACA,EAMAgE,SAAA7J,UAAA1B,KAAA,SAAAgM,EAAAC,GACA,IAAAuiB,EAAA/pB,KAAAs+E,eACA,IAAAq9B,EACA,IAAA5xF,EAAA/iB,WAAA,CACA,UAAAO,IAAA,UACAC,KAAAuiB,EAAAsxF,gBACA,GAAA7zG,IAAAuiB,EAAAviB,SAAA,CACAD,EAAAkB,EAAAwW,KAAA1X,EAAAC,GACAA,EAAA,EACA,CACAm0G,EAAA,IACA,CACA,MACAA,EAAA,IACA,CACA,OAAAC,iBAAA57G,KAAAuH,EAAAC,EAAA,MAAAm0G,EACA,EAGA70G,SAAA7J,UAAAgf,QAAA,SAAA1U,GACA,OAAAq0G,iBAAA57G,KAAAuH,EAAA,gBACA,EACA,SAAAq0G,iBAAAjoG,EAAApM,EAAAC,EAAAq0G,EAAAF,GACAn+E,EAAA,mBAAAj2B,GACA,IAAAwiB,EAAApW,EAAA2qE,eACA,GAAA/2E,IAAA,MACAwiB,EAAA8wF,QAAA,MACAiB,WAAAnoG,EAAAoW,EACA,MACA,IAAAgyF,EACA,IAAAJ,EAAAI,EAAAC,aAAAjyF,EAAAxiB,GACA,GAAAw0G,EAAA,CACA7B,EAAAvmG,EAAAooG,EACA,SAAAhyF,EAAA/iB,YAAAO,KAAA3L,OAAA,GACA,UAAA2L,IAAA,WAAAwiB,EAAA/iB,YAAAhK,OAAAo0G,eAAA7pG,KAAAkB,EAAAxL,UAAA,CACAsK,EAAA6xG,oBAAA7xG,EACA,CACA,GAAAs0G,EAAA,CACA,GAAA9xF,EAAA6wF,WAAAV,EAAAvmG,EAAA,IAAAqmG,QAAAiC,SAAAtoG,EAAAoW,EAAAxiB,EAAA,KACA,SAAAwiB,EAAA4R,MAAA,CACAu+E,EAAAvmG,EAAA,IAAAmmG,EACA,SAAA/vF,EAAA8pB,UAAA,CACA,YACA,MACA9pB,EAAA8wF,QAAA,MACA,GAAA9wF,EAAA4oB,UAAAnrC,EAAA,CACAD,EAAAwiB,EAAA4oB,QAAAl2C,MAAA8K,GACA,GAAAwiB,EAAA/iB,YAAAO,EAAA3L,SAAA,EAAAqgH,SAAAtoG,EAAAoW,EAAAxiB,EAAA,YAAA20G,cAAAvoG,EAAAoW,EACA,MACAkyF,SAAAtoG,EAAAoW,EAAAxiB,EAAA,MACA,CACA,CACA,UAAAs0G,EAAA,CACA9xF,EAAA8wF,QAAA,MACAqB,cAAAvoG,EAAAoW,EACA,CACA,CAKA,OAAAA,EAAA4R,QAAA5R,EAAAnuB,OAAAmuB,EAAA4tF,eAAA5tF,EAAAnuB,SAAA,EACA,CACA,SAAAqgH,SAAAtoG,EAAAoW,EAAAxiB,EAAAs0G,GACA,GAAA9xF,EAAA4wF,SAAA5wF,EAAAnuB,SAAA,IAAAmuB,EAAAm9E,KAAA,CACAn9E,EAAAuxF,WAAA,EACA3nG,EAAAL,KAAA,OAAA/L,EACA,MAEAwiB,EAAAnuB,QAAAmuB,EAAA/iB,WAAA,EAAAO,EAAA3L,OACA,GAAAigH,EAAA9xF,EAAAwrC,OAAAt5C,QAAA1U,QAAAwiB,EAAAwrC,OAAAh6D,KAAAgM,GACA,GAAAwiB,EAAA+wF,aAAAqB,aAAAxoG,EACA,CACAuoG,cAAAvoG,EAAAoW,EACA,CACA,SAAAiyF,aAAAjyF,EAAAxiB,GACA,IAAAw0G,EACA,IAAA1C,cAAA9xG,eAAA,UAAAA,IAAAjD,YAAAylB,EAAA/iB,WAAA,CACA+0G,EAAA,IAAAlC,EAAA,yCAAAtyG,EACA,CACA,OAAAw0G,CACA,CACAj1G,SAAA7J,UAAAm/G,SAAA,WACA,OAAAp8G,KAAAs+E,eAAAq8B,UAAA,KACA,EAGA7zG,SAAA7J,UAAAo/G,YAAA,SAAAxH,GACA,IAAAG,IAAA56G,EAAA,QACA,IAAAu4C,EAAA,IAAAqiE,EAAAH,GACA70G,KAAAs+E,eAAA3rC,UAEA3yC,KAAAs+E,eAAA92E,SAAAxH,KAAAs+E,eAAA3rC,QAAAnrC,SAGA,IAAAwvC,EAAAh3C,KAAAs+E,eAAA/oB,OAAA/1C,KACA,IAAA88F,EAAA,GACA,MAAAtlE,IAAA,MACAslE,GAAA3pE,EAAAl2C,MAAAu6C,EAAAhiC,MACAgiC,IAAA1pC,IACA,CACAtN,KAAAs+E,eAAA/oB,OAAAxV,QACA,GAAAu8D,IAAA,GAAAt8G,KAAAs+E,eAAA/oB,OAAAh6D,KAAA+gH,GACAt8G,KAAAs+E,eAAA1iF,OAAA0gH,EAAA1gH,OACA,OAAAoE,IACA,EAGA,IAAAu8G,EAAA,WACA,SAAAC,wBAAA3qE,GACA,GAAAA,GAAA0qE,EAAA,CAEA1qE,EAAA0qE,CACA,MAGA1qE,IACAA,OAAA,EACAA,OAAA,EACAA,OAAA,EACAA,OAAA,EACAA,OAAA,GACAA,GACA,CACA,OAAAA,CACA,CAIA,SAAA4qE,cAAA5qE,EAAA9nB,GACA,GAAA8nB,GAAA,GAAA9nB,EAAAnuB,SAAA,GAAAmuB,EAAA4R,MAAA,SACA,GAAA5R,EAAA/iB,WAAA,SACA,GAAA6qC,MAAA,CAEA,GAAA9nB,EAAA4wF,SAAA5wF,EAAAnuB,OAAA,OAAAmuB,EAAAwrC,OAAA/1C,KAAAxK,KAAApZ,YAAA,OAAAmuB,EAAAnuB,MACA,CAEA,GAAAi2C,EAAA9nB,EAAA4tF,cAAA5tF,EAAA4tF,cAAA6E,wBAAA3qE,GACA,GAAAA,GAAA9nB,EAAAnuB,OAAA,OAAAi2C,EAEA,IAAA9nB,EAAA4R,MAAA,CACA5R,EAAA+wF,aAAA,KACA,QACA,CACA,OAAA/wF,EAAAnuB,MACA,CAGAkL,SAAA7J,UAAAk/D,KAAA,SAAAtqB,GACArU,EAAA,OAAAqU,GACAA,EAAA7E,SAAA6E,EAAA,IACA,IAAA9nB,EAAA/pB,KAAAs+E,eACA,IAAAo+B,EAAA7qE,EACA,GAAAA,IAAA,EAAA9nB,EAAAgxF,gBAAA,MAKA,GAAAlpE,IAAA,GAAA9nB,EAAA+wF,gBAAA/wF,EAAA4tF,gBAAA,EAAA5tF,EAAAnuB,QAAAmuB,EAAA4tF,cAAA5tF,EAAAnuB,OAAA,IAAAmuB,EAAA4R,OAAA,CACA6B,EAAA,qBAAAzT,EAAAnuB,OAAAmuB,EAAA4R,OACA,GAAA5R,EAAAnuB,SAAA,GAAAmuB,EAAA4R,MAAAghF,YAAA38G,WAAAm8G,aAAAn8G,MACA,WACA,CACA6xC,EAAA4qE,cAAA5qE,EAAA9nB,GAGA,GAAA8nB,IAAA,GAAA9nB,EAAA4R,MAAA,CACA,GAAA5R,EAAAnuB,SAAA,EAAA+gH,YAAA38G,MACA,WACA,CAyBA,IAAA48G,EAAA7yF,EAAA+wF,aACAt9E,EAAA,gBAAAo/E,GAGA,GAAA7yF,EAAAnuB,SAAA,GAAAmuB,EAAAnuB,OAAAi2C,EAAA9nB,EAAA4tF,cAAA,CACAiF,EAAA,KACAp/E,EAAA,6BAAAo/E,EACA,CAIA,GAAA7yF,EAAA4R,OAAA5R,EAAA8wF,QAAA,CACA+B,EAAA,MACAp/E,EAAA,mBAAAo/E,EACA,SAAAA,EAAA,CACAp/E,EAAA,WACAzT,EAAA8wF,QAAA,KACA9wF,EAAAm9E,KAAA,KAEA,GAAAn9E,EAAAnuB,SAAA,EAAAmuB,EAAA+wF,aAAA,KAEA96G,KAAAiH,MAAA8iB,EAAA4tF,eACA5tF,EAAAm9E,KAAA,MAGA,IAAAn9E,EAAA8wF,QAAAhpE,EAAA4qE,cAAAC,EAAA3yF,EACA,CACA,IAAAi+D,EACA,GAAAn2C,EAAA,EAAAm2C,EAAA60B,SAAAhrE,EAAA9nB,QAAAi+D,EAAA,KACA,GAAAA,IAAA,MACAj+D,EAAA+wF,aAAA/wF,EAAAnuB,QAAAmuB,EAAA4tF,cACA9lE,EAAA,CACA,MACA9nB,EAAAnuB,QAAAi2C,EACA9nB,EAAAuxF,WAAA,CACA,CACA,GAAAvxF,EAAAnuB,SAAA,GAGA,IAAAmuB,EAAA4R,MAAA5R,EAAA+wF,aAAA,KAGA,GAAA4B,IAAA7qE,GAAA9nB,EAAA4R,MAAAghF,YAAA38G,KACA,CACA,GAAAgoF,IAAA,KAAAhoF,KAAAsT,KAAA,OAAA00E,GACA,OAAAA,CACA,EACA,SAAA8zB,WAAAnoG,EAAAoW,GACAyT,EAAA,cACA,GAAAzT,EAAA4R,MAAA,OACA,GAAA5R,EAAA4oB,QAAA,CACA,IAAAprC,EAAAwiB,EAAA4oB,QAAAzyB,MACA,GAAA3Y,KAAA3L,OAAA,CACAmuB,EAAAwrC,OAAAh6D,KAAAgM,GACAwiB,EAAAnuB,QAAAmuB,EAAA/iB,WAAA,EAAAO,EAAA3L,MACA,CACA,CACAmuB,EAAA4R,MAAA,KACA,GAAA5R,EAAAm9E,KAAA,CAIAiV,aAAAxoG,EACA,MAEAoW,EAAA+wF,aAAA,MACA,IAAA/wF,EAAAgxF,gBAAA,CACAhxF,EAAAgxF,gBAAA,KACA+B,cAAAnpG,EACA,CACA,CACA,CAKA,SAAAwoG,aAAAxoG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,eAAAzT,EAAA+wF,aAAA/wF,EAAAgxF,iBACAhxF,EAAA+wF,aAAA,MACA,IAAA/wF,EAAAgxF,gBAAA,CACAv9E,EAAA,eAAAzT,EAAA4wF,SACA5wF,EAAAgxF,gBAAA,KACAlgH,QAAAuuB,SAAA0zF,cAAAnpG,EACA,CACA,CACA,SAAAmpG,cAAAnpG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,gBAAAzT,EAAA8pB,UAAA9pB,EAAAnuB,OAAAmuB,EAAA4R,OACA,IAAA5R,EAAA8pB,YAAA9pB,EAAAnuB,QAAAmuB,EAAA4R,OAAA,CACAhoB,EAAAL,KAAA,YACAyW,EAAAgxF,gBAAA,KACA,CAQAhxF,EAAA+wF,cAAA/wF,EAAA4wF,UAAA5wF,EAAA4R,OAAA5R,EAAAnuB,QAAAmuB,EAAA4tF,cACAoF,KAAAppG,EACA,CAQA,SAAAuoG,cAAAvoG,EAAAoW,GACA,IAAAA,EAAAwxF,YAAA,CACAxxF,EAAAwxF,YAAA,KACA1gH,QAAAuuB,SAAA4zF,eAAArpG,EAAAoW,EACA,CACA,CACA,SAAAizF,eAAArpG,EAAAoW,GAwBA,OAAAA,EAAA8wF,UAAA9wF,EAAA4R,QAAA5R,EAAAnuB,OAAAmuB,EAAA4tF,eAAA5tF,EAAA4wF,SAAA5wF,EAAAnuB,SAAA,IACA,IAAAsgE,EAAAnyC,EAAAnuB,OACA4hC,EAAA,wBACA7pB,EAAAwoD,KAAA,GACA,GAAAD,IAAAnyC,EAAAnuB,OAEA,KACA,CACAmuB,EAAAwxF,YAAA,KACA,CAMAz0G,SAAA7J,UAAAgK,MAAA,SAAA4qC,GACAqoE,EAAAl6G,KAAA,IAAA+5G,EAAA,WACA,EACAjzG,SAAA7J,UAAAkhF,KAAA,SAAA8+B,EAAAC,GACA,IAAAxP,EAAA1tG,KACA,IAAA+pB,EAAA/pB,KAAAs+E,eACA,OAAAv0D,EAAA2wF,YACA,OACA3wF,EAAA0wF,MAAAwC,EACA,MACA,OACAlzF,EAAA0wF,MAAA,CAAA1wF,EAAA0wF,MAAAwC,GACA,MACA,QACAlzF,EAAA0wF,MAAAl/G,KAAA0hH,GACA,MAEAlzF,EAAA2wF,YAAA,EACAl9E,EAAA,wBAAAzT,EAAA2wF,WAAAwC,GACA,IAAAC,IAAAD,KAAAh9F,MAAA,QAAA+8F,IAAApiH,QAAAkzF,QAAAkvB,IAAApiH,QAAAmzF,OACA,IAAAovB,EAAAD,EAAAvE,MAAAyE,OACA,GAAAtzF,EAAA6wF,WAAA//G,QAAAuuB,SAAAg0F,QAAA1P,EAAAruF,KAAA,MAAA+9F,GACAH,EAAAh9F,GAAA,SAAAq9F,UACA,SAAAA,SAAAj/B,EAAAk/B,GACA//E,EAAA,YACA,GAAA6gD,IAAAqvB,EAAA,CACA,GAAA6P,KAAAC,aAAA,OACAD,EAAAC,WAAA,KACAC,SACA,CACA,CACA,CACA,SAAA7E,QACAp7E,EAAA,SACAy/E,EAAA/8F,KACA,CAMA,IAAAw9F,EAAAC,YAAAjQ,GACAuP,EAAAh9F,GAAA,QAAAy9F,GACA,IAAAE,EAAA,MACA,SAAAH,UACAjgF,EAAA,WAEAy/E,EAAAz/D,eAAA,QAAAqgE,SACAZ,EAAAz/D,eAAA,SAAAsgE,UACAb,EAAAz/D,eAAA,QAAAkgE,GACAT,EAAAz/D,eAAA,QAAAugE,SACAd,EAAAz/D,eAAA,SAAA8/D,UACA5P,EAAAlwD,eAAA,MAAAo7D,OACAlL,EAAAlwD,eAAA,MAAA6/D,QACA3P,EAAAlwD,eAAA,OAAAwgE,QACAJ,EAAA,KAOA,GAAA7zF,EAAAuxF,cAAA2B,EAAA7+B,gBAAA6+B,EAAA7+B,eAAA6/B,WAAAP,GACA,CACAhQ,EAAAztF,GAAA,OAAA+9F,QACA,SAAAA,OAAAz2G,GACAi2B,EAAA,UACA,IAAAwqD,EAAAi1B,EAAAxgH,MAAA8K,GACAi2B,EAAA,aAAAwqD,GACA,GAAAA,IAAA,OAKA,IAAAj+D,EAAA2wF,aAAA,GAAA3wF,EAAA0wF,QAAAwC,GAAAlzF,EAAA2wF,WAAA,GAAAp/G,QAAAyuB,EAAA0wF,MAAAwC,MAAA,KAAAW,EAAA,CACApgF,EAAA,8BAAAzT,EAAAuxF,YACAvxF,EAAAuxF,YACA,CACA5N,EAAAt6D,OACA,CACA,CAIA,SAAA2qE,QAAAhC,GACAv+E,EAAA,UAAAu+E,GACAsB,SACAJ,EAAAz/D,eAAA,QAAAugE,SACA,GAAA9E,EAAAgE,EAAA,aAAA/C,EAAA+C,EAAAlB,EACA,CAGA3B,gBAAA6C,EAAA,QAAAc,SAGA,SAAAF,UACAZ,EAAAz/D,eAAA,SAAAsgE,UACAT,QACA,CACAJ,EAAA59F,KAAA,QAAAw+F,SACA,SAAAC,WACAtgF,EAAA,YACAy/E,EAAAz/D,eAAA,QAAAqgE,SACAR,QACA,CACAJ,EAAA59F,KAAA,SAAAy+F,UACA,SAAAT,SACA7/E,EAAA,UACAkwE,EAAA2P,OAAAJ,EACA,CAGAA,EAAA3pG,KAAA,OAAAo6F,GAGA,IAAA3jF,EAAA4wF,QAAA,CACAn9E,EAAA,eACAkwE,EAAA35D,QACA,CACA,OAAAkpE,CACA,EACA,SAAAU,YAAAjQ,GACA,gBAAAwQ,4BACA,IAAAn0F,EAAA2jF,EAAApvB,eACA9gD,EAAA,cAAAzT,EAAAuxF,YACA,GAAAvxF,EAAAuxF,WAAAvxF,EAAAuxF,aACA,GAAAvxF,EAAAuxF,aAAA,GAAArC,EAAAvL,EAAA,SACA3jF,EAAA4wF,QAAA,KACAoC,KAAArP,EACA,CACA,CACA,CACA5mG,SAAA7J,UAAAogH,OAAA,SAAAJ,GACA,IAAAlzF,EAAA/pB,KAAAs+E,eACA,IAAAi/B,EAAA,CACAC,WAAA,OAIA,GAAAzzF,EAAA2wF,aAAA,SAAA16G,KAGA,GAAA+pB,EAAA2wF,aAAA,GAEA,GAAAuC,OAAAlzF,EAAA0wF,MAAA,OAAAz6G,KACA,IAAAi9G,IAAAlzF,EAAA0wF,MAGA1wF,EAAA0wF,MAAA,KACA1wF,EAAA2wF,WAAA,EACA3wF,EAAA4wF,QAAA,MACA,GAAAsC,IAAA3pG,KAAA,SAAAtT,KAAAu9G,GACA,OAAAv9G,IACA,CAIA,IAAAi9G,EAAA,CAEA,IAAAkB,EAAAp0F,EAAA0wF,MACA,IAAAv+C,EAAAnyC,EAAA2wF,WACA3wF,EAAA0wF,MAAA,KACA1wF,EAAA2wF,WAAA,EACA3wF,EAAA4wF,QAAA,MACA,QAAAh/G,EAAA,EAAAA,EAAAugE,EAAAvgE,IAAAwiH,EAAAxiH,GAAA2X,KAAA,SAAAtT,KAAA,CACAw9G,WAAA,QAEA,OAAAx9G,IACA,CAGA,IAAAqE,EAAA/I,QAAAyuB,EAAA0wF,MAAAwC,GACA,GAAA54G,KAAA,SAAArE,KACA+pB,EAAA0wF,MAAAjwF,OAAAnmB,EAAA,GACA0lB,EAAA2wF,YAAA,EACA,GAAA3wF,EAAA2wF,aAAA,EAAA3wF,EAAA0wF,MAAA1wF,EAAA0wF,MAAA,GACAwC,EAAA3pG,KAAA,SAAAtT,KAAAu9G,GACA,OAAAv9G,IACA,EAIA8G,SAAA7J,UAAAgjB,GAAA,SAAAm+F,EAAA5jH,GACA,IAAA8kB,EAAA45F,EAAAj8G,UAAAgjB,GAAA7iB,KAAA4C,KAAAo+G,EAAA5jH,GACA,IAAAuvB,EAAA/pB,KAAAs+E,eACA,GAAA8/B,IAAA,QAGAr0F,EAAAixF,kBAAAh7G,KAAAq+G,cAAA,cAGA,GAAAt0F,EAAA4wF,UAAA,MAAA36G,KAAA+zC,QACA,SAAAqqE,IAAA,YACA,IAAAr0F,EAAA6wF,aAAA7wF,EAAAixF,kBAAA,CACAjxF,EAAAixF,kBAAAjxF,EAAA+wF,aAAA,KACA/wF,EAAA4wF,QAAA,MACA5wF,EAAAgxF,gBAAA,MACAv9E,EAAA,cAAAzT,EAAAnuB,OAAAmuB,EAAA8wF,SACA,GAAA9wF,EAAAnuB,OAAA,CACAugH,aAAAn8G,KACA,UAAA+pB,EAAA8wF,QAAA,CACAhgH,QAAAuuB,SAAAk1F,iBAAAt+G,KACA,CACA,CACA,CACA,OAAAsf,CACA,EACAxY,SAAA7J,UAAAshH,YAAAz3G,SAAA7J,UAAAgjB,GACAnZ,SAAA7J,UAAAugD,eAAA,SAAA4gE,EAAA5jH,GACA,IAAA8kB,EAAA45F,EAAAj8G,UAAAugD,eAAApgD,KAAA4C,KAAAo+G,EAAA5jH,GACA,GAAA4jH,IAAA,YAOAvjH,QAAAuuB,SAAAo1F,wBAAAx+G,KACA,CACA,OAAAsf,CACA,EACAxY,SAAA7J,UAAAwiB,mBAAA,SAAA2+F,GACA,IAAA9+F,EAAA45F,EAAAj8G,UAAAwiB,mBAAA/iB,MAAAsD,KAAArD,WACA,GAAAyhH,IAAA,YAAAA,IAAA95G,UAAA,CAOAzJ,QAAAuuB,SAAAo1F,wBAAAx+G,KACA,CACA,OAAAsf,CACA,EACA,SAAAk/F,wBAAAzqC,GACA,IAAAhqD,EAAAgqD,EAAAuK,eACAv0D,EAAAixF,kBAAAjnC,EAAAsqC,cAAA,cACA,GAAAt0F,EAAAkxF,kBAAAlxF,EAAAmxF,OAAA,CAGAnxF,EAAA4wF,QAAA,IAGA,SAAA5mC,EAAAsqC,cAAA,WACAtqC,EAAAhgC,QACA,CACA,CACA,SAAAuqE,iBAAAvqC,GACAv2C,EAAA,4BACAu2C,EAAA5X,KAAA,EACA,CAIAr1D,SAAA7J,UAAA82C,OAAA,WACA,IAAAhqB,EAAA/pB,KAAAs+E,eACA,IAAAv0D,EAAA4wF,QAAA,CACAn9E,EAAA,UAIAzT,EAAA4wF,SAAA5wF,EAAAixF,kBACAjnE,OAAA/zC,KAAA+pB,EACA,CACAA,EAAAmxF,OAAA,MACA,OAAAl7G,IACA,EACA,SAAA+zC,OAAApgC,EAAAoW,GACA,IAAAA,EAAAkxF,gBAAA,CACAlxF,EAAAkxF,gBAAA,KACApgH,QAAAuuB,SAAAq1F,QAAA9qG,EAAAoW,EACA,CACA,CACA,SAAA00F,QAAA9qG,EAAAoW,GACAyT,EAAA,SAAAzT,EAAA8wF,SACA,IAAA9wF,EAAA8wF,QAAA,CACAlnG,EAAAwoD,KAAA,EACA,CACApyC,EAAAkxF,gBAAA,MACAtnG,EAAAL,KAAA,UACAypG,KAAAppG,GACA,GAAAoW,EAAA4wF,UAAA5wF,EAAA8wF,QAAAlnG,EAAAwoD,KAAA,EACA,CACAr1D,SAAA7J,UAAAm2C,MAAA,WACA5V,EAAA,wBAAAx9B,KAAAs+E,eAAAq8B,SACA,GAAA36G,KAAAs+E,eAAAq8B,UAAA,OACAn9E,EAAA,SACAx9B,KAAAs+E,eAAAq8B,QAAA,MACA36G,KAAAsT,KAAA,QACA,CACAtT,KAAAs+E,eAAA48B,OAAA,KACA,OAAAl7G,IACA,EACA,SAAA+8G,KAAAppG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,OAAAzT,EAAA4wF,SACA,MAAA5wF,EAAA4wF,SAAAhnG,EAAAwoD,SAAA,MACA,CAKAr1D,SAAA7J,UAAAilE,KAAA,SAAAvuD,GACA,IAAA+qG,EAAA1+G,KACA,IAAA+pB,EAAA/pB,KAAAs+E,eACA,IAAA48B,EAAA,MACAvnG,EAAAsM,GAAA,kBACAud,EAAA,eACA,GAAAzT,EAAA4oB,UAAA5oB,EAAA4R,MAAA,CACA,IAAAp0B,EAAAwiB,EAAA4oB,QAAAzyB,MACA,GAAA3Y,KAAA3L,OAAA8iH,EAAAnjH,KAAAgM,EACA,CACAm3G,EAAAnjH,KAAA,KACA,IACAoY,EAAAsM,GAAA,iBAAA1Y,GACAi2B,EAAA,gBACA,GAAAzT,EAAA4oB,QAAAprC,EAAAwiB,EAAA4oB,QAAAl2C,MAAA8K,GAGA,GAAAwiB,EAAA/iB,aAAAO,IAAA,MAAAA,IAAAjD,WAAA,gBAAAylB,EAAA/iB,cAAAO,MAAA3L,QAAA,OACA,IAAAosF,EAAA02B,EAAAnjH,KAAAgM,GACA,IAAAygF,EAAA,CACAkzB,EAAA,KACAvnG,EAAAy/B,OACA,CACA,IAIA,QAAAz3C,KAAAgY,EAAA,CACA,GAAA3T,KAAArE,KAAA2I,kBAAAqP,EAAAhY,KAAA,YACAqE,KAAArE,GAAA,SAAAgjH,WAAA/yG,GACA,gBAAAgzG,2BACA,OAAAjrG,EAAA/H,GAAAlP,MAAAiX,EAAAhX,UACA,CACA,CAJA,CAIAhB,EACA,CACA,CAGA,QAAAk2C,EAAA,EAAAA,EAAAsoE,EAAAv+G,OAAAi2C,IAAA,CACAl+B,EAAAsM,GAAAk6F,EAAAtoE,GAAA7xC,KAAAsT,KAAAnF,KAAAnO,KAAAm6G,EAAAtoE,IACA,CAIA7xC,KAAAiH,MAAA,SAAA4qC,GACArU,EAAA,gBAAAqU,GACA,GAAAqpE,EAAA,CACAA,EAAA,MACAvnG,EAAAogC,QACA,CACA,EACA,OAAA/zC,IACA,EACA,UAAAmR,SAAA,YACArK,SAAA7J,UAAAkU,OAAAwvD,eAAA,WACA,GAAAs5C,IAAA31G,UAAA,CACA21G,EAAA7/G,EAAA,KACA,CACA,OAAA6/G,EAAAj6G,KACA,CACA,CACAhD,OAAA2B,eAAAmI,SAAA7J,UAAA,yBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,eAAAq5B,aACA,IAEA36G,OAAA2B,eAAAmI,SAAA7J,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,gBAAAt+E,KAAAs+E,eAAA/oB,MACA,IAEAv4D,OAAA2B,eAAAmI,SAAA7J,UAAA,mBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,eAAAq8B,OACA,EACAn/G,IAAA,SAAAA,IAAAuuB,GACA,GAAA/pB,KAAAs+E,eAAA,CACAt+E,KAAAs+E,eAAAq8B,QAAA5wF,CACA,CACA,IAIAjjB,SAAA+3G,UAAAhC,SACA7/G,OAAA2B,eAAAmI,SAAA7J,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAs+E,eAAA1iF,MACA,IAOA,SAAAihH,SAAAhrE,EAAA9nB,GAEA,GAAAA,EAAAnuB,SAAA,cACA,IAAAosF,EACA,GAAAj+D,EAAA/iB,WAAAghF,EAAAj+D,EAAAwrC,OAAA1gB,aAAA,IAAAhD,MAAA9nB,EAAAnuB,OAAA,CAEA,GAAAmuB,EAAA4oB,QAAAq1C,EAAAj+D,EAAAwrC,OAAA5jD,KAAA,YAAAoY,EAAAwrC,OAAA35D,SAAA,EAAAosF,EAAAj+D,EAAAwrC,OAAA9zC,aAAAumE,EAAAj+D,EAAAwrC,OAAArxD,OAAA6lB,EAAAnuB,QACAmuB,EAAAwrC,OAAAxV,OACA,MAEAioC,EAAAj+D,EAAAwrC,OAAAupD,QAAAjtE,EAAA9nB,EAAA4oB,QACA,CACA,OAAAq1C,CACA,CACA,SAAA20B,YAAAhpG,GACA,IAAAoW,EAAApW,EAAA2qE,eACA9gD,EAAA,cAAAzT,EAAA6wF,YACA,IAAA7wF,EAAA6wF,WAAA,CACA7wF,EAAA4R,MAAA,KACA9gC,QAAAuuB,SAAA21F,cAAAh1F,EAAApW,EACA,CACA,CACA,SAAAorG,cAAAh1F,EAAApW,GACA6pB,EAAA,gBAAAzT,EAAA6wF,WAAA7wF,EAAAnuB,QAGA,IAAAmuB,EAAA6wF,YAAA7wF,EAAAnuB,SAAA,GACAmuB,EAAA6wF,WAAA,KACAjnG,EAAA0qE,SAAA,MACA1qE,EAAAL,KAAA,OACA,GAAAyW,EAAAqxF,YAAA,CAGA,IAAA4D,EAAArrG,EAAAyqE,eACA,IAAA4gC,KAAA5D,aAAA4D,EAAAC,SAAA,CACAtrG,EAAA0X,SACA,CACA,CACA,CACA,CACA,UAAAla,SAAA,YACArK,SAAAmY,KAAA,SAAAigG,EAAAh7B,GACA,GAAAjlE,IAAA3a,UAAA,CACA2a,EAAA7kB,EAAA,KACA,CACA,OAAA6kB,EAAAnY,SAAAo4G,EAAAh7B,EACA,CACA,CACA,SAAA5oF,QAAA6jH,EAAAv3E,GACA,QAAAjsC,EAAA,EAAAipE,EAAAu6C,EAAAvjH,OAAAD,EAAAipE,EAAAjpE,IAAA,CACA,GAAAwjH,EAAAxjH,KAAAisC,EAAA,OAAAjsC,CACA,CACA,QACA,C,iBCj8BAtB,EAAAC,QAAAoxH,UACA,IAAA9R,EAAAx/G,EAAA,QACA2/G,EAAAH,EAAAG,2BACA0F,EAAA7F,EAAA6F,sBACA4U,EAAAza,EAAAya,mCACAC,EAAA1a,EAAA0a,4BACA,IAAArsH,EAAA7N,EAAA,MACAA,EAAA,KAAAA,CAAAsxH,UAAAzjH,GACA,SAAAssH,eAAAxY,EAAA/mG,GACA,IAAAw/G,EAAAx0H,KAAAy0H,gBACAD,EAAAE,aAAA,MACA,IAAAjtH,EAAA+sH,EAAA/T,QACA,GAAAh5G,IAAA,MACA,OAAAzH,KAAAsT,KAAA,YAAAmsG,EACA,CACA+U,EAAAG,WAAA,KACAH,EAAA/T,QAAA,KACA,GAAAzrG,GAAA,KAEAhV,KAAAzE,KAAAyZ,GACAvN,EAAAs0G,GACA,IAAA6Y,EAAA50H,KAAAs+E,eACAs2C,EAAA/Z,QAAA,MACA,GAAA+Z,EAAA9Z,cAAA8Z,EAAAh5H,OAAAg5H,EAAAjd,cAAA,CACA33G,KAAAiH,MAAA2tH,EAAAjd,cACA,CACA,CACA,SAAA+T,UAAA5uH,GACA,KAAAkD,gBAAA0rH,WAAA,WAAAA,UAAA5uH,GACAmL,EAAA7K,KAAA4C,KAAAlD,GACAkD,KAAAy0H,gBAAA,CACAF,8BAAApmH,KAAAnO,MACA60H,cAAA,MACAH,aAAA,MACAjU,QAAA,KACAkU,WAAA,KACAG,cAAA,MAIA90H,KAAAs+E,eAAAw8B,aAAA,KAKA96G,KAAAs+E,eAAA4oB,KAAA,MACA,GAAApqG,EAAA,CACA,UAAAA,EAAA0hF,YAAA,WAAAx+E,KAAAy+E,WAAA3hF,EAAA0hF,UACA,UAAA1hF,EAAAi4H,QAAA,WAAA/0H,KAAAg1H,OAAAl4H,EAAAi4H,KACA,CAGA/0H,KAAAigB,GAAA,YAAA4iG,UACA,CACA,SAAAA,YACA,IAAAnE,EAAA1+G,KACA,UAAAA,KAAAg1H,SAAA,aAAAh1H,KAAAs+E,eAAAzqC,UAAA,CACA7zC,KAAAg1H,QAAA,SAAAjZ,EAAA/mG,GACA+hC,KAAA2nE,EAAA3C,EAAA/mG,EACA,GACA,MACA+hC,KAAA/2C,KAAA,UACA,CACA,CACA0rH,UAAAzuH,UAAA1B,KAAA,SAAAgM,EAAAC,GACAxH,KAAAy0H,gBAAAI,cAAA,MACA,OAAA5sH,EAAAhL,UAAA1B,KAAA6B,KAAA4C,KAAAuH,EAAAC,EACA,EAYAkkH,UAAAzuH,UAAAwhF,WAAA,SAAAl3E,EAAAC,EAAAC,GACAA,EAAA,IAAAsyG,EAAA,gBACA,EACA2R,UAAAzuH,UAAAqK,OAAA,SAAAC,EAAAC,EAAAC,GACA,IAAA+sH,EAAAx0H,KAAAy0H,gBACAD,EAAA/T,QAAAh5G,EACA+sH,EAAAG,WAAAptH,EACAitH,EAAAM,cAAAttH,EACA,IAAAgtH,EAAAE,aAAA,CACA,IAAAE,EAAA50H,KAAAs+E,eACA,GAAAk2C,EAAAK,eAAAD,EAAA9Z,cAAA8Z,EAAAh5H,OAAAg5H,EAAAjd,cAAA33G,KAAAiH,MAAA2tH,EAAAjd,cACA,CACA,EAKA+T,UAAAzuH,UAAAgK,MAAA,SAAA4qC,GACA,IAAA2iF,EAAAx0H,KAAAy0H,gBACA,GAAAD,EAAAG,aAAA,OAAAH,EAAAE,aAAA,CACAF,EAAAE,aAAA,KACA10H,KAAAy+E,WAAA+1C,EAAAG,WAAAH,EAAAM,cAAAN,EAAAD,eACA,MAGAC,EAAAK,cAAA,IACA,CACA,EACAnJ,UAAAzuH,UAAAu+G,SAAA,SAAA14G,EAAA2E,GACAQ,EAAAhL,UAAAu+G,SAAAp+G,KAAA4C,KAAA8C,GAAA,SAAAmyH,GACAxtH,EAAAwtH,EACA,GACA,EACA,SAAAl+E,KAAApjC,EAAAooG,EAAA/mG,GACA,GAAA+mG,EAAA,OAAApoG,EAAAL,KAAA,QAAAyoG,GACA,GAAA/mG,GAAA,KAEArB,EAAApY,KAAAyZ,GAKA,GAAArB,EAAAyqE,eAAAxiF,OAAA,UAAA04H,EACA,GAAA3gH,EAAA8gH,gBAAAC,aAAA,UAAAL,EACA,OAAA1gH,EAAApY,KAAA,KACA,C,iBClKAlB,EAAAC,QAAA8M,SAGA,SAAAg4G,SAAA73G,EAAAC,EAAAC,GACAzH,KAAAuH,QACAvH,KAAAwH,WACAxH,KAAAD,SAAA0H,EACAzH,KAAAsN,KAAA,IACA,CAIA,SAAA+xG,cAAAt1F,GACA,IAAA20F,EAAA1+G,KACAA,KAAAsN,KAAA,KACAtN,KAAAumD,MAAA,KACAvmD,KAAAoxD,OAAA,WACAkuD,eAAAZ,EAAA30F,EACA,CACA,CAIA,IAAA9hB,EAGAb,SAAAm4G,4BAGA,IAAAC,EAAA,CACA9nE,UAAAt9C,EAAA,OAKA,IAAA8+G,EAAA9+G,EAAA,MAGA,IAAAqO,EAAArO,EAAA,aACA,IAAA++G,UAAA/uD,SAAA,YAAAA,cAAAwiD,SAAA,YAAAA,cAAA74B,OAAA,YAAAA,KAAA,IAAA9b,YAAA,aACA,SAAAmhD,oBAAA7xG,GACA,OAAAkB,EAAAwW,KAAA1X,EACA,CACA,SAAA8xG,cAAA9wG,GACA,OAAAE,EAAA24B,SAAA74B,iBAAA4wG,CACA,CACA,IAAAM,EAAAr/G,EAAA,MACA,IAAAs/G,EAAAt/G,EAAA,MACAu/G,EAAAD,EAAAC,iBACA,IAAAC,EAAAx/G,EAAA,QACAy/G,EAAAD,EAAAC,qBACAE,EAAAH,EAAAG,2BACA0F,EAAA7F,EAAA6F,sBACAC,EAAA9F,EAAA8F,uBACAC,EAAA/F,EAAA+F,qBACAC,EAAAhG,EAAAgG,uBACAC,EAAAjG,EAAAiG,2BACAC,EAAAlG,EAAAkG,qBACA,IAAA5F,EAAAT,EAAAS,eACA9/G,EAAA,KAAAA,CAAAgN,SAAA8xG,GACA,SAAA6G,MAAA,CACA,SAAAR,cAAAziH,EAAA6W,EAAA4mG,GACAtyG,KAAA7N,EAAA,MACA0C,KAAA,GAOA,UAAAy9G,IAAA,UAAAA,EAAA5mG,aAAA1L,EAIAjI,KAAAgH,aAAAlK,EAAAkK,WACA,GAAAuzG,EAAAv6G,KAAAgH,WAAAhH,KAAAgH,cAAAlK,EAAAkjH,mBAKAhgH,KAAA23G,cAAAgC,EAAA35G,KAAAlD,EAAA,wBAAAy9G,GAGAv6G,KAAAigH,YAAA,MAGAjgH,KAAAi+G,UAAA,MAEAj+G,KAAAkgH,OAAA,MAEAlgH,KAAA27B,MAAA,MAEA37B,KAAAi/G,SAAA,MAGAj/G,KAAA6zC,UAAA,MAKA,IAAAssE,EAAArjH,EAAAsjH,gBAAA,MACApgH,KAAAogH,eAAAD,EAKAngH,KAAAq7G,gBAAAv+G,EAAAu+G,iBAAA,OAKAr7G,KAAApE,OAAA,EAGAoE,KAAAqgH,QAAA,MAGArgH,KAAAsgH,OAAA,EAMAtgH,KAAAknG,KAAA,KAKAlnG,KAAAugH,iBAAA,MAGAvgH,KAAAwgH,QAAA,SAAAzE,GACAyE,QAAA7sG,EAAAooG,EACA,EAGA/7G,KAAAygH,QAAA,KAGAzgH,KAAA0gH,SAAA,EACA1gH,KAAA2gH,gBAAA,KACA3gH,KAAA4gH,oBAAA,KAIA5gH,KAAA6gH,UAAA,EAIA7gH,KAAA8gH,YAAA,MAGA9gH,KAAA+gH,aAAA,MAGA/gH,KAAAm7G,UAAAr+G,EAAAq+G,YAAA,MAGAn7G,KAAAo7G,cAAAt+G,EAAAs+G,YAGAp7G,KAAAghH,qBAAA,EAIAhhH,KAAAihH,mBAAA,IAAA5B,cAAAr/G,KACA,CACAu/G,cAAAtiH,UAAA47G,UAAA,SAAAA,YACA,IAAA34E,EAAAlgC,KAAA2gH,gBACA,IAAAp4B,EAAA,GACA,MAAAroD,EAAA,CACAqoD,EAAAhtF,KAAA2kC,GACAA,IAAA5yB,IACA,CACA,OAAAi7E,CACA,GACA,WACA,IACAvrF,OAAA2B,eAAA4gH,cAAAtiH,UAAA,UACA8Z,IAAAyoG,EAAA9nE,WAAA,SAAAwpE,4BACA,OAAAlhH,KAAA64G,WACA,+FAEA,OAAA/hE,GAAA,CACA,EARA,GAYA,IAAAqqE,EACA,UAAAhwG,SAAA,YAAAA,OAAAiwG,oBAAAtjH,SAAAb,UAAAkU,OAAAiwG,eAAA,YACAD,EAAArjH,SAAAb,UAAAkU,OAAAiwG,aACApkH,OAAA2B,eAAAyI,SAAA+J,OAAAiwG,YAAA,CACAxiH,MAAA,SAAAA,MAAAs1E,GACA,GAAAitC,EAAA/jH,KAAA4C,KAAAk0E,GAAA,YACA,GAAAl0E,OAAAoH,SAAA,aACA,OAAA8sE,KAAAkK,0BAAAmhC,aACA,GAEA,MACA4B,EAAA,SAAAA,gBAAAjtC,GACA,OAAAA,aAAAl0E,IACA,CACA,CACA,SAAAoH,SAAAtK,GACAmL,KAAA7N,EAAA,MAYA,IAAAmgH,EAAAv6G,gBAAAiI,EACA,IAAAsyG,IAAA4G,EAAA/jH,KAAAgK,SAAApH,MAAA,WAAAoH,SAAAtK,GACAkD,KAAAo+E,eAAA,IAAAmhC,cAAAziH,EAAAkD,KAAAu6G,GAGAv6G,KAAAsiD,SAAA,KACA,GAAAxlD,EAAA,CACA,UAAAA,EAAAL,QAAA,WAAAuD,KAAAsH,OAAAxK,EAAAL,MACA,UAAAK,EAAAukH,SAAA,WAAArhH,KAAAw3G,QAAA16G,EAAAukH,OACA,UAAAvkH,EAAAuuB,UAAA,WAAArrB,KAAAw7G,SAAA1+G,EAAAuuB,QACA,UAAAvuB,EAAAwkH,QAAA,WAAAthH,KAAA+H,OAAAjL,EAAAwkH,KACA,CACApI,EAAA97G,KAAA4C,KACA,CAGAoH,SAAAnK,UAAAkhF,KAAA,WACA+7B,EAAAl6G,KAAA,IAAA0/G,EACA,EACA,SAAA6B,cAAA5tG,EAAAlM,GACA,IAAAs0G,EAAA,IAAA8D,EAEA3F,EAAAvmG,EAAAooG,GACAlhH,QAAAuuB,SAAA3hB,EAAAs0G,EACA,CAKA,SAAAyF,WAAA7tG,EAAAoW,EAAAxiB,EAAAE,GACA,IAAAs0G,EACA,GAAAx0G,IAAA,MACAw0G,EAAA,IAAA6D,CACA,gBAAAr4G,IAAA,WAAAwiB,EAAA/iB,WAAA,CACA+0G,EAAA,IAAAlC,EAAA,4BAAAtyG,EACA,CACA,GAAAw0G,EAAA,CACA7B,EAAAvmG,EAAAooG,GACAlhH,QAAAuuB,SAAA3hB,EAAAs0G,GACA,YACA,CACA,WACA,CACA30G,SAAAnK,UAAAR,MAAA,SAAA8K,EAAAC,EAAAC,GACA,IAAAsiB,EAAA/pB,KAAAo+E,eACA,IAAA4J,EAAA,MACA,IAAAy5B,GAAA13F,EAAA/iB,YAAAqyG,cAAA9xG,GACA,GAAAk6G,IAAAh5G,EAAA24B,SAAA75B,GAAA,CACAA,EAAA6xG,oBAAA7xG,EACA,CACA,UAAAC,IAAA,YACAC,EAAAD,EACAA,EAAA,IACA,CACA,GAAAi6G,EAAAj6G,EAAA,kBAAAA,IAAAuiB,EAAAsxF,gBACA,UAAA5zG,IAAA,WAAAA,EAAAs4G,IACA,GAAAh2F,EAAAm2F,OAAAqB,cAAAvhH,KAAAyH,QAAA,GAAAg6G,GAAAD,WAAAxhH,KAAA+pB,EAAAxiB,EAAAE,GAAA,CACAsiB,EAAA82F,YACA74B,EAAA05B,cAAA1hH,KAAA+pB,EAAA03F,EAAAl6G,EAAAC,EAAAC,EACA,CACA,OAAAugF,CACA,EACA5gF,SAAAnK,UAAA0kH,KAAA,WACA3hH,KAAAo+E,eAAAkiC,QACA,EACAl5G,SAAAnK,UAAA2kH,OAAA,WACA,IAAA73F,EAAA/pB,KAAAo+E,eACA,GAAAr0D,EAAAu2F,OAAA,CACAv2F,EAAAu2F,SACA,IAAAv2F,EAAAs2F,UAAAt2F,EAAAu2F,SAAAv2F,EAAAw2F,kBAAAx2F,EAAA42F,gBAAAkB,YAAA7hH,KAAA+pB,EACA,CACA,EACA3iB,SAAAnK,UAAA6kH,mBAAA,SAAAA,mBAAAt6G,GAEA,UAAAA,IAAA,SAAAA,IAAA05B,cACA,gGAAA5lC,SAAAkM,EAAA,IAAA05B,gBAAA,aAAA4+E,EAAAt4G,GACAxH,KAAAo+E,eAAAi9B,gBAAA7zG,EACA,OAAAxH,IACA,EACAhD,OAAA2B,eAAAyI,SAAAnK,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,gBAAAp+E,KAAAo+E,eAAAy6B,WACA,IAEA,SAAAkJ,YAAAh4F,EAAAxiB,EAAAC,GACA,IAAAuiB,EAAA/iB,YAAA+iB,EAAAq2F,gBAAA,cAAA74G,IAAA,UACAA,EAAAkB,EAAAwW,KAAA1X,EAAAC,EACA,CACA,OAAAD,CACA,CACAvK,OAAA2B,eAAAyI,SAAAnK,UAAA,yBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAu5B,aACA,IAMA,SAAA+J,cAAA/tG,EAAAoW,EAAA03F,EAAAl6G,EAAAC,EAAAC,GACA,IAAAg6G,EAAA,CACA,IAAAO,EAAAD,YAAAh4F,EAAAxiB,EAAAC,GACA,GAAAD,IAAAy6G,EAAA,CACAP,EAAA,KACAj6G,EAAA,SACAD,EAAAy6G,CACA,CACA,CACA,IAAA9lD,EAAAnyC,EAAA/iB,WAAA,EAAAO,EAAA3L,OACAmuB,EAAAnuB,QAAAsgE,EACA,IAAA8rB,EAAAj+D,EAAAnuB,OAAAmuB,EAAA4tF,cAEA,IAAA3vB,EAAAj+D,EAAAk0F,UAAA,KACA,GAAAl0F,EAAAs2F,SAAAt2F,EAAAu2F,OAAA,CACA,IAAA2B,EAAAl4F,EAAA62F,oBACA72F,EAAA62F,oBAAA,CACAr5G,QACAC,WACAi6G,QACA1hH,SAAA0H,EACA6F,KAAA,MAEA,GAAA20G,EAAA,CACAA,EAAA30G,KAAAyc,EAAA62F,mBACA,MACA72F,EAAA42F,gBAAA52F,EAAA62F,mBACA,CACA72F,EAAAi3F,sBAAA,CACA,MACAkB,QAAAvuG,EAAAoW,EAAA,MAAAmyC,EAAA30D,EAAAC,EAAAC,EACA,CACA,OAAAugF,CACA,CACA,SAAAk6B,QAAAvuG,EAAAoW,EAAAs3F,EAAAnlD,EAAA30D,EAAAC,EAAAC,GACAsiB,EAAA22F,SAAAxkD,EACAnyC,EAAA02F,QAAAh5G,EACAsiB,EAAAs2F,QAAA,KACAt2F,EAAAm9E,KAAA,KACA,GAAAn9E,EAAA8pB,UAAA9pB,EAAAy2F,QAAA,IAAAb,EAAA,kBAAA0B,EAAA1tG,EAAA6jG,QAAAjwG,EAAAwiB,EAAAy2F,cAAA7sG,EAAArM,OAAAC,EAAAC,EAAAuiB,EAAAy2F,SACAz2F,EAAAm9E,KAAA,KACA,CACA,SAAAib,aAAAxuG,EAAAoW,EAAAm9E,EAAA6U,EAAAt0G,KACAsiB,EAAA82F,UACA,GAAA3Z,EAAA,CAGArsG,QAAAuuB,SAAA3hB,EAAAs0G,GAGAlhH,QAAAuuB,SAAAg5F,YAAAzuG,EAAAoW,GACApW,EAAAyqE,eAAA2iC,aAAA,KACA7G,EAAAvmG,EAAAooG,EACA,MAGAt0G,EAAAs0G,GACApoG,EAAAyqE,eAAA2iC,aAAA,KACA7G,EAAAvmG,EAAAooG,GAGAqG,YAAAzuG,EAAAoW,EACA,CACA,CACA,SAAAs4F,mBAAAt4F,GACAA,EAAAs2F,QAAA,MACAt2F,EAAA02F,QAAA,KACA12F,EAAAnuB,QAAAmuB,EAAA22F,SACA32F,EAAA22F,SAAA,CACA,CACA,SAAAF,QAAA7sG,EAAAooG,GACA,IAAAhyF,EAAApW,EAAAyqE,eACA,IAAA8oB,EAAAn9E,EAAAm9E,KACA,IAAAz/F,EAAAsiB,EAAA02F,QACA,UAAAh5G,IAAA,qBAAAg4G,EACA4C,mBAAAt4F,GACA,GAAAgyF,EAAAoG,aAAAxuG,EAAAoW,EAAAm9E,EAAA6U,EAAAt0G,OAAA,CAEA,IAAAw3G,EAAAqD,WAAAv4F,IAAApW,EAAAkgC,UACA,IAAAorE,IAAAl1F,EAAAu2F,SAAAv2F,EAAAw2F,kBAAAx2F,EAAA42F,gBAAA,CACAkB,YAAAluG,EAAAoW,EACA,CACA,GAAAm9E,EAAA,CACArsG,QAAAuuB,SAAAm5F,WAAA5uG,EAAAoW,EAAAk1F,EAAAx3G,EACA,MACA86G,WAAA5uG,EAAAoW,EAAAk1F,EAAAx3G,EACA,CACA,CACA,CACA,SAAA86G,WAAA5uG,EAAAoW,EAAAk1F,EAAAx3G,GACA,IAAAw3G,EAAAuD,aAAA7uG,EAAAoW,GACAA,EAAA82F,YACAp5G,IACA26G,YAAAzuG,EAAAoW,EACA,CAKA,SAAAy4F,aAAA7uG,EAAAoW,GACA,GAAAA,EAAAnuB,SAAA,GAAAmuB,EAAAk0F,UAAA,CACAl0F,EAAAk0F,UAAA,MACAtqG,EAAAL,KAAA,QACA,CACA,CAGA,SAAAuuG,YAAAluG,EAAAoW,GACAA,EAAAw2F,iBAAA,KACA,IAAAh6D,EAAAx8B,EAAA42F,gBACA,GAAAhtG,EAAA6jG,SAAAjxD,KAAAj5C,KAAA,CAEA,IAAAs3D,EAAA76C,EAAAi3F,qBACA,IAAAzrD,EAAA,IAAA73D,MAAAknE,GACA,IAAA69C,EAAA14F,EAAAk3F,mBACAwB,EAAAl8D,QACA,IAAAha,EAAA,EACA,IAAAm2E,EAAA,KACA,MAAAn8D,EAAA,CACAgP,EAAAhpB,GAAAga,EACA,IAAAA,EAAAk7D,MAAAiB,EAAA,MACAn8D,IAAAj5C,KACAi/B,GAAA,CACA,CACAgpB,EAAAmtD,aACAR,QAAAvuG,EAAAoW,EAAA,KAAAA,EAAAnuB,OAAA25D,EAAA,GAAAktD,EAAArxD,QAIArnC,EAAA82F,YACA92F,EAAA62F,oBAAA,KACA,GAAA6B,EAAAn1G,KAAA,CACAyc,EAAAk3F,mBAAAwB,EAAAn1G,KACAm1G,EAAAn1G,KAAA,IACA,MACAyc,EAAAk3F,mBAAA,IAAA5B,cAAAt1F,EACA,CACAA,EAAAi3F,qBAAA,CACA,MAEA,MAAAz6D,EAAA,CACA,IAAAh/C,EAAAg/C,EAAAh/C,MACA,IAAAC,EAAA++C,EAAA/+C,SACA,IAAAC,EAAA8+C,EAAAxmD,SACA,IAAAm8D,EAAAnyC,EAAA/iB,WAAA,EAAAO,EAAA3L,OACAsmH,QAAAvuG,EAAAoW,EAAA,MAAAmyC,EAAA30D,EAAAC,EAAAC,GACA8+C,IAAAj5C,KACAyc,EAAAi3F,uBAKA,GAAAj3F,EAAAs2F,QAAA,CACA,KACA,CACA,CACA,GAAA95D,IAAA,KAAAx8B,EAAA62F,oBAAA,IACA,CACA72F,EAAA42F,gBAAAp6D,EACAx8B,EAAAw2F,iBAAA,KACA,CACAn5G,SAAAnK,UAAAqK,OAAA,SAAAC,EAAAC,EAAAC,GACAA,EAAA,IAAAsyG,EAAA,YACA,EACA3yG,SAAAnK,UAAAu6G,QAAA,KACApwG,SAAAnK,UAAAijB,IAAA,SAAA3Y,EAAAC,EAAAC,GACA,IAAAsiB,EAAA/pB,KAAAo+E,eACA,UAAA72E,IAAA,YACAE,EAAAF,EACAA,EAAA,KACAC,EAAA,IACA,gBAAAA,IAAA,YACAC,EAAAD,EACAA,EAAA,IACA,CACA,GAAAD,IAAA,MAAAA,IAAAjD,UAAAtE,KAAAvD,MAAA8K,EAAAC,GAGA,GAAAuiB,EAAAu2F,OAAA,CACAv2F,EAAAu2F,OAAA,EACAtgH,KAAA4hH,QACA,CAGA,IAAA73F,EAAAm2F,OAAAyC,YAAA3iH,KAAA+pB,EAAAtiB,GACA,OAAAzH,IACA,EACAhD,OAAA2B,eAAAyI,SAAAnK,UAAA,kBAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,OAAA/W,KAAAo+E,eAAAxiF,MACA,IAEA,SAAA0mH,WAAAv4F,GACA,OAAAA,EAAAm2F,QAAAn2F,EAAAnuB,SAAA,GAAAmuB,EAAA42F,kBAAA,OAAA52F,EAAAk1F,WAAAl1F,EAAAs2F,OACA,CACA,SAAAuC,UAAAjvG,EAAAoW,GACApW,EAAA5L,QAAA,SAAAjF,GACAinB,EAAA82F,YACA,GAAA/9G,EAAA,CACAo3G,EAAAvmG,EAAA7Q,EACA,CACAinB,EAAA+2F,YAAA,KACAntG,EAAAL,KAAA,aACA8uG,YAAAzuG,EAAAoW,EACA,GACA,CACA,SAAA84F,UAAAlvG,EAAAoW,GACA,IAAAA,EAAA+2F,cAAA/2F,EAAAk2F,YAAA,CACA,UAAAtsG,EAAA5L,SAAA,aAAAgiB,EAAA8pB,UAAA,CACA9pB,EAAA82F,YACA92F,EAAAk2F,YAAA,KACAplH,QAAAuuB,SAAAw5F,UAAAjvG,EAAAoW,EACA,MACAA,EAAA+2F,YAAA,KACAntG,EAAAL,KAAA,YACA,CACA,CACA,CACA,SAAA8uG,YAAAzuG,EAAAoW,GACA,IAAA+4F,EAAAR,WAAAv4F,GACA,GAAA+4F,EAAA,CACAD,UAAAlvG,EAAAoW,GACA,GAAAA,EAAA82F,YAAA,GACA92F,EAAAk1F,SAAA,KACAtrG,EAAAL,KAAA,UACA,GAAAyW,EAAAqxF,YAAA,CAGA,IAAA2H,EAAApvG,EAAA2qE,eACA,IAAAykC,KAAA3H,aAAA2H,EAAAnI,WAAA,CACAjnG,EAAA0X,SACA,CACA,CACA,CACA,CACA,OAAAy3F,CACA,CACA,SAAAH,YAAAhvG,EAAAoW,EAAAtiB,GACAsiB,EAAAm2F,OAAA,KACAkC,YAAAzuG,EAAAoW,GACA,GAAAtiB,EAAA,CACA,GAAAsiB,EAAAk1F,SAAApkH,QAAAuuB,SAAA3hB,QAAAkM,EAAA0L,KAAA,SAAA5X,EACA,CACAsiB,EAAA4R,MAAA,KACAhoB,EAAA2uC,SAAA,KACA,CACA,SAAAg9D,eAAA0D,EAAAj5F,EAAAjnB,GACA,IAAAyjD,EAAAy8D,EAAAz8D,MACAy8D,EAAAz8D,MAAA,KACA,MAAAA,EAAA,CACA,IAAA9+C,EAAA8+C,EAAAxmD,SACAgqB,EAAA82F,YACAp5G,EAAA3E,GACAyjD,IAAAj5C,IACA,CAGAyc,EAAAk3F,mBAAA3zG,KAAA01G,CACA,CACAhmH,OAAA2B,eAAAyI,SAAAnK,UAAA,aAIA+d,WAAA,MACAjE,IAAA,SAAAA,MACA,GAAA/W,KAAAo+E,iBAAA95E,UAAA,CACA,YACA,CACA,OAAAtE,KAAAo+E,eAAAvqC,SACA,EACAr4C,IAAA,SAAAA,IAAAoD,GAGA,IAAAoB,KAAAo+E,eAAA,CACA,MACA,CAIAp+E,KAAAo+E,eAAAvqC,UAAAj1C,CACA,IAEAwI,SAAAnK,UAAAouB,QAAAouF,EAAApuF,QACAjkB,SAAAnK,UAAAw+G,WAAAhC,EAAAiC,UACAt0G,SAAAnK,UAAAu+G,SAAA,SAAA14G,EAAA2E,GACAA,EAAA3E,EACA,C,iBC9nBA,IAAAmgH,EACA,SAAAC,gBAAA36G,EAAApL,EAAAyB,GAAAzB,EAAAgmH,eAAAhmH,GAAA,GAAAA,KAAAoL,EAAA,CAAAvL,OAAA2B,eAAA4J,EAAApL,EAAA,CAAAyB,QAAAoc,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,YAAA/5C,EAAApL,GAAAyB,CAAA,QAAA2J,CAAA,CACA,SAAA46G,eAAA3xG,GAAA,IAAArU,EAAAimH,aAAA5xG,EAAA,wBAAArU,IAAA,SAAAA,EAAAyb,OAAAzb,EAAA,CACA,SAAAimH,aAAA7M,EAAA8M,GAAA,UAAA9M,IAAA,UAAAA,IAAA,YAAAA,EAAA,IAAA+M,EAAA/M,EAAAplG,OAAAoyG,aAAA,GAAAD,IAAAh/G,UAAA,KAAAgb,EAAAgkG,EAAAlmH,KAAAm5G,EAAA8M,GAAA,qBAAA/jG,IAAA,gBAAAA,EAAA,UAAA5W,UAAA,uDAAA26G,IAAA,SAAAzqG,OAAAhR,QAAA2uG,EAAA,CACA,IAAA0I,EAAA7kH,EAAA,MACA,IAAAopH,EAAAryG,OAAA,eACA,IAAAsyG,EAAAtyG,OAAA,cACA,IAAAuyG,EAAAvyG,OAAA,SACA,IAAAwyG,EAAAxyG,OAAA,SACA,IAAAyyG,EAAAzyG,OAAA,eACA,IAAA0yG,EAAA1yG,OAAA,iBACA,IAAA2yG,EAAA3yG,OAAA,UACA,SAAA4yG,iBAAAnlH,EAAAm4C,GACA,OACAn4C,QACAm4C,OAEA,CACA,SAAAitE,eAAAC,GACA,IAAAloH,EAAAkoH,EAAAT,GACA,GAAAznH,IAAA,MACA,IAAAiZ,EAAAivG,EAAAH,GAAA3nD,OAIA,GAAAnnD,IAAA,MACAivG,EAAAL,GAAA,KACAK,EAAAT,GAAA,KACAS,EAAAR,GAAA,KACA1nH,EAAAgoH,iBAAA/uG,EAAA,OACA,CACA,CACA,CACA,SAAAkvG,WAAAD,GAGAppH,QAAAuuB,SAAA46F,eAAAC,EACA,CACA,SAAAE,YAAAC,EAAAH,GACA,gBAAAloH,EAAA6G,GACAwhH,EAAAjoH,MAAA,WACA,GAAA8nH,EAAAN,GAAA,CACA5nH,EAAAgoH,iBAAAz/G,UAAA,OACA,MACA,CACA2/G,EAAAJ,GAAA9nH,EAAA6G,EACA,GAAAA,EACA,CACA,CACA,IAAAyhH,EAAArnH,OAAAo0G,gBAAA,eACA,IAAAkT,EAAAtnH,OAAAunH,gBAAAtB,EAAA,CACA,UAAAtvG,GACA,OAAA3T,KAAA8jH,EACA,EACAx2G,KAAA,SAAAA,OACA,IAAAoxG,EAAA1+G,KAGA,IAAAsG,EAAAtG,KAAA0jH,GACA,GAAAp9G,IAAA,MACA,OAAAzK,QAAA+G,OAAA0D,EACA,CACA,GAAAtG,KAAA2jH,GAAA,CACA,OAAA9nH,QAAAE,QAAAgoH,iBAAAz/G,UAAA,MACA,CACA,GAAAtE,KAAA8jH,GAAAjwE,UAAA,CAKA,WAAAh4C,SAAA,SAAAE,EAAA6G,GACA/H,QAAAuuB,UAAA,WACA,GAAAs1F,EAAAgF,GAAA,CACA9gH,EAAA87G,EAAAgF,GACA,MACA3nH,EAAAgoH,iBAAAz/G,UAAA,MACA,CACA,GACA,GACA,CAMA,IAAA8/G,EAAApkH,KAAA4jH,GACA,IAAAzmD,EACA,GAAAinD,EAAA,CACAjnD,EAAA,IAAAthE,QAAAsoH,YAAAC,EAAApkH,MACA,MAGA,IAAAgV,EAAAhV,KAAA8jH,GAAA3nD,OACA,GAAAnnD,IAAA,MACA,OAAAnZ,QAAAE,QAAAgoH,iBAAA/uG,EAAA,OACA,CACAmoD,EAAA,IAAAthE,QAAAmE,KAAA6jH,GACA,CACA7jH,KAAA4jH,GAAAzmD,EACA,OAAAA,CACA,GACA+lD,gBAAAD,EAAA9xG,OAAAwvD,eAAA,WACA,OAAA3gE,IACA,IAAAkjH,gBAAAD,EAAA,mBAAAuB,UACA,IAAAC,EAAAzkH,KAIA,WAAAnE,SAAA,SAAAE,EAAA6G,GACA6hH,EAAAX,GAAAz4F,QAAA,eAAAvoB,GACA,GAAAA,EAAA,CACAF,EAAAE,GACA,MACA,CACA/G,EAAAgoH,iBAAAz/G,UAAA,MACA,GACA,GACA,IAAA2+G,GAAAoB,GACA,IAAApK,EAAA,SAAAA,kCAAAtmG,GACA,IAAA+wG,EACA,IAAA3jD,EAAA/jE,OAAAzC,OAAA+pH,GAAAI,EAAA,GAAAxB,gBAAAwB,EAAAZ,EAAA,CACAllH,MAAA+U,EACA2uC,SAAA,OACA4gE,gBAAAwB,EAAAlB,EAAA,CACA5kH,MAAA,KACA0jD,SAAA,OACA4gE,gBAAAwB,EAAAjB,EAAA,CACA7kH,MAAA,KACA0jD,SAAA,OACA4gE,gBAAAwB,EAAAhB,EAAA,CACA9kH,MAAA,KACA0jD,SAAA,OACA4gE,gBAAAwB,EAAAf,EAAA,CACA/kH,MAAA+U,EAAA2qE,eAAAs8B,WACAt4D,SAAA,OACA4gE,gBAAAwB,EAAAb,EAAA,CACAjlH,MAAA,SAAAA,MAAA7C,EAAA6G,GACA,IAAAoS,EAAA+rD,EAAA+iD,GAAA3nD,OACA,GAAAnnD,EAAA,CACA+rD,EAAA6iD,GAAA,KACA7iD,EAAAyiD,GAAA,KACAziD,EAAA0iD,GAAA,KACA1nH,EAAAgoH,iBAAA/uG,EAAA,OACA,MACA+rD,EAAAyiD,GAAAznH,EACAglE,EAAA0iD,GAAA7gH,CACA,CACA,EACA0/C,SAAA,OACAoiE,IACA3jD,EAAA6iD,GAAA,KACA3E,EAAAtrG,GAAA,SAAA7Q,GACA,GAAAA,KAAAqD,OAAA,8BACA,IAAAvD,EAAAm+D,EAAA0iD,GAGA,GAAA7gH,IAAA,MACAm+D,EAAA6iD,GAAA,KACA7iD,EAAAyiD,GAAA,KACAziD,EAAA0iD,GAAA,KACA7gH,EAAAE,EACA,CACAi+D,EAAA2iD,GAAA5gH,EACA,MACA,CACA,IAAA/G,EAAAglE,EAAAyiD,GACA,GAAAznH,IAAA,MACAglE,EAAA6iD,GAAA,KACA7iD,EAAAyiD,GAAA,KACAziD,EAAA0iD,GAAA,KACA1nH,EAAAgoH,iBAAAz/G,UAAA,MACA,CACAy8D,EAAA4iD,GAAA,IACA,IACAhwG,EAAAsM,GAAA,WAAAikG,WAAA/1G,KAAA,KAAA4yD,IACA,OAAAA,CACA,EACA1mE,EAAAC,QAAA2/G,C,iBCjLA,SAAA0K,QAAAzwC,EAAA0wC,GAAA,IAAAzhH,EAAAnG,OAAAmG,KAAA+wE,GAAA,GAAAl3E,OAAA6nH,sBAAA,KAAAC,EAAA9nH,OAAA6nH,sBAAA3wC,GAAA0wC,IAAAE,IAAAz0G,QAAA,SAAA00G,GAAA,OAAA/nH,OAAA65C,yBAAAq9B,EAAA6wC,GAAA/pG,UAAA,KAAA7X,EAAA5H,KAAAmB,MAAAyG,EAAA2hH,EAAA,QAAA3hH,CAAA,CACA,SAAA6hH,cAAAj6G,GAAA,QAAApP,EAAA,EAAAA,EAAAgB,UAAAf,OAAAD,IAAA,KAAAy6D,EAAA,MAAAz5D,UAAAhB,GAAAgB,UAAAhB,GAAA,GAAAA,EAAA,EAAAgpH,QAAA3nH,OAAAo5D,IAAA,GAAA/2B,SAAA,SAAAliC,GAAA+lH,gBAAAn4G,EAAA5N,EAAAi5D,EAAAj5D,GAAA,IAAAH,OAAAioH,0BAAAjoH,OAAAgqF,iBAAAj8E,EAAA/N,OAAAioH,0BAAA7uD,IAAAuuD,QAAA3nH,OAAAo5D,IAAA/2B,SAAA,SAAAliC,GAAAH,OAAA2B,eAAAoM,EAAA5N,EAAAH,OAAA65C,yBAAAuf,EAAAj5D,GAAA,WAAA4N,CAAA,CACA,SAAAm4G,gBAAA36G,EAAApL,EAAAyB,GAAAzB,EAAAgmH,eAAAhmH,GAAA,GAAAA,KAAAoL,EAAA,CAAAvL,OAAA2B,eAAA4J,EAAApL,EAAA,CAAAyB,QAAAoc,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,YAAA/5C,EAAApL,GAAAyB,CAAA,QAAA2J,CAAA,CACA,SAAA28G,gBAAA9/B,EAAA+/B,GAAA,KAAA//B,aAAA+/B,GAAA,WAAAz8G,UAAA,sCACA,SAAA08G,kBAAAr6G,EAAAs6G,GAAA,QAAA1pH,EAAA,EAAAA,EAAA0pH,EAAAzpH,OAAAD,IAAA,KAAAi7C,EAAAyuE,EAAA1pH,GAAAi7C,EAAA57B,WAAA47B,EAAA57B,YAAA,MAAA47B,EAAAyL,aAAA,kBAAAzL,IAAA0L,SAAA,KAAAtlD,OAAA2B,eAAAoM,EAAAo4G,eAAAvsE,EAAAz5C,KAAAy5C,EAAA,EACA,SAAA0uE,aAAAH,EAAAI,EAAAC,GAAA,GAAAD,EAAAH,kBAAAD,EAAAloH,UAAAsoH,GAAA,GAAAC,EAAAJ,kBAAAD,EAAAK,GAAAxoH,OAAA2B,eAAAwmH,EAAA,aAAA7iE,SAAA,eAAA6iE,CAAA,CACA,SAAAhC,eAAA3xG,GAAA,IAAArU,EAAAimH,aAAA5xG,EAAA,wBAAArU,IAAA,SAAAA,EAAAyb,OAAAzb,EAAA,CACA,SAAAimH,aAAA7M,EAAA8M,GAAA,UAAA9M,IAAA,UAAAA,IAAA,YAAAA,EAAA,IAAA+M,EAAA/M,EAAAplG,OAAAoyG,aAAA,GAAAD,IAAAh/G,UAAA,KAAAgb,EAAAgkG,EAAAlmH,KAAAm5G,EAAA8M,GAAA,qBAAA/jG,IAAA,gBAAAA,EAAA,UAAA5W,UAAA,uDAAA26G,IAAA,SAAAzqG,OAAAhR,QAAA2uG,EAAA,CACA,IAAAmD,EAAAt/G,EAAA,MACAqO,EAAAixG,EAAAjxG,OACA,IAAAg9G,EAAArrH,EAAA,MACA8tF,EAAAu9B,EAAAv9B,QACA,IAAAzsF,EAAAysF,KAAAzsF,QAAA,UACA,SAAAiqH,WAAAhY,EAAA3iG,EAAAiqD,GACAvsD,EAAAxL,UAAA6X,KAAA1X,KAAAswG,EAAA3iG,EAAAiqD,EACA,CACA36D,EAAAC,QAAA,WACA,SAAAk/G,aACA0L,gBAAAllH,KAAAw5G,YACAx5G,KAAAwf,KAAA,KACAxf,KAAA4uG,KAAA,KACA5uG,KAAApE,OAAA,CACA,CACA0pH,aAAA9L,WAAA,EACAr8G,IAAA,OACAyB,MAAA,SAAArD,KAAAimC,GACA,IAAA+kB,EAAA,CACAvxC,KAAAwsB,EACAl0B,KAAA,MAEA,GAAAtN,KAAApE,OAAA,EAAAoE,KAAA4uG,KAAAthG,KAAAi5C,OAAAvmD,KAAAwf,KAAA+mC,EACAvmD,KAAA4uG,KAAAroD,IACAvmD,KAAApE,MACA,GACA,CACAuB,IAAA,UACAyB,MAAA,SAAAqd,QAAAulB,GACA,IAAA+kB,EAAA,CACAvxC,KAAAwsB,EACAl0B,KAAAtN,KAAAwf,MAEA,GAAAxf,KAAApE,SAAA,EAAAoE,KAAA4uG,KAAAroD,EACAvmD,KAAAwf,KAAA+mC,IACAvmD,KAAApE,MACA,GACA,CACAuB,IAAA,QACAyB,MAAA,SAAAi2C,QACA,GAAA70C,KAAApE,SAAA,SACA,IAAAosF,EAAAhoF,KAAAwf,KAAAxK,KACA,GAAAhV,KAAApE,SAAA,EAAAoE,KAAAwf,KAAAxf,KAAA4uG,KAAA,UAAA5uG,KAAAwf,KAAAxf,KAAAwf,KAAAlS,OACAtN,KAAApE,OACA,OAAAosF,CACA,GACA,CACA7qF,IAAA,QACAyB,MAAA,SAAAmhD,QACA//C,KAAAwf,KAAAxf,KAAA4uG,KAAA,KACA5uG,KAAApE,OAAA,CACA,GACA,CACAuB,IAAA,OACAyB,MAAA,SAAA+S,KAAAgzD,GACA,GAAA3kE,KAAApE,SAAA,WACA,IAAAo7C,EAAAh3C,KAAAwf,KACA,IAAAwoE,EAAA,GAAAhxC,EAAAhiC,KACA,MAAAgiC,IAAA1pC,KAAA06E,GAAArjB,EAAA3tB,EAAAhiC,KACA,OAAAgzE,CACA,GACA,CACA7qF,IAAA,SACAyB,MAAA,SAAAsF,OAAA2tC,GACA,GAAA7xC,KAAApE,SAAA,SAAA6M,EAAAs8C,MAAA,GACA,IAAAijC,EAAAv/E,EAAAkM,YAAAk9B,IAAA,GACA,IAAAmF,EAAAh3C,KAAAwf,KACA,IAAA7jB,EAAA,EACA,MAAAq7C,EAAA,CACA0uE,WAAA1uE,EAAAhiC,KAAAgzE,EAAArsF,GACAA,GAAAq7C,EAAAhiC,KAAApZ,OACAo7C,IAAA1pC,IACA,CACA,OAAA06E,CACA,GAGA,CACA7qF,IAAA,UACAyB,MAAA,SAAAkgH,QAAAjtE,EAAA8zE,GACA,IAAA39B,EACA,GAAAn2C,EAAA7xC,KAAAwf,KAAAxK,KAAApZ,OAAA,CAEAosF,EAAAhoF,KAAAwf,KAAAxK,KAAArX,MAAA,EAAAk0C,GACA7xC,KAAAwf,KAAAxK,KAAAhV,KAAAwf,KAAAxK,KAAArX,MAAAk0C,EACA,SAAAA,IAAA7xC,KAAAwf,KAAAxK,KAAApZ,OAAA,CAEAosF,EAAAhoF,KAAA60C,OACA,MAEAmzC,EAAA29B,EAAA3lH,KAAA4lH,WAAA/zE,GAAA7xC,KAAA6lH,WAAAh0E,EACA,CACA,OAAAm2C,CACA,GACA,CACA7qF,IAAA,QACAyB,MAAA,SAAA6iB,QACA,OAAAzhB,KAAAwf,KAAAxK,IACA,GAGA,CACA7X,IAAA,aACAyB,MAAA,SAAAgnH,WAAA/zE,GACA,IAAAmF,EAAAh3C,KAAAwf,KACA,IAAAo2C,EAAA,EACA,IAAAoyB,EAAAhxC,EAAAhiC,KACA68B,GAAAm2C,EAAApsF,OACA,MAAAo7C,IAAA1pC,KAAA,CACA,IAAA6lE,EAAAn8B,EAAAhiC,KACA,IAAAigG,EAAApjE,EAAAshC,EAAAv3E,OAAAu3E,EAAAv3E,OAAAi2C,EACA,GAAAojE,IAAA9hC,EAAAv3E,OAAAosF,GAAA7U,OAAA6U,GAAA7U,EAAAx1E,MAAA,EAAAk0C,GACAA,GAAAojE,EACA,GAAApjE,IAAA,GACA,GAAAojE,IAAA9hC,EAAAv3E,OAAA,GACAg6D,EACA,GAAA5e,EAAA1pC,KAAAtN,KAAAwf,KAAAw3B,EAAA1pC,UAAAtN,KAAAwf,KAAAxf,KAAA4uG,KAAA,IACA,MACA5uG,KAAAwf,KAAAw3B,EACAA,EAAAhiC,KAAAm+D,EAAAx1E,MAAAs3G,EACA,CACA,KACA,GACAr/C,CACA,CACA51D,KAAApE,QAAAg6D,EACA,OAAAoyB,CACA,GAGA,CACA7qF,IAAA,aACAyB,MAAA,SAAAinH,WAAAh0E,GACA,IAAAm2C,EAAAv/E,EAAAkM,YAAAk9B,GACA,IAAAmF,EAAAh3C,KAAAwf,KACA,IAAAo2C,EAAA,EACA5e,EAAAhiC,KAAAF,KAAAkzE,GACAn2C,GAAAmF,EAAAhiC,KAAApZ,OACA,MAAAo7C,IAAA1pC,KAAA,CACA,IAAAorD,EAAA1hB,EAAAhiC,KACA,IAAAigG,EAAApjE,EAAA6mB,EAAA98D,OAAA88D,EAAA98D,OAAAi2C,EACA6mB,EAAA5jD,KAAAkzE,IAAApsF,OAAAi2C,EAAA,EAAAojE,GACApjE,GAAAojE,EACA,GAAApjE,IAAA,GACA,GAAAojE,IAAAv8C,EAAA98D,OAAA,GACAg6D,EACA,GAAA5e,EAAA1pC,KAAAtN,KAAAwf,KAAAw3B,EAAA1pC,UAAAtN,KAAAwf,KAAAxf,KAAA4uG,KAAA,IACA,MACA5uG,KAAAwf,KAAAw3B,EACAA,EAAAhiC,KAAA0jD,EAAA/6D,MAAAs3G,EACA,CACA,KACA,GACAr/C,CACA,CACA51D,KAAApE,QAAAg6D,EACA,OAAAoyB,CACA,GAGA,CACA7qF,IAAA1B,EACAmD,MAAA,SAAAA,MAAAk4C,EAAAh6C,GACA,OAAAorF,EAAAloF,KAAAglH,4BAAA,GAAAloH,GAAA,IAEAiyF,MAAA,EAEA+2B,cAAA,QAEA,KAEA,OAAAtM,UACA,CApKA,E,WCfA,SAAAnuF,QAAAvoB,EAAA2E,GACA,IAAAi3G,EAAA1+G,KACA,IAAA+lH,EAAA/lH,KAAAs+E,gBAAAt+E,KAAAs+E,eAAAzqC,UACA,IAAAmyE,EAAAhmH,KAAAo+E,gBAAAp+E,KAAAo+E,eAAAvqC,UACA,GAAAkyE,GAAAC,EAAA,CACA,GAAAv+G,EAAA,CACAA,EAAA3E,EACA,SAAAA,EAAA,CACA,IAAA9C,KAAAo+E,eAAA,CACAvjF,QAAAuuB,SAAA68F,YAAAjmH,KAAA8C,EACA,UAAA9C,KAAAo+E,eAAA2iC,aAAA,CACA/gH,KAAAo+E,eAAA2iC,aAAA,KACAlmH,QAAAuuB,SAAA68F,YAAAjmH,KAAA8C,EACA,CACA,CACA,OAAA9C,IACA,CAKA,GAAAA,KAAAs+E,eAAA,CACAt+E,KAAAs+E,eAAAzqC,UAAA,IACA,CAGA,GAAA7zC,KAAAo+E,eAAA,CACAp+E,KAAAo+E,eAAAvqC,UAAA,IACA,CACA7zC,KAAAw7G,SAAA14G,GAAA,eAAAA,GACA,IAAA2E,GAAA3E,EAAA,CACA,IAAA47G,EAAAtgC,eAAA,CACAvjF,QAAAuuB,SAAA88F,oBAAAxH,EAAA57G,EACA,UAAA47G,EAAAtgC,eAAA2iC,aAAA,CACArC,EAAAtgC,eAAA2iC,aAAA,KACAlmH,QAAAuuB,SAAA88F,oBAAAxH,EAAA57G,EACA,MACAjI,QAAAuuB,SAAA+8F,YAAAzH,EACA,CACA,SAAAj3G,EAAA,CACA5M,QAAAuuB,SAAA+8F,YAAAzH,GACAj3G,EAAA3E,EACA,MACAjI,QAAAuuB,SAAA+8F,YAAAzH,EACA,CACA,IACA,OAAA1+G,IACA,CACA,SAAAkmH,oBAAAnyC,EAAAjxE,GACAmjH,YAAAlyC,EAAAjxE,GACAqjH,YAAApyC,EACA,CACA,SAAAoyC,YAAApyC,GACA,GAAAA,EAAAqK,iBAAArK,EAAAqK,eAAA+8B,UAAA,OACA,GAAApnC,EAAAuK,iBAAAvK,EAAAuK,eAAA68B,UAAA,OACApnC,EAAAzgE,KAAA,QACA,CACA,SAAAooG,YACA,GAAA17G,KAAAs+E,eAAA,CACAt+E,KAAAs+E,eAAAzqC,UAAA,MACA7zC,KAAAs+E,eAAAu8B,QAAA,MACA76G,KAAAs+E,eAAA3iD,MAAA,MACA37B,KAAAs+E,eAAAs8B,WAAA,KACA,CACA,GAAA56G,KAAAo+E,eAAA,CACAp+E,KAAAo+E,eAAAvqC,UAAA,MACA7zC,KAAAo+E,eAAAziD,MAAA,MACA37B,KAAAo+E,eAAA8hC,OAAA,MACAlgH,KAAAo+E,eAAA6hC,YAAA,MACAjgH,KAAAo+E,eAAA0iC,YAAA,MACA9gH,KAAAo+E,eAAA6gC,SAAA,MACAj/G,KAAAo+E,eAAA2iC,aAAA,KACA,CACA,CACA,SAAAkF,YAAAlyC,EAAAjxE,GACAixE,EAAAzgE,KAAA,QAAAxQ,EACA,CACA,SAAAo3G,eAAAvmG,EAAA7Q,GAOA,IAAAigH,EAAApvG,EAAA2qE,eACA,IAAA0gC,EAAArrG,EAAAyqE,eACA,GAAA2kC,KAAA3H,aAAA4D,KAAA5D,YAAAznG,EAAA0X,QAAAvoB,QAAA6Q,EAAAL,KAAA,QAAAxQ,EACA,CACAzI,EAAAC,QAAA,CACA+wB,gBACAqwF,oBACAxB,8B,iBCzFA,IAAAkM,EAAAhsH,EAAA,MAAA6rE,EAAA,2BACA,SAAA5mD,KAAAtf,GACA,IAAAywF,EAAA,MACA,kBACA,GAAAA,EAAA,OACAA,EAAA,KACA,QAAA61B,EAAA1pH,UAAAf,OAAA6B,EAAA,IAAAC,MAAA2oH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA,CACA7oH,EAAA6oH,GAAA3pH,UAAA2pH,EACA,CACAvmH,EAAArD,MAAAsD,KAAAvC,EACA,CACA,CACA,SAAAg6C,OAAA,CACA,SAAA8uE,UAAA5yG,GACA,OAAAA,EAAA6yG,kBAAA7yG,EAAA8yG,QAAA,UACA,CACA,SAAAC,IAAA/yG,EAAAuwE,EAAAnkF,GACA,UAAAmkF,IAAA,kBAAAwiC,IAAA/yG,EAAA,KAAAuwE,GACA,IAAAA,IAAA,GACAnkF,EAAAsf,KAAAtf,GAAA03C,MACA,IAAA4mC,EAAA6F,EAAA7F,UAAA6F,EAAA7F,WAAA,OAAA1qE,EAAA0qE,SACA,IAAA/7B,EAAA4hC,EAAA5hC,UAAA4hC,EAAA5hC,WAAA,OAAA3uC,EAAA2uC,SACA,IAAAqkE,EAAA,SAAAA,iBACA,IAAAhzG,EAAA2uC,SAAAw7D,GACA,EACA,IAAA8I,EAAAjzG,EAAAyqE,gBAAAzqE,EAAAyqE,eAAA6gC,SACA,IAAAnB,EAAA,SAAAA,WACAx7D,EAAA,MACAskE,EAAA,KACA,IAAAvoC,EAAAt+E,EAAA3C,KAAAuW,EACA,EACA,IAAAkzG,EAAAlzG,EAAA2qE,gBAAA3qE,EAAA2qE,eAAAs8B,WACA,IAAAhC,EAAA,SAAAA,QACAv6B,EAAA,MACAwoC,EAAA,KACA,IAAAvkE,EAAAviD,EAAA3C,KAAAuW,EACA,EACA,IAAAoqG,EAAA,SAAAA,QAAAj7G,GACA/C,EAAA3C,KAAAuW,EAAA7Q,EACA,EACA,IAAA+6G,EAAA,SAAAA,UACA,IAAA/6G,EACA,GAAAu7E,IAAAwoC,EAAA,CACA,IAAAlzG,EAAA2qE,iBAAA3qE,EAAA2qE,eAAA3iD,MAAA74B,EAAA,IAAAsjH,EACA,OAAArmH,EAAA3C,KAAAuW,EAAA7Q,EACA,CACA,GAAAw/C,IAAAskE,EAAA,CACA,IAAAjzG,EAAAyqE,iBAAAzqE,EAAAyqE,eAAAziD,MAAA74B,EAAA,IAAAsjH,EACA,OAAArmH,EAAA3C,KAAAuW,EAAA7Q,EACA,CACA,EACA,IAAAgkH,EAAA,SAAAA,YACAnzG,EAAAozG,IAAA9mG,GAAA,SAAA69F,EACA,EACA,GAAAyI,UAAA5yG,GAAA,CACAA,EAAAsM,GAAA,WAAA69F,GACAnqG,EAAAsM,GAAA,QAAA49F,GACA,GAAAlqG,EAAAozG,IAAAD,SAAAnzG,EAAAsM,GAAA,UAAA6mG,EACA,SAAAxkE,IAAA3uC,EAAAyqE,eAAA,CAEAzqE,EAAAsM,GAAA,MAAA0mG,GACAhzG,EAAAsM,GAAA,QAAA0mG,EACA,CACAhzG,EAAAsM,GAAA,MAAA24F,GACAjlG,EAAAsM,GAAA,SAAA69F,GACA,GAAA55B,EAAA59E,QAAA,MAAAqN,EAAAsM,GAAA,QAAA89F,GACApqG,EAAAsM,GAAA,QAAA49F,GACA,kBACAlqG,EAAA6pC,eAAA,WAAAsgE,GACAnqG,EAAA6pC,eAAA,QAAAqgE,GACAlqG,EAAA6pC,eAAA,UAAAspE,GACA,GAAAnzG,EAAAozG,IAAApzG,EAAAozG,IAAAvpE,eAAA,SAAAsgE,GACAnqG,EAAA6pC,eAAA,MAAAmpE,GACAhzG,EAAA6pC,eAAA,QAAAmpE,GACAhzG,EAAA6pC,eAAA,SAAAsgE,GACAnqG,EAAA6pC,eAAA,MAAAo7D,GACAjlG,EAAA6pC,eAAA,QAAAugE,GACApqG,EAAA6pC,eAAA,QAAAqgE,EACA,CACA,CACAxjH,EAAAC,QAAAosH,G,iBCnFA,SAAAM,mBAAAljH,EAAA/H,EAAA6G,EAAAqkH,EAAAC,EAAA/pH,EAAAqU,GAAA,QAAA+rB,EAAAz5B,EAAA3G,GAAAqU,GAAA,IAAA5S,EAAA2+B,EAAA3+B,KAAA,OAAA0H,GAAA1D,EAAA0D,GAAA,UAAAi3B,EAAAwZ,KAAA,CAAAh7C,EAAA6C,EAAA,MAAA/C,QAAAE,QAAA6C,GAAAzC,KAAA8qH,EAAAC,EAAA,EACA,SAAAC,kBAAA3sH,GAAA,sBAAAu5E,EAAA/zE,KAAAvC,EAAAd,UAAA,WAAAd,SAAA,SAAAE,EAAA6G,GAAA,IAAAkB,EAAAtJ,EAAAkC,MAAAq3E,EAAAt2E,GAAA,SAAAwpH,MAAAroH,GAAAooH,mBAAAljH,EAAA/H,EAAA6G,EAAAqkH,MAAAC,OAAA,OAAAtoH,EAAA,UAAAsoH,OAAApkH,GAAAkkH,mBAAAljH,EAAA/H,EAAA6G,EAAAqkH,MAAAC,OAAA,QAAApkH,EAAA,CAAAmkH,MAAA3iH,UAAA,KACA,SAAAqgH,QAAAzwC,EAAA0wC,GAAA,IAAAzhH,EAAAnG,OAAAmG,KAAA+wE,GAAA,GAAAl3E,OAAA6nH,sBAAA,KAAAC,EAAA9nH,OAAA6nH,sBAAA3wC,GAAA0wC,IAAAE,IAAAz0G,QAAA,SAAA00G,GAAA,OAAA/nH,OAAA65C,yBAAAq9B,EAAA6wC,GAAA/pG,UAAA,KAAA7X,EAAA5H,KAAAmB,MAAAyG,EAAA2hH,EAAA,QAAA3hH,CAAA,CACA,SAAA6hH,cAAAj6G,GAAA,QAAApP,EAAA,EAAAA,EAAAgB,UAAAf,OAAAD,IAAA,KAAAy6D,EAAA,MAAAz5D,UAAAhB,GAAAgB,UAAAhB,GAAA,GAAAA,EAAA,EAAAgpH,QAAA3nH,OAAAo5D,IAAA,GAAA/2B,SAAA,SAAAliC,GAAA+lH,gBAAAn4G,EAAA5N,EAAAi5D,EAAAj5D,GAAA,IAAAH,OAAAioH,0BAAAjoH,OAAAgqF,iBAAAj8E,EAAA/N,OAAAioH,0BAAA7uD,IAAAuuD,QAAA3nH,OAAAo5D,IAAA/2B,SAAA,SAAAliC,GAAAH,OAAA2B,eAAAoM,EAAA5N,EAAAH,OAAA65C,yBAAAuf,EAAAj5D,GAAA,WAAA4N,CAAA,CACA,SAAAm4G,gBAAA36G,EAAApL,EAAAyB,GAAAzB,EAAAgmH,eAAAhmH,GAAA,GAAAA,KAAAoL,EAAA,CAAAvL,OAAA2B,eAAA4J,EAAApL,EAAA,CAAAyB,QAAAoc,WAAA,KAAAqnC,aAAA,KAAAC,SAAA,YAAA/5C,EAAApL,GAAAyB,CAAA,QAAA2J,CAAA,CACA,SAAA46G,eAAA3xG,GAAA,IAAArU,EAAAimH,aAAA5xG,EAAA,wBAAArU,IAAA,SAAAA,EAAAyb,OAAAzb,EAAA,CACA,SAAAimH,aAAA7M,EAAA8M,GAAA,UAAA9M,IAAA,UAAAA,IAAA,YAAAA,EAAA,IAAA+M,EAAA/M,EAAAplG,OAAAoyG,aAAA,GAAAD,IAAAh/G,UAAA,KAAAgb,EAAAgkG,EAAAlmH,KAAAm5G,EAAA8M,GAAA,qBAAA/jG,IAAA,gBAAAA,EAAA,UAAA5W,UAAA,uDAAA26G,IAAA,SAAAzqG,OAAAhR,QAAA2uG,EAAA,CACA,IAAAsD,EAAAz/G,EAAA,MAAA6rE,EAAA,qBACA,SAAAhnD,KAAAnY,EAAAo4G,EAAAh7B,GACA,IAAAnjB,EACA,GAAAm+C,YAAA5xG,OAAA,YACAyzD,EAAAm+C,CACA,SAAAA,KAAA/tG,OAAAwvD,eAAAI,EAAAm+C,EAAA/tG,OAAAwvD,sBAAA,GAAAu+C,KAAA/tG,OAAA4vD,YAAAm+C,EAAA/tG,OAAA4vD,iBAAA,UAAA84C,EAAA,wBAAAqF,GACA,IAAA7gC,EAAA,IAAAv3E,EAAAk+G,cAAA,CACAh+G,WAAA,MACAk9E,IAGA,IAAA22B,EAAA,MACAx8B,EAAAp3E,MAAA,WACA,IAAA4zG,EAAA,CACAA,EAAA,KACAvtG,MACA,CACA,EACA,SAAAA,OACA,OAAA85G,OAAA1qH,MAAAsD,KAAArD,UACA,CACA,SAAAyqH,SACAA,OAAAD,mBAAA,YACA,IACA,IAAAE,QAAAtmD,EAAAzzD,OACA1O,EAAAyoH,EAAAzoH,MACAm4C,EAAAswE,EAAAtwE,KACA,GAAAA,EAAA,CACAsnC,EAAA9iF,KAAA,KACA,SAAA8iF,EAAA9iF,WAAAqD,GAAA,CACA0O,MACA,MACAutG,EAAA,KACA,CACA,OAAA/3G,GACAu7E,EAAAhzD,QAAAvoB,EACA,CACA,IACA,OAAAskH,OAAA1qH,MAAAsD,KAAArD,UACA,CACA,OAAA0hF,CACA,CACAhkF,EAAAC,QAAA2kB,I,iBC9CA,IAAAynG,EACA,SAAArnG,KAAAtf,GACA,IAAAywF,EAAA,MACA,kBACA,GAAAA,EAAA,OACAA,EAAA,KACAzwF,EAAArD,WAAA,EAAAC,UACA,CACA,CACA,IAAAi9G,EAAAx/G,EAAA,QACA86H,EAAAtb,EAAAsb,iBACAvV,EAAA/F,EAAA+F,qBACA,SAAAloE,KAAA30C,GAEA,GAAAA,EAAA,MAAAA,CACA,CACA,SAAAyjH,UAAA5yG,GACA,OAAAA,EAAA6yG,kBAAA7yG,EAAA8yG,QAAA,UACA,CACA,SAAA0O,UAAAxhH,EAAAknG,EAAAwF,EAAAtgH,GACAA,EAAAsf,KAAAtf,GACA,IAAA+zC,EAAA,MACAngC,EAAAsM,GAAA,oBACA6zB,EAAA,IACA,IACA,GAAA4yE,IAAApiH,UAAAoiH,EAAAtsH,EAAA,MACAssH,EAAA/yG,EAAA,CACA0qE,SAAAw8B,EACAv4D,SAAA+9D,IACA,SAAAv9G,GACA,GAAAA,EAAA,OAAA/C,EAAA+C,GACAgxC,EAAA,KACA/zC,GACA,IACA,IAAA8zC,EAAA,MACA,gBAAA/wC,GACA,GAAAgxC,EAAA,OACA,GAAAD,EAAA,OACAA,EAAA,KAGA,GAAA0yE,UAAA5yG,GAAA,OAAAA,EAAA8yG,QACA,UAAA9yG,EAAA0X,UAAA,kBAAA1X,EAAA0X,UACAtrB,EAAA+C,GAAA,IAAA68G,EAAA,QACA,CACA,CACA,SAAAviH,KAAA5C,GACAA,GACA,CACA,SAAA2jF,KAAAl/D,EAAA4pD,GACA,OAAA5pD,EAAAk/D,KAAAtV,EACA,CACA,SAAAusD,YAAApI,GACA,IAAAA,EAAApxH,OAAA,OAAA67C,KACA,UAAAu1E,IAAApxH,OAAA,uBAAA67C,KACA,OAAAu1E,EAAA9vD,KACA,CACA,SAAAm4D,WACA,QAAAhP,EAAA1pH,UAAAf,OAAAoxH,EAAA,IAAAtvH,MAAA2oH,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAA,CACA0G,EAAA1G,GAAA3pH,UAAA2pH,EACA,CACA,IAAAvmH,EAAAq1H,YAAApI,GACA,GAAAtvH,MAAAwzB,QAAA87F,EAAA,IAAAA,IAAA,GACA,GAAAA,EAAApxH,OAAA,GACA,UAAAs5H,EAAA,UACA,CACA,IAAA5uH,EACA,IAAAgvH,EAAAtI,EAAA/wH,KAAA,SAAA0X,EAAAhY,GACA,IAAAk/G,EAAAl/G,EAAAqxH,EAAApxH,OAAA,EACA,IAAAykH,EAAA1kH,EAAA,EACA,OAAAw5H,UAAAxhH,EAAAknG,EAAAwF,GAAA,SAAAv9G,GACA,IAAAwD,IAAAxD,EACA,GAAAA,EAAAwyH,EAAAj2F,QAAAjiC,MACA,GAAAy9G,EAAA,OACAya,EAAAj2F,QAAAjiC,MACA2C,EAAAuG,EACA,GACA,IACA,OAAA0mH,EAAA1rG,OAAA68D,KACA,CACA9jF,EAAAC,QAAA+6H,Q,iBCnFA,IAAA/N,EAAAltH,EAAA,MAAA6rE,EAAA,sBACA,SAAAshD,kBAAAzqH,EAAAy9G,EAAAiN,GACA,OAAA1qH,EAAA66G,eAAA,KAAA76G,EAAA66G,cAAA4C,EAAAz9G,EAAA0qH,GAAA,IACA,CACA,SAAA7N,iBAAA5vF,EAAAjtB,EAAA0qH,EAAAjN,GACA,IAAAkN,EAAAF,kBAAAzqH,EAAAy9G,EAAAiN,GACA,GAAAC,GAAA,MACA,KAAAz3B,SAAAy3B,IAAA7nH,KAAA2mB,MAAAkhG,WAAA,GACA,IAAAh7G,EAAA8tG,EAAAiN,EAAA,gBACA,UAAAF,EAAA76G,EAAAg7G,EACA,CACA,OAAA7nH,KAAA2mB,MAAAkhG,EACA,CAGA,OAAA19F,EAAA/iB,WAAA,UACA,CACA3M,EAAAC,QAAA,CACAq/G,kC,iBCpBAt/G,EAAAC,QAAAF,EAAA,K,iBCAA,IAAA8+G,EAAA9+G,EAAA,MACA,GAAAS,QAAAC,IAAAy6H,kBAAA,WAAArc,EAAA,CACA7+G,EAAAC,QAAA4+G,EAAApyG,SACA9J,OAAAwJ,OAAAnM,EAAAC,QAAA4+G,GACA7+G,EAAAC,QAAA4+G,QACA,MACA5+G,EAAAD,EAAAC,QAAAF,EAAA,MACAE,EAAA4+G,UAAA5+G,EACAA,EAAAwM,SAAAxM,EACAA,EAAA8M,SAAAhN,EAAA,MACAE,EAAA2N,OAAA7N,EAAA,MACAE,EAAAoxH,UAAAtxH,EAAA,MACAE,EAAAs0H,YAAAx0H,EAAA,MACAE,EAAA2kH,SAAA7kH,EAAA,MACAE,EAAA+6H,SAAAj7H,EAAA,KACA,C,WCfAC,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,S,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,M,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,S,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,K,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,O,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,Q,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,Q,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,M,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,K,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,O,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,U,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,S,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,iB,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,M,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,M,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,M,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,O,WCAAn7H,EAAAC,QAAAk7H,6CAAAC,IAAAD,CAAA,O,WCCA,IAAApmE,EAAA,SAAA90D,GACA,aAEA0C,OAAA2B,eAAArE,EAAA,cACAsE,MAAA,OAEAtE,EAAA0iE,aAAA;;;;;;;;;;;;;;;;;;;KAsBA,IAAA04D,EAAA,KAEA,IACAA,EAAA,IAAAC,YAAAC,SAAA,IAAAD,YAAAE,OAAA,IAAA59D,WAAA,w2BAAA39D,OACA,OAAAK,GACA,CAaA,SAAAy0D,KAAAypC,EAAAC,EAAAC,GAKA/4F,KAAA64F,MAAA,EAMA74F,KAAA84F,OAAA,EAMA94F,KAAA+4F,YACA,CAyBA3pC,KAAAnyD,UAAA64H,WACA94H,OAAA2B,eAAAywD,KAAAnyD,UAAA,cACA2B,MAAA,OASA,SAAAm3H,OAAAxtH,GACA,OAAAA,KAAA,qBACA,CASA,SAAAytH,MAAAp3H,GACA,IAAAg3D,EAAAh2D,KAAAq2H,MAAAr3H,MACA,OAAAA,EAAA,GAAAg3D,GACA,CASAxG,KAAA2mE,cAOA,IAAAG,EAAA,GAOA,IAAAC,EAAA,GAQA,SAAAC,QAAAx3H,EAAAm6F,GACA,IAAAxwF,EAAA8tH,EAAAC,EAEA,GAAAv9B,EAAA,CACAn6F,KAAA,EAEA,GAAA03H,EAAA,GAAA13H,KAAA,KACAy3H,EAAAF,EAAAv3H,GACA,GAAAy3H,EAAA,OAAAA,CACA,CAEA9tH,EAAAklG,SAAA7uG,EAAA,QACA,GAAA03H,EAAAH,EAAAv3H,GAAA2J,EACA,OAAAA,CACA,MACA3J,GAAA,EAEA,GAAA03H,GAAA,KAAA13H,KAAA,KACAy3H,EAAAH,EAAAt3H,GACA,GAAAy3H,EAAA,OAAAA,CACA,CAEA9tH,EAAAklG,SAAA7uG,IAAA,cACA,GAAA03H,EAAAJ,EAAAt3H,GAAA2J,EACA,OAAAA,CACA,CACA,CAUA6mD,KAAAgnE,gBAQA,SAAAp7B,WAAAp8F,EAAAm6F,GACA,GAAAlxF,MAAAjJ,GAAA,OAAAm6F,EAAAw9B,EAAAC,EAEA,GAAAz9B,EAAA,CACA,GAAAn6F,EAAA,SAAA23H,EACA,GAAA33H,GAAA63H,EAAA,OAAAC,CACA,MACA,GAAA93H,IAAA+3H,EAAA,OAAAC,EACA,GAAAh4H,EAAA,GAAA+3H,EAAA,OAAAE,CACA,CAEA,GAAAj4H,EAAA,SAAAo8F,YAAAp8F,EAAAm6F,GAAA+9B,MACA,OAAArpB,SAAA7uG,EAAAm4H,EAAA,EAAAn4H,EAAAm4H,EAAA,EAAAh+B,EACA,CAUA3pC,KAAA4rC,sBASA,SAAAyS,SAAAupB,EAAAC,EAAAl+B,GACA,WAAA3pC,KAAA4nE,EAAAC,EAAAl+B,EACA,CAYA3pC,KAAAq+C,kBASA,IAAAypB,EAAAt3H,KAAA85D,IAUA,SAAA0yC,WAAAj5B,EAAA4lB,EAAAo+B,GACA,GAAAhkD,EAAAv3E,SAAA,QAAAoH,MAAA,gBAEA,UAAA+1F,IAAA,UAEAo+B,EAAAp+B,EACAA,EAAA,KACA,MACAA,KACA,CAEA,GAAA5lB,IAAA,OAAAA,IAAA,YAAAA,IAAA,aAAAA,IAAA,mBAAA4lB,EAAAw9B,EAAAC,EACAW,KAAA,GACA,GAAAA,EAAA,MAAAA,EAAA,MAAA32D,WAAA,SACA,IAAAxpB,EACA,IAAAA,EAAAm8B,EAAA73E,QAAA,cAAA0H,MAAA,2BAAAg0C,IAAA,GACA,OAAAo1D,WAAAj5B,EAAAtpD,UAAA,GAAAkvE,EAAAo+B,GAAAL,KACA,CAGA,IAAAM,EAAAp8B,WAAAk8B,EAAAC,EAAA,IACA,IAAAp7G,EAAAy6G,EAEA,QAAA76H,EAAA,EAAAA,EAAAw3E,EAAAv3E,OAAAD,GAAA,GACA,IAAA+3B,EAAA9zB,KAAAF,IAAA,EAAAyzE,EAAAv3E,OAAAD,GACAiD,EAAAouC,SAAAmmC,EAAAtpD,UAAAluB,IAAA+3B,GAAAyjG,GAEA,GAAAzjG,EAAA,GACA,IAAA2jG,EAAAr8B,WAAAk8B,EAAAC,EAAAzjG,IACA3X,IAAAu7G,IAAAD,GAAAj0H,IAAA43F,WAAAp8F,GACA,MACAmd,IAAAu7G,IAAAF,GACAr7G,IAAA3Y,IAAA43F,WAAAp8F,GACA,CACA,CAEAmd,EAAAg9E,WACA,OAAAh9E,CACA,CAWAqzC,KAAAg9C,sBASA,SAAAmrB,UAAAp1F,EAAA42D,GACA,UAAA52D,IAAA,gBAAA64D,WAAA74D,EAAA42D,GACA,UAAA52D,IAAA,gBAAAiqE,WAAAjqE,EAAA42D,GAEA,OAAA0U,SAAAtrE,EAAA02D,IAAA12D,EAAA22D,YAAAC,IAAA,UAAAA,EAAA52D,EAAA42D,SACA,CAUA3pC,KAAAmoE,oBASA,IAAAC,EAAA,MAOA,IAAAC,EAAA,MAOA,IAAAV,EAAAS,IAOA,IAAAf,EAAAM,IAOA,IAAAJ,EAAAF,EAAA,EAOA,IAAAiB,EAAAtB,QAAAqB,GAMA,IAAAjB,EAAAJ,QAAA,GAMAhnE,KAAAonE,OAMA,IAAAD,EAAAH,QAAA,QAMAhnE,KAAAmnE,QAMA,IAAAoB,EAAAvB,QAAA,GAMAhnE,KAAAuoE,MAMA,IAAAC,EAAAxB,QAAA,QAMAhnE,KAAAwoE,OAMA,IAAAC,EAAAzB,SAAA,GAMAhnE,KAAAyoE,UAMA,IAAAhB,EAAAppB,SAAA,iCAMAr+C,KAAAynE,YAMA,IAAAH,EAAAjpB,SAAA,gCAMAr+C,KAAAsnE,qBAMA,IAAAE,EAAAnpB,SAAA,sBAMAr+C,KAAAwnE,YAMA,IAAAkB,EAAA1oE,KAAAnyD,UAOA66H,EAAAC,MAAA,SAAAA,QACA,OAAA/3H,KAAA+4F,SAAA/4F,KAAA64F,MAAA,EAAA74F,KAAA64F,GACA,EAQAi/B,EAAA9+B,SAAA,SAAAA,WACA,GAAAh5F,KAAA+4F,SAAA,OAAA/4F,KAAA84F,OAAA,GAAAi+B,GAAA/2H,KAAA64F,MAAA,GACA,OAAA74F,KAAA84F,KAAAi+B,GAAA/2H,KAAA64F,MAAA,EACA,EAWAi/B,EAAA54G,SAAA,SAAAA,SAAAi4G,GACAA,KAAA,GACA,GAAAA,EAAA,MAAAA,EAAA,MAAA32D,WAAA,SACA,GAAAxgE,KAAAg4H,SAAA,UAEA,GAAAh4H,KAAAi4H,aAAA,CAEA,GAAAj4H,KAAAk4H,GAAAtB,GAAA,CAGA,IAAAuB,EAAAn9B,WAAAm8B,GACAiB,EAAAp4H,KAAAo4H,IAAAD,GACAE,EAAAD,EAAAd,IAAAa,GAAAG,IAAAt4H,MACA,OAAAo4H,EAAAl5G,SAAAi4G,GAAAkB,EAAAN,QAAA74G,SAAAi4G,EACA,gBAAAn3H,KAAA82H,MAAA53G,SAAAi4G,EACA,CAIA,IAAAC,EAAAp8B,WAAAk8B,EAAAC,EAAA,GAAAn3H,KAAA+4F,UACA9xB,EAAAjnE,KACA,IAAA+b,EAAA,GAEA,YACA,IAAAw8G,EAAAtxD,EAAAmxD,IAAAhB,GACAoB,EAAAvxD,EAAAqxD,IAAAC,EAAAjB,IAAAF,IAAAW,UAAA,EACAU,EAAAD,EAAAt5G,SAAAi4G,GACAlwD,EAAAsxD,EACA,GAAAtxD,EAAA+wD,SAAA,OAAAS,EAAA18G,MAAA,CACA,MAAA08G,EAAA78H,OAAA,EAAA68H,EAAA,IAAAA,EAEA18G,EAAA,GAAA08G,EAAA18G,CACA,CACA,CACA,EAQA+7G,EAAAY,YAAA,SAAAA,cACA,OAAA14H,KAAA84F,IACA,EAQAg/B,EAAAa,oBAAA,SAAAA,sBACA,OAAA34H,KAAA84F,OAAA,CACA,EAQAg/B,EAAAc,WAAA,SAAAA,aACA,OAAA54H,KAAA64F,GACA,EAQAi/B,EAAAe,mBAAA,SAAAA,qBACA,OAAA74H,KAAA64F,MAAA,CACA,EAQAi/B,EAAAgB,cAAA,SAAAA,gBACA,GAAA94H,KAAAi4H,aACA,OAAAj4H,KAAAk4H,GAAAtB,GAAA,GAAA52H,KAAA82H,MAAAgC,gBACA,IAAA32F,EAAAniC,KAAA84F,MAAA,EAAA94F,KAAA84F,KAAA94F,KAAA64F,IAEA,QAAAkgC,EAAA,GAAAA,EAAA,EAAAA,IAAA,IAAA52F,EAAA,GAAA42F,IAAA,QAEA,OAAA/4H,KAAA84F,MAAA,EAAAigC,EAAA,GAAAA,EAAA,CACA,EAQAjB,EAAAE,OAAA,SAAAA,SACA,OAAAh4H,KAAA84F,OAAA,GAAA94F,KAAA64F,MAAA,CACA,EAOAi/B,EAAAkB,IAAAlB,EAAAE,OAOAF,EAAAG,WAAA,SAAAA,aACA,OAAAj4H,KAAA+4F,UAAA/4F,KAAA84F,KAAA,CACA,EAQAg/B,EAAAmB,WAAA,SAAAA,aACA,OAAAj5H,KAAA+4F,UAAA/4F,KAAA84F,MAAA,CACA,EAQAg/B,EAAAoB,MAAA,SAAAA,QACA,OAAAl5H,KAAA64F,IAAA,MACA,EAQAi/B,EAAAqB,OAAA,SAAAA,SACA,OAAAn5H,KAAA64F,IAAA,MACA,EASAi/B,EAAAxoF,OAAA,SAAAA,OAAArrC,GACA,IAAA8xH,OAAA9xH,KAAAszH,UAAAtzH,GACA,GAAAjE,KAAA+4F,WAAA90F,EAAA80F,UAAA/4F,KAAA84F,OAAA,QAAA70F,EAAA60F,OAAA,oBACA,OAAA94F,KAAA84F,OAAA70F,EAAA60F,MAAA94F,KAAA64F,MAAA50F,EAAA40F,GACA,EASAi/B,EAAAI,GAAAJ,EAAAxoF,OAQAwoF,EAAAsB,UAAA,SAAAA,UAAAn1H,GACA,OAAAjE,KAAAk4H,GAEAj0H,EACA,EASA6zH,EAAAuB,IAAAvB,EAAAsB,UAQAtB,EAAAwB,GAAAxB,EAAAsB,UAQAtB,EAAAyB,SAAA,SAAAA,SAAAt1H,GACA,OAAAjE,KAAAigC,KAEAh8B,GAAA,CACA,EASA6zH,EAAA0B,GAAA1B,EAAAyB,SAQAzB,EAAA2B,gBAAA,SAAAA,gBAAAx1H,GACA,OAAAjE,KAAAigC,KAEAh8B,IAAA,CACA,EASA6zH,EAAA4B,IAAA5B,EAAA2B,gBAQA3B,EAAAt/D,GAAAs/D,EAAA2B,gBAQA3B,EAAA6B,YAAA,SAAAA,YAAA11H,GACA,OAAAjE,KAAAigC,KAEAh8B,GAAA,CACA,EASA6zH,EAAA8B,GAAA9B,EAAA6B,YAQA7B,EAAA+B,mBAAA,SAAAA,mBAAA51H,GACA,OAAAjE,KAAAigC,KAEAh8B,IAAA,CACA,EASA6zH,EAAAgC,IAAAhC,EAAA+B,mBAQA/B,EAAAiC,GAAAjC,EAAA+B,mBASA/B,EAAAkC,QAAA,SAAAA,QAAA/1H,GACA,IAAA8xH,OAAA9xH,KAAAszH,UAAAtzH,GACA,GAAAjE,KAAAk4H,GAAAj0H,GAAA,SACA,IAAAg2H,EAAAj6H,KAAAi4H,aACAiC,EAAAj2H,EAAAg0H,aACA,GAAAgC,IAAAC,EAAA,SACA,IAAAD,GAAAC,EAAA,SAEA,IAAAl6H,KAAA+4F,SAAA,OAAA/4F,KAAAs4H,IAAAr0H,GAAAg0H,cAAA,IAEA,OAAAh0H,EAAA60F,OAAA,EAAA94F,KAAA84F,OAAA,GAAA70F,EAAA60F,OAAA94F,KAAA84F,MAAA70F,EAAA40F,MAAA,EAAA74F,KAAA64F,MAAA,MACA,EAUAi/B,EAAA73F,KAAA63F,EAAAkC,QAOAlC,EAAAriD,OAAA,SAAAA,SACA,IAAAz1E,KAAA+4F,UAAA/4F,KAAAk4H,GAAAtB,GAAA,OAAAA,EACA,OAAA52H,KAAAm6H,MAAA/2H,IAAAu0H,EACA,EAQAG,EAAAhB,IAAAgB,EAAAriD,OAQAqiD,EAAA10H,IAAA,SAAAA,IAAAg3H,GACA,IAAArE,OAAAqE,KAAA7C,UAAA6C,GAEA,IAAAC,EAAAr6H,KAAA84F,OAAA,GACA,IAAAwhC,EAAAt6H,KAAA84F,KAAA,MACA,IAAAyhC,EAAAv6H,KAAA64F,MAAA,GACA,IAAA2hC,EAAAx6H,KAAA64F,IAAA,MACA,IAAA4hC,EAAAL,EAAAthC,OAAA,GACA,IAAA4hC,EAAAN,EAAAthC,KAAA,MACA,IAAA6hC,EAAAP,EAAAvhC,MAAA,GACA,IAAA+hC,EAAAR,EAAAvhC,IAAA,MACA,IAAAgiC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAA,GAAAR,EAAAI,EACAG,GAAAC,IAAA,GACAA,GAAA,MACAD,GAAAR,EAAAI,EACAG,GAAAC,IAAA,GACAA,GAAA,MACAD,GAAAR,EAAAI,EACAG,GAAAC,IAAA,GACAA,GAAA,MACAD,GAAAR,EAAAI,EACAI,GAAA,MACA,OAAAptB,SAAAstB,GAAA,GAAAC,EAAAH,GAAA,GAAAC,EAAA96H,KAAA+4F,SACA,EASA++B,EAAAmD,SAAA,SAAAA,SAAAC,GACA,IAAAnF,OAAAmF,KAAA3D,UAAA2D,GACA,OAAAl7H,KAAAoD,IAAA83H,EAAApE,MACA,EASAgB,EAAAQ,IAAAR,EAAAmD,SAQAnD,EAAAqD,SAAA,SAAAA,SAAAj7H,GACA,GAAAF,KAAAg4H,SAAA,OAAAh4H,KACA,IAAA+1H,OAAA71H,KAAAq3H,UAAAr3H,GAEA,GAAAw1H,EAAA,CACA,IAAA78B,EAAA68B,EAAA,OAAA11H,KAAA64F,IAAA74F,KAAA84F,KAAA54F,EAAA24F,IAAA34F,EAAA44F,MACA,OAAA2U,SAAA5U,EAAA68B,EAAA,cAAA11H,KAAA+4F,SACA,CAEA,GAAA74F,EAAA83H,SAAA,OAAAh4H,KAAA+4F,SAAAw9B,EAAAC,EACA,GAAAx2H,KAAAk4H,GAAAtB,GAAA,OAAA12H,EAAAg5H,QAAAtC,EAAAJ,EACA,GAAAt2H,EAAAg4H,GAAAtB,GAAA,OAAA52H,KAAAk5H,QAAAtC,EAAAJ,EAEA,GAAAx2H,KAAAi4H,aAAA,CACA,GAAA/3H,EAAA+3H,aAAA,OAAAj4H,KAAA82H,MAAAQ,IAAAp3H,EAAA42H,YAAA,OAAA92H,KAAA82H,MAAAQ,IAAAp3H,GAAA42H,KACA,SAAA52H,EAAA+3H,aAAA,OAAAj4H,KAAAs3H,IAAAp3H,EAAA42H,aAGA,GAAA92H,KAAAw5H,GAAA9B,IAAAx3H,EAAAs5H,GAAA9B,GAAA,OAAA18B,WAAAh7F,KAAAg5F,WAAA94F,EAAA84F,WAAAh5F,KAAA+4F,UAGA,IAAAshC,EAAAr6H,KAAA84F,OAAA,GACA,IAAAwhC,EAAAt6H,KAAA84F,KAAA,MACA,IAAAyhC,EAAAv6H,KAAA64F,MAAA,GACA,IAAA2hC,EAAAx6H,KAAA64F,IAAA,MACA,IAAA4hC,EAAAv6H,EAAA44F,OAAA,GACA,IAAA4hC,EAAAx6H,EAAA44F,KAAA,MACA,IAAA6hC,EAAAz6H,EAAA24F,MAAA,GACA,IAAA+hC,EAAA16H,EAAA24F,IAAA,MACA,IAAAgiC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAA,GAAAR,EAAAI,EACAG,GAAAC,IAAA,GACAA,GAAA,MACAD,GAAAR,EAAAK,EACAE,GAAAC,IAAA,GACAA,GAAA,MACAA,GAAAP,EAAAG,EACAG,GAAAC,IAAA,GACAA,GAAA,MACAD,GAAAR,EAAAM,EACAC,GAAAC,IAAA,GACAA,GAAA,MACAA,GAAAP,EAAAI,EACAE,GAAAC,IAAA,GACAA,GAAA,MACAA,GAAAN,EAAAE,EACAG,GAAAC,IAAA,GACAA,GAAA,MACAD,GAAAR,EAAAO,EAAAN,EAAAK,EAAAJ,EAAAG,EAAAF,EAAAC,EACAI,GAAA,MACA,OAAAptB,SAAAstB,GAAA,GAAAC,EAAAH,GAAA,GAAAC,EAAA96H,KAAA+4F,SACA,EASA++B,EAAAR,IAAAQ,EAAAqD,SASArD,EAAAsD,OAAA,SAAAA,OAAAC,GACA,IAAAtF,OAAAsF,KAAA9D,UAAA8D,GACA,GAAAA,EAAArD,SAAA,MAAAh1H,MAAA,oBAEA,GAAA0yH,EAAA,CAIA,IAAA11H,KAAA+4F,UAAA/4F,KAAA84F,QAAA,YAAAuiC,EAAAxiC,OAAA,GAAAwiC,EAAAviC,QAAA,GAEA,OAAA94F,IACA,CAEA,IAAA64F,GAAA74F,KAAA+4F,SAAA28B,EAAA,SAAAA,EAAA,UAAA11H,KAAA64F,IAAA74F,KAAA84F,KAAAuiC,EAAAxiC,IAAAwiC,EAAAviC,MACA,OAAA2U,SAAA5U,EAAA68B,EAAA,cAAA11H,KAAA+4F,SACA,CAEA,GAAA/4F,KAAAg4H,SAAA,OAAAh4H,KAAA+4F,SAAAw9B,EAAAC,EACA,IAAA8E,EAAAr0D,EAAA3nD,EAEA,IAAAtf,KAAA+4F,SAAA,CAGA,GAAA/4F,KAAAk4H,GAAAtB,GAAA,CACA,GAAAyE,EAAAnD,GAAAP,IAAA0D,EAAAnD,GAAAL,GAAA,OAAAjB,OACA,GAAAyE,EAAAnD,GAAAtB,GAAA,OAAAe,MAAA,CAEA,IAAA4D,EAAAv7H,KAAAw7H,IAAA,GACAF,EAAAC,EAAAnD,IAAAiD,GAAAI,IAAA,GAEA,GAAAH,EAAApD,GAAA1B,GAAA,CACA,OAAA6E,EAAApD,aAAAN,EAAAE,CACA,MACA5wD,EAAAjnE,KAAAs4H,IAAA+C,EAAA/D,IAAAgE,IACAh8G,EAAAg8G,EAAAl4H,IAAA6jE,EAAAmxD,IAAAiD,IACA,OAAA/7G,CACA,CACA,CACA,SAAA+7G,EAAAnD,GAAAtB,GAAA,OAAA52H,KAAA+4F,SAAAw9B,EAAAC,EAEA,GAAAx2H,KAAAi4H,aAAA,CACA,GAAAoD,EAAApD,aAAA,OAAAj4H,KAAA82H,MAAAsB,IAAAiD,EAAAvE,OACA,OAAA92H,KAAA82H,MAAAsB,IAAAiD,GAAAvE,KACA,SAAAuE,EAAApD,aAAA,OAAAj4H,KAAAo4H,IAAAiD,EAAAvE,aAEAx3G,EAAAk3G,CACA,MAGA,IAAA6E,EAAAtiC,SAAAsiC,IAAAK,aACA,GAAAL,EAAAzB,GAAA55H,MAAA,OAAAu2H,EACA,GAAA8E,EAAAzB,GAAA55H,KAAA27H,KAAA,IACA,OAAA/D,EACAt4G,EAAAi3G,CACA,CAOAtvD,EAAAjnE,KAEA,MAAAinE,EAAA6yD,IAAAuB,GAAA,CAGAC,EAAA17H,KAAAD,IAAA,EAAAC,KAAA2mB,MAAA0gD,EAAA+xB,WAAAqiC,EAAAriC,aAGA,IAAA4iC,EAAAh8H,KAAAiZ,KAAAjZ,KAAA5B,IAAAs9H,GAAA17H,KAAA45D,KACAiL,EAAAm3D,GAAA,KAAA1E,EAAA,EAAA0E,EAAA,IAGAC,EAAA7gC,WAAAsgC,GACAQ,EAAAD,EAAAvE,IAAA+D,GAEA,MAAAS,EAAA7D,cAAA6D,EAAAlC,GAAA3yD,GAAA,CACAq0D,GAAA72D,EACAo3D,EAAA7gC,WAAAsgC,EAAAt7H,KAAA+4F,UACA+iC,EAAAD,EAAAvE,IAAA+D,EACA,CAIA,GAAAQ,EAAA7D,SAAA6D,EAAAlE,EACAr4G,IAAAlc,IAAAy4H,GACA50D,IAAAqxD,IAAAwD,EACA,CAEA,OAAAx8G,CACA,EASAw4G,EAAAM,IAAAN,EAAAsD,OAQAtD,EAAAiE,OAAA,SAAAA,OAAAV,GACA,IAAAtF,OAAAsF,KAAA9D,UAAA8D,GAEA,GAAA3F,EAAA,CACA,IAAA78B,GAAA74F,KAAA+4F,SAAA28B,EAAA,SAAAA,EAAA,UAAA11H,KAAA64F,IAAA74F,KAAA84F,KAAAuiC,EAAAxiC,IAAAwiC,EAAAviC,MACA,OAAA2U,SAAA5U,EAAA68B,EAAA,cAAA11H,KAAA+4F,SACA,CAEA,OAAA/4F,KAAAs4H,IAAAt4H,KAAAo4H,IAAAiD,GAAA/D,IAAA+D,GACA,EASAvD,EAAA18D,IAAA08D,EAAAiE,OAQAjE,EAAA7wD,IAAA6wD,EAAAiE,OAOAjE,EAAAqC,IAAA,SAAAA,MACA,OAAA1sB,UAAAztG,KAAA64F,KAAA74F,KAAA84F,KAAA94F,KAAA+4F,SACA,EAQA++B,EAAAkE,kBAAA,SAAAA,oBACA,OAAAh8H,KAAA84F,KAAAl5F,KAAAq2H,MAAAj2H,KAAA84F,MAAAl5F,KAAAq2H,MAAAj2H,KAAA64F,KAAA,EACA,EASAi/B,EAAAmE,IAAAnE,EAAAkE,kBAOAlE,EAAAoE,mBAAA,SAAAA,qBACA,OAAAl8H,KAAA64F,IAAAm9B,MAAAh2H,KAAA64F,KAAAm9B,MAAAh2H,KAAA84F,MAAA,EACA,EASAg/B,EAAAqE,IAAArE,EAAAoE,mBAQApE,EAAAsE,IAAA,SAAAA,IAAAn4H,GACA,IAAA8xH,OAAA9xH,KAAAszH,UAAAtzH,GACA,OAAAwpG,SAAAztG,KAAA64F,IAAA50F,EAAA40F,IAAA74F,KAAA84F,KAAA70F,EAAA60F,KAAA94F,KAAA+4F,SACA,EASA++B,EAAAuE,GAAA,SAAAA,GAAAp4H,GACA,IAAA8xH,OAAA9xH,KAAAszH,UAAAtzH,GACA,OAAAwpG,SAAAztG,KAAA64F,IAAA50F,EAAA40F,IAAA74F,KAAA84F,KAAA70F,EAAA60F,KAAA94F,KAAA+4F,SACA,EASA++B,EAAAwE,IAAA,SAAAA,IAAAr4H,GACA,IAAA8xH,OAAA9xH,KAAAszH,UAAAtzH,GACA,OAAAwpG,SAAAztG,KAAA64F,IAAA50F,EAAA40F,IAAA74F,KAAA84F,KAAA70F,EAAA60F,KAAA94F,KAAA+4F,SACA,EASA++B,EAAAyE,UAAA,SAAAA,UAAAC,GACA,GAAAzG,OAAAyG,OAAAzE,QACA,IAAAyE,GAAA,eAAAx8H,UAAA,GAAAw8H,EAAA,UAAA/uB,SAAAztG,KAAA64F,KAAA2jC,EAAAx8H,KAAA84F,MAAA0jC,EAAAx8H,KAAA64F,MAAA,GAAA2jC,EAAAx8H,KAAA+4F,eAAA,OAAA0U,SAAA,EAAAztG,KAAA64F,KAAA2jC,EAAA,GAAAx8H,KAAA+4F,SACA,EASA++B,EAAA2D,IAAA3D,EAAAyE,UAQAzE,EAAA2E,WAAA,SAAAA,WAAAD,GACA,GAAAzG,OAAAyG,OAAAzE,QACA,IAAAyE,GAAA,eAAAx8H,UAAA,GAAAw8H,EAAA,UAAA/uB,SAAAztG,KAAA64F,MAAA2jC,EAAAx8H,KAAA84F,MAAA,GAAA0jC,EAAAx8H,KAAA84F,MAAA0jC,EAAAx8H,KAAA+4F,eAAA,OAAA0U,SAAAztG,KAAA84F,MAAA0jC,EAAA,GAAAx8H,KAAA84F,MAAA,OAAA94F,KAAA+4F,SACA,EASA++B,EAAA0D,IAAA1D,EAAA2E,WAQA3E,EAAA4E,mBAAA,SAAAA,mBAAAF,GACA,GAAAzG,OAAAyG,OAAAzE,QACA,IAAAyE,GAAA,eAAAx8H,KACA,GAAAw8H,EAAA,UAAA/uB,SAAAztG,KAAA64F,MAAA2jC,EAAAx8H,KAAA84F,MAAA,GAAA0jC,EAAAx8H,KAAA84F,OAAA0jC,EAAAx8H,KAAA+4F,UACA,GAAAyjC,IAAA,UAAA/uB,SAAAztG,KAAA84F,KAAA,EAAA94F,KAAA+4F,UACA,OAAA0U,SAAAztG,KAAA84F,OAAA0jC,EAAA,KAAAx8H,KAAA+4F,SACA,EASA++B,EAAA6D,KAAA7D,EAAA4E,mBAQA5E,EAAA6E,MAAA7E,EAAA4E,mBAQA5E,EAAA8E,WAAA,SAAAA,WAAAJ,GACA,IAAAjoG,EACA,GAAAwhG,OAAAyG,OAAAzE,QACA,IAAAyE,GAAA,eAAAx8H,KACA,GAAAw8H,IAAA,UAAA/uB,SAAAztG,KAAA84F,KAAA94F,KAAA64F,IAAA74F,KAAA+4F,UAEA,GAAAyjC,EAAA,IACAjoG,EAAA,GAAAioG,EACA,OAAA/uB,SAAAztG,KAAA64F,KAAA2jC,EAAAx8H,KAAA84F,OAAAvkE,EAAAv0B,KAAA84F,MAAA0jC,EAAAx8H,KAAA64F,MAAAtkE,EAAAv0B,KAAA+4F,SACA,CAEAyjC,GAAA,GACAjoG,EAAA,GAAAioG,EACA,OAAA/uB,SAAAztG,KAAA84F,MAAA0jC,EAAAx8H,KAAA64F,MAAAtkE,EAAAv0B,KAAA64F,KAAA2jC,EAAAx8H,KAAA84F,OAAAvkE,EAAAv0B,KAAA+4F,SACA,EASA++B,EAAA+E,KAAA/E,EAAA8E,WAQA9E,EAAAgF,YAAA,SAAAA,YAAAN,GACA,IAAAjoG,EACA,GAAAwhG,OAAAyG,OAAAzE,QACA,IAAAyE,GAAA,eAAAx8H,KACA,GAAAw8H,IAAA,UAAA/uB,SAAAztG,KAAA84F,KAAA94F,KAAA64F,IAAA74F,KAAA+4F,UAEA,GAAAyjC,EAAA,IACAjoG,EAAA,GAAAioG,EACA,OAAA/uB,SAAAztG,KAAA84F,MAAAvkE,EAAAv0B,KAAA64F,MAAA2jC,EAAAx8H,KAAA64F,KAAAtkE,EAAAv0B,KAAA84F,OAAA0jC,EAAAx8H,KAAA+4F,SACA,CAEAyjC,GAAA,GACAjoG,EAAA,GAAAioG,EACA,OAAA/uB,SAAAztG,KAAA64F,KAAAtkE,EAAAv0B,KAAA84F,OAAA0jC,EAAAx8H,KAAA84F,MAAAvkE,EAAAv0B,KAAA64F,MAAA2jC,EAAAx8H,KAAA+4F,SACA,EASA++B,EAAAiF,KAAAjF,EAAAgF,YAOAhF,EAAAkF,SAAA,SAAAA,WACA,IAAAh9H,KAAA+4F,SAAA,OAAA/4F,KACA,OAAAytG,SAAAztG,KAAA64F,IAAA74F,KAAA84F,KAAA,MACA,EAQAg/B,EAAA4D,WAAA,SAAAA,aACA,GAAA17H,KAAA+4F,SAAA,OAAA/4F,KACA,OAAAytG,SAAAztG,KAAA64F,IAAA74F,KAAA84F,KAAA,KACA,EASAg/B,EAAAmF,QAAA,SAAAA,QAAAzkE,GACA,OAAAA,EAAAx4D,KAAAk9H,YAAAl9H,KAAAm9H,WACA,EAQArF,EAAAoF,UAAA,SAAAA,YACA,IAAAhiE,EAAAl7D,KAAA84F,KACA79B,EAAAj7D,KAAA64F,IACA,OAAA59B,EAAA,IAAAA,IAAA,MAAAA,IAAA,OAAAA,IAAA,GAAAC,EAAA,IAAAA,IAAA,MAAAA,IAAA,OAAAA,IAAA,GACA,EAQA48D,EAAAqF,UAAA,SAAAA,YACA,IAAAjiE,EAAAl7D,KAAA84F,KACA79B,EAAAj7D,KAAA64F,IACA,OAAA39B,IAAA,GAAAA,IAAA,OAAAA,IAAA,MAAAA,EAAA,IAAAD,IAAA,GAAAA,IAAA,OAAAA,IAAA,MAAAA,EAAA,IACA,EAUA7L,KAAAguE,UAAA,SAAAA,UAAA3tE,EAAAspC,EAAAvgC,GACA,OAAAA,EAAApJ,KAAAiuE,YAAA5tE,EAAAspC,GAAA3pC,KAAAkuE,YAAA7tE,EAAAspC,EACA,EASA3pC,KAAAiuE,YAAA,SAAAA,YAAA5tE,EAAAspC,GACA,WAAA3pC,KAAAK,EAAA,GAAAA,EAAA,MAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,GAAAA,EAAA,MAAAA,EAAA,OAAAA,EAAA,OAAAspC,EACA,EASA3pC,KAAAkuE,YAAA,SAAAA,YAAA7tE,EAAAspC,GACA,WAAA3pC,KAAAK,EAAA,OAAAA,EAAA,OAAAA,EAAA,MAAAA,EAAA,GAAAA,EAAA,OAAAA,EAAA,OAAAA,EAAA,MAAAA,EAAA,GAAAspC,EACA,EAEA,IAAAwkC,EAAAnuE,KACA90D,EAAA0iE,QAAAugE,EACA,kBAAAjjI,IAAA0iE,QAAA1iE,CACA,CAp5CA,CAo5CA,IACA,UAAA22F,SAAA,YAAAA,OAAAusC,IAAAvsC,OAAA,sBAAA7hC,CAAA,SACA,QAAA/0D,EAAAC,QAAA80D,C,urUCt5CA,IAAAquE,yBAAA,GAGA,SAAArjI,oBAAAsjI,GAEA,IAAAC,EAAAF,yBAAAC,GACA,GAAAC,IAAAr5H,UAAA,CACA,OAAAq5H,EAAArjI,OACA,CAEA,IAAAD,EAAAojI,yBAAAC,GAAA,CAGApjI,QAAA,IAIA,IAAAsjI,EAAA,KACA,IACAC,oBAAAH,GAAAtgI,KAAA/C,EAAAC,QAAAD,IAAAC,QAAAF,qBACAwjI,EAAA,KACA,SACA,GAAAA,SAAAH,yBAAAC,EACA,CAGA,OAAArjI,EAAAC,OACA,C,MC3BAF,oBAAAk/E,EAAA,CAAAh/E,EAAAwjI,KACA,QAAA3gI,KAAA2gI,EAAA,CACA,GAAA1jI,oBAAA6uF,EAAA60C,EAAA3gI,KAAA/C,oBAAA6uF,EAAA3uF,EAAA6C,GAAA,CACAH,OAAA2B,eAAArE,EAAA6C,EAAA,CAAA6d,WAAA,KAAAjE,IAAA+mH,EAAA3gI,IACA,CACA,E,WCNA/C,oBAAA6uF,EAAA,CAAA1gF,EAAA0vF,IAAAj7F,OAAAC,UAAAC,eAAAE,KAAAmL,EAAA0vF,E,KCCA,UAAA79F,sBAAA,YAAAA,oBAAA6R,GAAA,IAAAqR,IAAA,gBAAAm4G,KAAAsI,SAAApgI,kBAAA83H,IAAA9hF,MAAA,+B,oMCDA,MAAAqqF,EAAA,GAEA,MAAAC,WAAA,CAAAjpE,EAAA,IAAA7uD,GAAA,KAAAA,EAAA6uD,KAEA,MAAAkpE,YAAA,CAAAlpE,EAAA,IAAA7uD,GAAA,QAAA6uD,OAAA7uD,KAEA,MAAAg4H,YAAA,CAAAnpE,EAAA,KAAAub,EAAAlE,EAAA5C,IAAA,QAAAzU,OAAAub,KAAAlE,KAAA5C,KAEA,MAAAqd,EAAA,CACAjQ,SAAA,CACAp1E,MAAA,MAEA0oF,KAAA,OACAC,IAAA,OACAC,OAAA,OACAC,UAAA,OACA8zC,SAAA,QACAn0C,QAAA,OACAM,OAAA,OACAC,cAAA,QAEAzjB,MAAA,CACAwC,MAAA,QACAgH,IAAA,QACAlE,MAAA,QACA4F,OAAA,QACAxI,KAAA,QACA2E,QAAA,QACAhE,KAAA,QACA2H,MAAA,QAGAssD,YAAA,QACAh6D,KAAA,QACAkI,KAAA,QACA+xD,UAAA,QACAC,YAAA,QACAC,aAAA,QACAC,WAAA,QACAC,cAAA,QACAC,WAAA,QACAC,YAAA,SAEAC,QAAA,CACA7zC,QAAA,QACAC,MAAA,QACAC,QAAA,QACAC,SAAA,QACAC,OAAA,QACAC,UAAA,QACAC,OAAA,QACAC,QAAA,QAGAuzC,cAAA,SACAtzC,OAAA,SACAC,OAAA,SACAszC,YAAA,SACAC,cAAA,SACAC,eAAA,SACAC,aAAA,SACAC,gBAAA,SACAC,aAAA,SACAC,cAAA,WAIA,MAAAC,EAAAtiI,OAAAmG,KAAA2jF,EAAAjQ,UACA,MAAA0oD,EAAAviI,OAAAmG,KAAA2jF,EAAA/f,OACA,MAAAy4D,EAAAxiI,OAAAmG,KAAA2jF,EAAA+3C,SACA,MAAA1sD,EAAA,IAAAotD,KAAAC,GAEA,SAAAC,iBACA,MAAAv1C,EAAA,IAAA9lE,IAEA,UAAAs7G,EAAAhqC,KAAA14F,OAAAk3B,QAAA4yD,GAAA,CACA,UAAA64C,EAAAhhD,KAAA3hF,OAAAk3B,QAAAwhE,GAAA,CACA5O,EAAA64C,GAAA,CACAxnE,KAAA,KAAAwmB,EAAA,MACAxzE,MAAA,KAAAwzE,EAAA,OAGA+W,EAAAiqC,GAAA74C,EAAA64C,GAEAz1C,EAAA1uF,IAAAmjF,EAAA,GAAAA,EAAA,GACA,CAEA3hF,OAAA2B,eAAAmoF,EAAA44C,EAAA,CACA9gI,MAAA82F,EACA16E,WAAA,OAEA,CAEAhe,OAAA2B,eAAAmoF,EAAA,SACAloF,MAAAsrF,EACAlvE,WAAA,QAGA8rE,EAAA/f,MAAA57D,MAAA,QACA27E,EAAA+3C,QAAA1zH,MAAA,QAEA27E,EAAA/f,MAAA3oE,KAAA6/H,aACAn3C,EAAA/f,MAAA7C,QAAAg6D,cACAp3C,EAAA/f,MAAA64D,QAAAzB,cACAr3C,EAAA+3C,QAAAzgI,KAAA6/H,WAAAD,GACAl3C,EAAA+3C,QAAA36D,QAAAg6D,YAAAF,GACAl3C,EAAA+3C,QAAAe,QAAAzB,YAAAH,GAGAhhI,OAAAgqF,iBAAAF,EAAA,CACA+4C,aAAA,CACA,KAAAjhI,CAAA2xE,EAAAlE,EAAA5C,GAGA,GAAA8G,IAAAlE,OAAA5C,EAAA,CACA,GAAA8G,EAAA,GACA,SACA,CAEA,GAAAA,EAAA,KACA,UACA,CAEA,OAAA3wE,KAAA05D,OAAAiX,EAAA,cACA,CAEA,UACA,GAAA3wE,KAAA05D,MAAAiX,EAAA,OACA,EAAA3wE,KAAA05D,MAAA+S,EAAA,OACAzsE,KAAA05D,MAAAmQ,EAAA,MACA,EACAzuD,WAAA,OAEA8kH,SAAA,CACA,KAAAlhI,CAAAmlE,GACA,MAAAuZ,EAAA,yBAAA1uB,KAAAmV,EAAA7kD,SAAA,KACA,IAAAo+D,EAAA,CACA,aACA,CAEA,IAAAnW,GAAAmW,EAEA,GAAAnW,EAAAvrE,SAAA,GACAurE,EAAA,IAAAA,GAAAlrE,KAAAytF,SAAA/3E,KAAA,GACA,CAEA,MAAAu1D,EAAAt/D,OAAAolC,SAAAm6B,EAAA,IAEA,OAEAD,GAAA,OACAA,GAAA,MACAA,EAAA,IAGA,EACAlsD,WAAA,OAEA+kH,aAAA,CACAnhI,MAAAmlE,GAAA+iB,EAAA+4C,gBAAA/4C,EAAAg5C,SAAA/7D,IACA/oD,WAAA,OAEAglH,cAAA,CACA,KAAAphI,CAAAuH,GACA,GAAAA,EAAA,GACA,UAAAA,CACA,CAEA,GAAAA,EAAA,IACA,WAAAA,EAAA,EACA,CAEA,IAAAoqE,EACA,IAAAlE,EACA,IAAA5C,EAEA,GAAAtjE,GAAA,KACAoqE,IAAApqE,EAAA,eACAkmE,EAAAkE,EACA9G,EAAA8G,CACA,MACApqE,GAAA,GAEA,MAAA85H,EAAA95H,EAAA,GAEAoqE,EAAA3wE,KAAA2mB,MAAApgB,EAAA,MACAkmE,EAAAzsE,KAAA2mB,MAAA05G,EAAA,KACAx2D,EAAAw2D,EAAA,GACA,CAEA,MAAArhI,EAAAgB,KAAAD,IAAA4wE,EAAAlE,EAAA5C,GAAA,EAEA,GAAA7qE,IAAA,GACA,SACA,CAGA,IAAAmd,EAAA,IAAAnc,KAAA05D,MAAAmQ,IAAA,EAAA7pE,KAAA05D,MAAA+S,IAAA,EAAAzsE,KAAA05D,MAAAiX,IAEA,GAAA3xE,IAAA,GACAmd,GAAA,EACA,CAEA,OAAAA,CACA,EACAf,WAAA,OAEAklH,UAAA,CACAthI,MAAA,CAAA2xE,EAAAlE,EAAA5C,IAAAqd,EAAAk5C,cAAAl5C,EAAA+4C,aAAAtvD,EAAAlE,EAAA5C,IACAzuD,WAAA,OAEAmlH,UAAA,CACAvhI,MAAAmlE,GAAA+iB,EAAAk5C,cAAAl5C,EAAAi5C,aAAAh8D,IACA/oD,WAAA,SAIA,OAAA8rE,CACA,CAEA,MAAAD,EAAA44C,iBAEA,MAAAW,EAAA,EC9NA,MAAAC,EAAA7K,6CAAAC,IAAAD,CAAA,gBCAA,MAAA8K,EAAA9K,6CAAAC,IAAAD,CAAA,WCAA,MAAA+K,EAAA/K,6CAAAC,IAAAD,CAAA,YCMA,SAAA5oC,QAAAH,EAAAC,GAAA8zC,WAAAC,KAAAD,WAAAC,KAAAhjI,KAAA4iI,EAAA3zC,OACA,MAAAlxB,EAAAixB,EAAAjuD,WAAA,QAAAiuD,EAAA7wF,SAAA,WACA,MAAAs1G,EAAAxkB,EAAApxF,QAAAkgE,EAAAixB,GACA,MAAAi0C,EAAAh0C,EAAApxF,QAAA,MACA,OAAA41G,KAAA,IAAAwvB,KAAA,GAAAxvB,EAAAwvB,EACA,CAEA,MAAA5lI,OAAAulI,EAEA,IAAAM,EACA,GACA/zC,QAAA,aACAA,QAAA,cACAA,QAAA,gBACAA,QAAA,eACA,CACA+zC,EAAA,CACA,SACA/zC,QAAA,UACAA,QAAA,WACAA,QAAA,eACAA,QAAA,gBACA,CACA+zC,EAAA,CACA,CAEA,SAAAC,gBACA,mBAAA9lI,EAAA,CACA,GAAAA,EAAAgyF,cAAA,QACA,QACA,CAEA,GAAAhyF,EAAAgyF,cAAA,SACA,QACA,CAEA,OAAAhyF,EAAAgyF,YAAAlxF,SAAA,IAAAgE,KAAAF,IAAAkI,OAAAolC,SAAAlyC,EAAAgyF,YAAA,MACA,CACA,CAEA,SAAAC,eAAA3X,GACA,GAAAA,IAAA,GACA,YACA,CAEA,OACAA,QACA4X,SAAA,KACAC,OAAA7X,GAAA,EACA8X,OAAA9X,GAAA,EAEA,CAEA,SAAAyrD,eAAAC,GAAAC,cAAAC,aAAA,UACA,MAAAC,EAAAL,gBACA,GAAAK,IAAA38H,UAAA,CACAq8H,EAAAM,CACA,CAEA,MAAAp0C,EAAAm0C,EAAAL,EAAAM,EAEA,GAAAp0C,IAAA,GACA,QACA,CAEA,GAAAm0C,EAAA,CACA,GAAAp0C,QAAA,cACAA,QAAA,eACAA,QAAA,oBACA,QACA,CAEA,GAAAA,QAAA,cACA,QACA,CACA,CAIA,gBAAA9xF,GAAA,eAAAA,EAAA,CACA,QACA,CAEA,GAAAgmI,IAAAC,GAAAl0C,IAAAvoF,UAAA,CACA,QACA,CAEA,MAAA5E,EAAAmtF,GAAA,EAEA,GAAA/xF,EAAA+yF,OAAA,QACA,OAAAnuF,CACA,CAEA,GAAA2gI,EAAAjzC,WAAA,SAGA,MAAAC,EAAAizC,EAAAhzC,UAAA57E,MAAA,KACA,GACA9J,OAAAylF,EAAA,SACAzlF,OAAAylF,EAAA,WACA,CACA,OAAAzlF,OAAAylF,EAAA,cACA,CAEA,QACA,CAEA,UAAAvyF,EAAA,CACA,sBAAAA,GAAA,kBAAAA,EAAA,CACA,QACA,CAEA,oEAAAwB,MAAA+8D,QAAAv+D,OAAA0yF,UAAA,YACA,QACA,CAEA,OAAA9tF,CACA,CAEA,wBAAA5E,EAAA,CACA,sCAAA8lC,KAAA9lC,EAAA2yF,kBAAA,GACA,CAEA,GAAA3yF,EAAAomI,YAAA,aACA,QACA,CAEA,GAAApmI,EAAA+yF,OAAA,eACA,QACA,CAEA,oBAAA/yF,EAAA,CACA,MAAA4yF,EAAA9lF,OAAAolC,UAAAlyC,EAAA6yF,sBAAA,IAAAj8E,MAAA,YAEA,OAAA5W,EAAA8yF,cACA,iBACA,OAAAF,GAAA,KACA,CAEA,sBACA,QACA,EAGA,CAEA,oBAAA9sD,KAAA9lC,EAAA+yF,MAAA,CACA,QACA,CAEA,iEAAAjtD,KAAA9lC,EAAA+yF,MAAA,CACA,QACA,CAEA,iBAAA/yF,EAAA,CACA,QACA,CAEA,OAAA4E,CACA,CAEA,SAAAyhI,oBAAAxtH,EAAA7W,EAAA,IACA,MAAAs4E,EAAAyrD,eAAAltH,EAAA,CACAotH,YAAAptH,KAAAw5E,SACArwF,IAGA,OAAAiwF,eAAA3X,EACA,CAEA,MAAA8R,EAAA,CACA6G,OAAAozC,oBAAA,CAAAh0C,MAAAozC,EAAAa,OAAA,KACApzC,OAAAmzC,oBAAA,CAAAh0C,MAAAozC,EAAAa,OAAA,MAGA,MAAAC,EAAA,ECpLA,SAAAC,iBAAAlsE,EAAAvrC,EAAA+7D,GACA,IAAAvhF,EAAA+wD,EAAA95D,QAAAuuB,GACA,GAAAxlB,KAAA,GACA,OAAA+wD,CACA,CAEA,MAAAmsE,EAAA13G,EAAAjuB,OACA,IAAA4lI,EAAA,EACA,IAAAC,EAAA,GACA,GACAA,GAAArsE,EAAAz3D,MAAA6jI,EAAAn9H,GAAAwlB,EAAA+7D,EACA47C,EAAAn9H,EAAAk9H,EACAl9H,EAAA+wD,EAAA95D,QAAAuuB,EAAA23G,EACA,OAAAn9H,KAAA,GAEAo9H,GAAArsE,EAAAz3D,MAAA6jI,GACA,OAAAC,CACA,CAEA,SAAAC,+BAAAtsE,EAAAoG,EAAAmmE,EAAAt9H,GACA,IAAAm9H,EAAA,EACA,IAAAC,EAAA,GACA,GACA,MAAAG,EAAAxsE,EAAA/wD,EAAA,UACAo9H,GAAArsE,EAAAz3D,MAAA6jI,EAAAI,EAAAv9H,EAAA,EAAAA,GAAAm3D,GAAAomE,EAAA,aAAAD,EACAH,EAAAn9H,EAAA,EACAA,EAAA+wD,EAAA95D,QAAA,KAAAkmI,EACA,OAAAn9H,KAAA,GAEAo9H,GAAArsE,EAAAz3D,MAAA6jI,GACA,OAAAC,CACA,CCzBA,MAAA1zC,OAAA8zC,EAAA7zC,OAAA8zC,GAAAT,EAEA,MAAAU,EAAA5wH,OAAA,aACA,MAAA6wH,EAAA7wH,OAAA,UACA,MAAA8wH,EAAA9wH,OAAA,YAGA,MAAA+wH,EAAA,CACA,OACA,OACA,UACA,WAGA,MAAAC,EAAAnlI,OAAAzC,OAAA,MAEA,MAAA6nI,aAAA,CAAAluD,EAAAp3E,EAAA,MACA,GAAAA,EAAAs4E,SAAAxtE,OAAA2mC,UAAAzxC,EAAAs4E,QAAAt4E,EAAAs4E,OAAA,GAAAt4E,EAAAs4E,OAAA,IACA,UAAApyE,MAAA,sDACA,CAGA,MAAAq/H,EAAAR,IAAAzsD,MAAA,EACAlB,EAAAkB,MAAAt4E,EAAAs4E,QAAA9wE,UAAA+9H,EAAAvlI,EAAAs4E,KAAA,EAGA,MAAAktD,MACA,WAAAxiI,CAAAhD,GAEA,OAAAylI,aAAAzlI,EACA,EAGA,MAAAylI,aAAAzlI,IACA,MAAA0lI,MAAA,IAAAC,MAAA9wH,KAAA,KACAywH,aAAAI,MAAA1lI,GAEAE,OAAAunH,eAAAie,MAAAE,YAAAzlI,WAEA,OAAAulI,KAAA,EAGA,SAAAE,YAAA5lI,GACA,OAAAylI,aAAAzlI,EACA,CAEAE,OAAAunH,eAAAme,YAAAzlI,UAAAa,SAAAb,WAEA,UAAA0iI,EAAAhhD,KAAA3hF,OAAAk3B,QAAAksG,GAAA,CACA+B,EAAAxC,GAAA,CACA,GAAA5oH,GACA,MAAA6wE,EAAA+6C,cAAA3iI,KAAA4iI,aAAAjkD,EAAAxmB,KAAAwmB,EAAAxzE,MAAAnL,KAAAgiI,IAAAhiI,KAAAiiI,IACAjlI,OAAA2B,eAAAqB,KAAA2/H,EAAA,CAAA/gI,MAAAgpF,IACA,OAAAA,CACA,EAEA,CAEAu6C,EAAAU,QAAA,CACA,GAAA9rH,GACA,MAAA6wE,EAAA+6C,cAAA3iI,UAAAgiI,GAAA,MACAhlI,OAAA2B,eAAAqB,KAAA,WAAApB,MAAAgpF,IACA,OAAAA,CACA,GAGA,MAAAk7C,aAAA,CAAAx+D,EAAA8Q,EAAAnqD,KAAA83G,KACA,GAAAz+D,IAAA,OACA,GAAA8Q,IAAA,WACA,OAAAgrD,EAAAn1G,GAAA20G,WAAAmD,EACA,CAEA,GAAA3tD,IAAA,WACA,OAAAgrD,EAAAn1G,GAAAi5C,QAAAk8D,EAAAP,gBAAAkD,GACA,CAEA,OAAA3C,EAAAn1G,GAAA7sB,KAAAgiI,EAAAF,aAAA6C,GACA,CAEA,GAAAz+D,IAAA,OACA,OAAAw+D,aAAA,MAAA1tD,EAAAnqD,KAAAm1G,EAAAN,YAAAiD,GACA,CAEA,OAAA3C,EAAAn1G,GAAAq5C,MAAAy+D,EAAA,EAGA,MAAAC,EAAA,wBAEA,UAAA1+D,KAAA0+D,EAAA,CACAb,EAAA79D,GAAA,CACA,GAAAvtD,GACA,MAAAq+D,SAAAp1E,KACA,mBAAA+iI,GACA,MAAAE,EAAAL,aAAAE,aAAAx+D,EAAA49D,EAAA9sD,GAAA,WAAA2tD,GAAA3C,EAAAr5D,MAAA57D,MAAAnL,KAAAgiI,IACA,OAAAW,cAAA3iI,KAAAijI,EAAAjjI,KAAAiiI,GACA,CACA,GAGA,MAAAiB,EAAA,KAAA5+D,EAAA,GAAAxmC,cAAAwmC,EAAA3mE,MAAA,GACAwkI,EAAAe,GAAA,CACA,GAAAnsH,GACA,MAAAq+D,SAAAp1E,KACA,mBAAA+iI,GACA,MAAAE,EAAAL,aAAAE,aAAAx+D,EAAA49D,EAAA9sD,GAAA,aAAA2tD,GAAA3C,EAAAvB,QAAA1zH,MAAAnL,KAAAgiI,IACA,OAAAW,cAAA3iI,KAAAijI,EAAAjjI,KAAAiiI,GACA,CACA,EAEA,CAEA,MAAAl6C,EAAA/qF,OAAAgqF,kBAAA,YACAm7C,EACA/sD,MAAA,CACAp6D,WAAA,KACA,GAAAjE,GACA,OAAA/W,KAAA+hI,GAAA3sD,KACA,EACA,GAAA55E,CAAA45E,GACAp1E,KAAA+hI,GAAA3sD,OACA,KAIA,MAAAwtD,aAAA,CAAAzqE,EAAAhtD,EAAAyD,KACA,IAAAu0H,EACA,IAAAC,EACA,GAAAx0H,IAAAtK,UAAA,CACA6+H,EAAAhrE,EACAirE,EAAAj4H,CACA,MACAg4H,EAAAv0H,EAAAu0H,QAAAhrE,EACAirE,EAAAj4H,EAAAyD,EAAAw0H,QACA,CAEA,OACAjrE,OACAhtD,QACAg4H,UACAC,WACAx0H,SACA,EAGA,MAAA+zH,cAAA,CAAA5uD,EAAAsvD,EAAAC,KAGA,MAAA17C,QAAA,IAAAm7C,IAAAl7C,WAAAD,QAAAm7C,EAAAnnI,SAAA,KAAAmnI,EAAA,GAAAA,EAAApxH,KAAA,MAIA3U,OAAAunH,eAAA38B,QAAAG,GAEAH,QAAAm6C,GAAAhuD,EACA6T,QAAAo6C,GAAAqB,EACAz7C,QAAAq6C,GAAAqB,EAEA,OAAA17C,OAAA,EAGA,MAAAC,WAAA,CAAA9T,EAAA3e,KACA,GAAA2e,EAAAqB,OAAA,IAAAhgB,EAAA,CACA,OAAA2e,EAAAkuD,GAAA,GAAA7sE,CACA,CAEA,IAAA6tE,EAAAlvD,EAAAiuD,GAEA,GAAAiB,IAAA3+H,UAAA,CACA,OAAA8wD,CACA,CAEA,MAAA+tE,UAAAC,YAAAH,EACA,GAAA7tE,EAAA5+C,SAAA,MACA,MAAAysH,IAAA3+H,UAAA,CAIA8wD,EAAAksE,iBAAAlsE,EAAA6tE,EAAA93H,MAAA83H,EAAA9qE,MAEA8qE,IAAAr0H,MACA,CACA,CAKA,MAAA20H,EAAAnuE,EAAA95D,QAAA,MACA,GAAAioI,KAAA,GACAnuE,EAAAssE,+BAAAtsE,EAAAguE,EAAAD,EAAAI,EACA,CAEA,OAAAJ,EAAA/tE,EAAAguE,CAAA,EAGApmI,OAAAgqF,iBAAA07C,YAAAzlI,UAAAklI,GAEA,MAAAK,EAAAE,cACA,MAAAc,EAAAd,YAAA,CAAAttD,MAAA0sD,IAAA1sD,MAAA,IAoBA,MAAAhf,EAAA,EC9NA,MAAAqtE,mBAAAC,GAAAC,EAAA3hH,OAAA4hH,QAAA,EAAAxuD,QAAA4Q,QAAAE,YAAAtpF,cACA,MAAAinI,EAAAC,YAAA1uD,GACA,SAAAsuD,EAAA,IAAA19C,KAAA5vB,EAAAiW,UAAA6Z,KAAAw9C,EAAAG,EAAAE,cAAA3uD,OAAAx4E,GAAA,IAGA,MAAAknI,YAAA1uD,IACA,OAAAA,GACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,cACA,QACA,OAAAA,EAAAt3C,cACA,EAGA,MAAAimG,cAAA3uD,IACA,OAAAA,GACA,WACA,OAAAhf,EAAAiW,MACA,WACA,OAAAjW,EAAA6b,OACA,YACA,OAAA7b,EAAAma,IACA,YACA,OAAAna,EAAAqT,KACA,QACA,OAAArT,EAAA2b,MACA,EAGA,MAAAiyD,WAAA,KACA,MAAAN,aAAA,CAAA5mH,EAAAiqD,MAAAjqD,GACA,SAAA6mH,EAAA/b,cAAA,CACA5lG,OAAA2hH,EAAA3hH,OAAAiiH,QAEAN,EAAA3hH,OAAAkkE,UAAA,CAAAlkE,OAAA,wBAAA2hH,EAAA3hH,OAAAgkE,MAAA,CAAAA,MAAA,iBAAAy9C,mBAAAC,eACA/b,WAAA,KAAAgc,EAAAhc,WAAAoG,UACA,E,gEC5CA,MAAAmW,EAAA1O,6CAAAC,IAAAD,CAAA,UCCA,MAAA2O,GAAA,IAAAz2B,EAAAltF,IACAgkC,SAAAkpD,EAAAjtF,GAAAinC,iBACAjD,YAAA,yBACA33C,QACA,MAAAs3H,GAAA,IAAA12B,EAAAltF,IACAgkC,SAAAkpD,EAAAjtF,GAAAinC,iBACAjD,YAAA,+BACA33C,QACA,MAAAu3H,GAAA,IAAA32B,EAAAltF,IACAgkC,SAAAkpD,EAAAjtF,GAAAinC,iBACAjD,YAAA,4BACA33C,QACA,MAAAw3H,GAAA,IAAA52B,EAAAltF,IACAgkC,SAAAkpD,EAAAjtF,GAAAinC,iBACAjD,YAAA,oBACA33C,QACA,MAAAy3H,GAAA,IAAA72B,EAAAltF,IAAAgkC,SAAAkpD,EAAAjtF,GAAAtR,UAAAs1C,YAAA,kBAAA33C,QACA,MAAA03H,GAAA,IAAA92B,EAAAltF,IACAgkC,SAAAkpD,EAAAjtF,GAAAinC,iBACAjD,YAAA,oBACA33C,QACA,MAAA23H,GAAA,IAAA/2B,EAAAltF,IACAgkC,SAAAkpD,EAAAjtF,GAAAinC,iBACAjD,YAAA,mBACA33C,QCxBA,MAAA43H,cAAAn8H,GACAvL,OAAAmG,KAAAoF,GAAA3M,SAAA,GAAA2M,EAAAzI,cAAA9C,OCGA,MAAAgB,EAAAgmI,aAIA,MAAAW,KACA,WAAA7kI,GAAA,CAOA8kI,aAAA,CAAA7d,EAAAn7G,KACA,MAAAi5H,EAAA,UACA,MAAAC,EAAA,WAEA,IAAA/d,EAAA,CACAhpH,QAAAq4G,KAAA,0DACA,OAAAyuB,EAAAj5H,EAAAtH,UACA,CACA,IAAAygI,EAEA,UAAAhe,IAAA,UACAge,EAAAhe,CACA,MACA,UAAAA,IAAA,UACAge,EAAAL,cAAA3d,GAAA,GAAAr9F,KAAAC,UAAAo9F,EAAA,OACA,KACA,CACA,cAAA/jH,MAAA,wBACA,CAEA,GAAA+hI,EAAAnpI,SAAA,GACAmC,QAAAq4G,KAAA,oDACA,OAAAyuB,EAAAj5H,EAAAtH,UACA,CAEA,MAAA1H,EAAA,GAAAkoI,IAAAC,KAAAF,IAAAj5H,IACA,OAAAhP,EAAA0H,UAAA,EAOA0gI,kBAAA,CAAAC,EAAAroI,KACAoB,EAAAw/B,MAAA,qCAAA5gC,KACA,MAAAsoI,GAAA,EAAAhB,EAAAiB,YAAA,aAAAF,GACAC,EAAAE,OAAAxoI,GACA,MAAAyoI,EAAAH,EAAAG,OAAA,UACArnI,EAAAw/B,MAAA,wBAAA6nG,KACA,OAAAA,EAAA/gI,UAAA,EAOAghI,gBAAAC,GAAA,CAAA3oI,EAAA4oI,EAAAC,KACA,IACAznI,EAAAw/B,MAAA,oCAAA5gC,KACA,MAAA8oI,EAAAH,EAAAC,GACAxnI,EAAAw/B,MAAA,WAAAkoG,GACA,GAAAA,IAAAphI,UAAA,CACAtG,EAAAsI,MAAA,yBACA,WAAAtD,MAAA,GAAAmhI,EAAAh+H,UAAAg+H,EAAA99H,UACA,CACA,MAAAs/H,EAAA7iI,GAAA9C,KAAAglI,kBAAAU,EAAA9oI,GACA,GAAAkG,EAAA,CACA9E,EAAAsI,MAAA,wCAAAxD,KACA,WAAAE,MAAA,GAAAuhI,EAAAp+H,SAAArD,EAAAlG,UACA,CACA,OAAAsnI,EAAA0B,iBAAAC,EAAAp9H,OAAAwW,KAAAwmH,GAAAI,EAAAp9H,OAAAwW,KAAA0mH,IAAA,CACA3nI,EAAAsI,MAAA,wCACA,WAAAtD,MAAA,GAAAohI,EAAAj+H,SAAAi+H,EAAA/9H,UACA,CACA,OAAA/B,SACA,CACA,MAAAgC,GACAtI,EAAAsI,MAAA,mEAAAA,GACA,WAAAtD,MAAA,GAAAuhI,EAAAp+H,WAAAG,IACA,GCnFA,MAAAw/H,EAAA9B,aACA,MAAA+B,sBACAC,UACAC,WACAC,KAMA,WAAApmI,CAAAkmI,EAAAC,GACAjmI,KAAAgmI,YACAhmI,KAAAimI,aACAjmI,KAAAkmI,KAAA,IAAAvB,IACA,CAOA,WAAAwB,CAAArpI,EAAAwQ,GACA,IAAA84H,EACA,IAAAC,EACA,IAAAC,EAEA,MAAA74H,GAAA,IAAAigG,EAAAntF,IACAvT,WAAA,CAAA/J,EAAAwB,EAAA6I,KACA84H,EAAAnjI,EACAojI,EAAA5hI,EACA6hI,EAAAh5H,CAAA,IAEAL,iBAAA,CAAArQ,EAAA0Q,KACA,UAAA1Q,IAAA,UACAkpI,EAAAvoG,KAAA,oBAAA3gC,IACA,MACA,GAAAA,aAAA6L,OAAA,CACAq9H,EAAAvoG,KAAA,oBAAA3gC,EAAAsiB,aACA,MACA,UAAAtiB,IAAA,UACAkpI,EAAAvoG,KAAA,oBAAA7T,KAAAC,UAAA/sB,KACA,MACA,UAAAA,IAAA,UACAkpI,EAAAvoG,KAAA,oBAAA3gC,IACA,MACA,UAAAA,IAAA,WACAkpI,EAAAvoG,KAAA,oBAAA3gC,IACA,MACA,GAAAA,IAAA0H,UAAA,CACAwhI,EAAAvoG,KAAA,6BACA,CAEA,MAAAl4B,EAAAkhI,GAAAvmI,KAAAkmI,KAAAtB,aAAAhoI,EAAAE,EAAA0T,kBAAA9B,MACA,GAAA63H,EAAA,CACAT,EAAAx/H,MAAA,6BAAAigI,KACA,MACA,CACA,MAAAd,EAAAe,GAAAxmI,KAAAkmI,KAAAlB,kBAAAhlI,KAAAimI,WAAA5gI,GACA,GAAAmhI,EAAA,CACAV,EAAAx/H,MAAA,iCAAAkgI,KACA,MACA,CAEAJ,KAAA,IAAA14B,EAAAhtF,GACA0lH,EAAA5qI,IAAA,gBAAAwE,KAAAgmI,WACAI,EAAA5qI,IAAA,mBAAAiqI,GAEAa,EAAAF,EAAAC,GACA/4H,EAAA1Q,EAAA,IAEAuQ,eAAAG,IACAA,GAAA,IAEAF,YAAAxQ,IACAkpI,EAAAx/H,MAAA,sBAAA1J,IAAA,IAEAkQ,QAEA,WAAA4gG,EAAAptF,GAAAhT,EAAAxQ,GAAA2Q,EACA,CAKA,eAAAg5H,GACA,OAAA3pI,EAAAwQ,IACAtN,KAAAmmI,YAAArpI,EAAAwQ,EAEA,EAQA,MAAAo5H,qBAAA,CAAAV,EAAAC,IACA,IAAAF,sBAAAC,EAAAC,GCjGA,MAAAU,EAAA3C,aAIA,MAAA4C,sBACAxT,KACA8S,KACA,WAAApmI,CAAAylI,GACAvlI,KAAAkmI,KAAA,IAAAvB,KACA3kI,KAAAozH,KAAApzH,KAAAkmI,KAAAZ,gBAAAC,EACA,CAOA,iBAAAsB,CAAAC,EAAA1pI,GACA,IAAAgpI,EACA,WAAA14B,EAAAttF,GAAAhjB,EAAA,CACA2P,MAAAO,IACA,MAAAy5H,GAAA,IAAAr5B,EAAArtF,IACA1T,uBAAA,CAAA1J,EAAA+jI,KACA,IAAA/jI,EAAA8T,IAAA,kBACA4vH,EAAArgI,MAAA,2BACAlJ,EAAAwxC,WAAA,CACAzoC,KAAAunG,EAAAjtF,GAAAinC,gBACArhD,QAAA,2BAEA,MACA,IAAApD,EAAA8T,IAAA,qBACA4vH,EAAArgI,MAAA,8BACAlJ,EAAAwxC,WAAA,CACAzoC,KAAAunG,EAAAjtF,GAAAinC,gBACArhD,QAAA,8BAEA,KACA,CACA+/H,EAAAnjI,EACA+jI,EAAA/jI,EACA,KAEA2J,sBAAA,CAAAhQ,EAAAqqI,YACArqI,IAAA,SACA+pI,EAAAnpG,MAAA,qBAAA5gC,KACAA,aAAA6L,OACAk+H,EAAAnpG,MAAA,qBAAA5gC,EAAAsiB,qBACAtiB,IAAA,SACA+pI,EAAAnpG,MAAA,qBAAA9T,KAAAC,UAAA/sB,aACAA,IAAA,SACA+pI,EAAAnpG,MAAA,qBAAA5gC,KACA,KACA,MAAAyI,EAAAkhI,GAAAvmI,KAAAkmI,KAAAtB,aAAAhoI,EAAAkqI,EAAAp4H,MACA,GAAA63H,EAAA,CACAI,EAAArgI,MAAA,8BAAAigI,KACAnpI,EAAAwxC,WAAA,CACAzoC,KAAAunG,EAAAjtF,GAAAinC,gBACArhD,QAAAkgI,EAAA3pI,SAEA,CACA,MAAAkG,EAAA9C,KAAAozH,KAAA/tH,EAAA+gI,EAAArvH,IAAA,iBAAAmI,WAAAknH,EAAArvH,IAAA,oBAAAmI,YACA,GAAApc,EAAA,CACA6jI,EAAArgI,MAAA,0CAAAwgI,EAAAp4H,mBAAA5L,EAAA2J,QACArP,EAAAwxC,WAAA,CACAzoC,KAAAunG,EAAAjtF,GAAAinC,gBACArhD,QAAAvD,EAAAlG,SAEA,CACAqqI,EAAArqI,EAAA,IAEAozC,wBAAAhoC,IACAA,GAAA,IAEAkoC,cAAA,SACApjC,QACAQ,EAAAy5H,EAAA,EAEA75H,YAAA,CAAAtQ,EAAA0Q,YACA1Q,IAAA,SACA+pI,EAAAnpG,MAAA,2BAAA5gC,KACAA,aAAA6L,OACAk+H,EAAAnpG,MAAA,2BAAA5gC,EAAAsiB,qBACAtiB,IAAA,SACA+pI,EAAAnpG,MAAA,2BAAA9T,KAAAC,UAAA/sB,aACAA,IAAA,SACA+pI,EAAAnpG,MAAA,2BAAA5gC,KACA,KACA0Q,EAAA1Q,EAAA,GAGA,CAKA,eAAA6pI,GACA,OAAAK,EAAA1pI,IACA4C,KAAA6mI,kBAAAC,EAAA1pI,EAEA,EAOA,MAAA8pI,qBAAA3B,GACA,IAAAqB,sBAAArB,E"} \ No newline at end of file diff --git a/build/licenses.txt b/build/licenses.txt new file mode 100644 index 0000000..645fc3a --- /dev/null +++ b/build/licenses.txt @@ -0,0 +1,1755 @@ +@colors/colors +MIT +MIT License + +Original Library + - Copyright (c) Marak Squires + +Additional Functionality + - Copyright (c) Sindre Sorhus (sindresorhus.com) + - Copyright (c) DABH (https://github.com/DABH) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@dabh/diagnostics +MIT +The MIT License (MIT) + +Copyright (c) 2015 Arnout Kazemier, Martijn Swaagman, the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@grpc/grpc-js +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +@grpc/proto-loader +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +@protobufjs/aspromise +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/base64 +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/codegen +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/eventemitter +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/fetch +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/float +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/inquire +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/path +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/pool +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +@protobufjs/utf8 +BSD-3-Clause +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + + +async +MIT +Copyright (c) 2010-2018 Caolan McMahon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +chalk +MIT +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +color +MIT +Copyright (c) 2012 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +color-convert +MIT +Copyright (c) 2011-2016 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +color-name +MIT +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +color-string +MIT +Copyright (c) 2011 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +colorspace +MIT +The MIT License (MIT) + +Copyright (c) 2015 Arnout Kazemier, Martijn Swaagman, the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +enabled +MIT +The MIT License (MIT) + +Copyright (c) 2015 Arnout Kazemier, Martijn Swaagman, the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +fecha +MIT +The MIT License (MIT) + +Copyright (c) 2015 Taylor Hakes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +fn.name +MIT +The MIT License (MIT) + +Copyright (c) 2015 Arnout Kazemier, Martijn Swaagman, the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +inherits +ISC +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + + + +is-arrayish +MIT +The MIT License (MIT) + +Copyright (c) 2015 JD Ballard + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +is-stream +MIT +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +kuler +MIT +Copyright 2014 Arnout Kazemier + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +lodash.camelcase +MIT +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. + + +logform +MIT +MIT License + +Copyright (c) 2017 Charlie Robbins & the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +long +Apache-2.0 + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +ms +MIT +The MIT License (MIT) + +Copyright (c) 2016 Zeit, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +one-time +MIT +The MIT License (MIT) + +Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + +protobufjs +BSD-3-Clause +This license applies to all parts of protobuf.js except those files +either explicitly including or referencing a different license or +located in a directory containing a different LICENSE file. + +--- + +Copyright (c) 2016, Daniel Wirtz All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +* 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. +* Neither the name of its author, nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +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 +OWNER 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. + +--- + +Code generated by the command line utilities is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + + +readable-stream +MIT +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + + +safe-buffer +MIT +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +safe-stable-stringify +MIT +The MIT License (MIT) + +Copyright (c) Ruben Bridgewater + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +simple-swizzle +MIT +The MIT License (MIT) + +Copyright (c) 2015 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +stack-trace +MIT +Copyright (c) 2011 Felix Geisendörfer (felix@debuggable.com) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + +string_decoder +MIT +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + + + +text-hex +MIT +The MIT License (MIT) + +Copyright (c) 2014-2015 Arnout Kazemier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +triple-beam +MIT +MIT License + +Copyright (c) 2017 winstonjs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +util-deprecate +MIT +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +winston +MIT +Copyright (c) 2010 Charlie Robbins + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +winston-transport +MIT +The MIT License (MIT) + +Copyright (c) 2015 Charlie Robbins & the contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/build/package.json b/build/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/build/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/build/proto/channelz.proto b/build/proto/channelz.proto new file mode 100644 index 0000000..446e979 --- /dev/null +++ b/build/proto/channelz.proto @@ -0,0 +1,564 @@ +// Copyright 2018 The gRPC Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This file defines an interface for exporting monitoring information +// out of gRPC servers. See the full design at +// https://github.com/grpc/proposal/blob/master/A14-channelz.md +// +// The canonical version of this proto can be found at +// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto + +syntax = "proto3"; + +package grpc.channelz.v1; + +import "google/protobuf/any.proto"; +import "google/protobuf/duration.proto"; +import "google/protobuf/timestamp.proto"; +import "google/protobuf/wrappers.proto"; + +option go_package = "google.golang.org/grpc/channelz/grpc_channelz_v1"; +option java_multiple_files = true; +option java_package = "io.grpc.channelz.v1"; +option java_outer_classname = "ChannelzProto"; + +// Channel is a logical grouping of channels, subchannels, and sockets. +message Channel { + // The identifier for this channel. This should bet set. + ChannelRef ref = 1; + // Data specific to this channel. + ChannelData data = 2; + // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. + + // There are no ordering guarantees on the order of channel refs. + // There may not be cycles in the ref graph. + // A channel ref may be present in more than one channel or subchannel. + repeated ChannelRef channel_ref = 3; + + // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. + // There are no ordering guarantees on the order of subchannel refs. + // There may not be cycles in the ref graph. + // A sub channel ref may be present in more than one channel or subchannel. + repeated SubchannelRef subchannel_ref = 4; + + // There are no ordering guarantees on the order of sockets. + repeated SocketRef socket_ref = 5; +} + +// Subchannel is a logical grouping of channels, subchannels, and sockets. +// A subchannel is load balanced over by it's ancestor +message Subchannel { + // The identifier for this channel. + SubchannelRef ref = 1; + // Data specific to this channel. + ChannelData data = 2; + // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. + + // There are no ordering guarantees on the order of channel refs. + // There may not be cycles in the ref graph. + // A channel ref may be present in more than one channel or subchannel. + repeated ChannelRef channel_ref = 3; + + // At most one of 'channel_ref+subchannel_ref' and 'socket' is set. + // There are no ordering guarantees on the order of subchannel refs. + // There may not be cycles in the ref graph. + // A sub channel ref may be present in more than one channel or subchannel. + repeated SubchannelRef subchannel_ref = 4; + + // There are no ordering guarantees on the order of sockets. + repeated SocketRef socket_ref = 5; +} + +// These come from the specified states in this document: +// https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md +message ChannelConnectivityState { + enum State { + UNKNOWN = 0; + IDLE = 1; + CONNECTING = 2; + READY = 3; + TRANSIENT_FAILURE = 4; + SHUTDOWN = 5; + } + State state = 1; +} + +// Channel data is data related to a specific Channel or Subchannel. +message ChannelData { + // The connectivity state of the channel or subchannel. Implementations + // should always set this. + ChannelConnectivityState state = 1; + + // The target this channel originally tried to connect to. May be absent + string target = 2; + + // A trace of recent events on the channel. May be absent. + ChannelTrace trace = 3; + + // The number of calls started on the channel + int64 calls_started = 4; + // The number of calls that have completed with an OK status + int64 calls_succeeded = 5; + // The number of calls that have completed with a non-OK status + int64 calls_failed = 6; + + // The last time a call was started on the channel. + google.protobuf.Timestamp last_call_started_timestamp = 7; +} + +// A trace event is an interesting thing that happened to a channel or +// subchannel, such as creation, address resolution, subchannel creation, etc. +message ChannelTraceEvent { + // High level description of the event. + string description = 1; + // The supported severity levels of trace events. + enum Severity { + CT_UNKNOWN = 0; + CT_INFO = 1; + CT_WARNING = 2; + CT_ERROR = 3; + } + // the severity of the trace event + Severity severity = 2; + // When this event occurred. + google.protobuf.Timestamp timestamp = 3; + // ref of referenced channel or subchannel. + // Optional, only present if this event refers to a child object. For example, + // this field would be filled if this trace event was for a subchannel being + // created. + oneof child_ref { + ChannelRef channel_ref = 4; + SubchannelRef subchannel_ref = 5; + } +} + +// ChannelTrace represents the recent events that have occurred on the channel. +message ChannelTrace { + // Number of events ever logged in this tracing object. This can differ from + // events.size() because events can be overwritten or garbage collected by + // implementations. + int64 num_events_logged = 1; + // Time that this channel was created. + google.protobuf.Timestamp creation_timestamp = 2; + // List of events that have occurred on this channel. + repeated ChannelTraceEvent events = 3; +} + +// ChannelRef is a reference to a Channel. +message ChannelRef { + // The globally unique id for this channel. Must be a positive number. + int64 channel_id = 1; + // An optional name associated with the channel. + string name = 2; + // Intentionally don't use field numbers from other refs. + reserved 3, 4, 5, 6, 7, 8; +} + +// SubchannelRef is a reference to a Subchannel. +message SubchannelRef { + // The globally unique id for this subchannel. Must be a positive number. + int64 subchannel_id = 7; + // An optional name associated with the subchannel. + string name = 8; + // Intentionally don't use field numbers from other refs. + reserved 1, 2, 3, 4, 5, 6; +} + +// SocketRef is a reference to a Socket. +message SocketRef { + // The globally unique id for this socket. Must be a positive number. + int64 socket_id = 3; + // An optional name associated with the socket. + string name = 4; + // Intentionally don't use field numbers from other refs. + reserved 1, 2, 5, 6, 7, 8; +} + +// ServerRef is a reference to a Server. +message ServerRef { + // A globally unique identifier for this server. Must be a positive number. + int64 server_id = 5; + // An optional name associated with the server. + string name = 6; + // Intentionally don't use field numbers from other refs. + reserved 1, 2, 3, 4, 7, 8; +} + +// Server represents a single server. There may be multiple servers in a single +// program. +message Server { + // The identifier for a Server. This should be set. + ServerRef ref = 1; + // The associated data of the Server. + ServerData data = 2; + + // The sockets that the server is listening on. There are no ordering + // guarantees. This may be absent. + repeated SocketRef listen_socket = 3; +} + +// ServerData is data for a specific Server. +message ServerData { + // A trace of recent events on the server. May be absent. + ChannelTrace trace = 1; + + // The number of incoming calls started on the server + int64 calls_started = 2; + // The number of incoming calls that have completed with an OK status + int64 calls_succeeded = 3; + // The number of incoming calls that have a completed with a non-OK status + int64 calls_failed = 4; + + // The last time a call was started on the server. + google.protobuf.Timestamp last_call_started_timestamp = 5; +} + +// Information about an actual connection. Pronounced "sock-ay". +message Socket { + // The identifier for the Socket. + SocketRef ref = 1; + + // Data specific to this Socket. + SocketData data = 2; + // The locally bound address. + Address local = 3; + // The remote bound address. May be absent. + Address remote = 4; + // Security details for this socket. May be absent if not available, or + // there is no security on the socket. + Security security = 5; + + // Optional, represents the name of the remote endpoint, if different than + // the original target name. + string remote_name = 6; +} + +// SocketData is data associated for a specific Socket. The fields present +// are specific to the implementation, so there may be minor differences in +// the semantics. (e.g. flow control windows) +message SocketData { + // The number of streams that have been started. + int64 streams_started = 1; + // The number of streams that have ended successfully: + // On client side, received frame with eos bit set; + // On server side, sent frame with eos bit set. + int64 streams_succeeded = 2; + // The number of streams that have ended unsuccessfully: + // On client side, ended without receiving frame with eos bit set; + // On server side, ended without sending frame with eos bit set. + int64 streams_failed = 3; + // The number of grpc messages successfully sent on this socket. + int64 messages_sent = 4; + // The number of grpc messages received on this socket. + int64 messages_received = 5; + + // The number of keep alives sent. This is typically implemented with HTTP/2 + // ping messages. + int64 keep_alives_sent = 6; + + // The last time a stream was created by this endpoint. Usually unset for + // servers. + google.protobuf.Timestamp last_local_stream_created_timestamp = 7; + // The last time a stream was created by the remote endpoint. Usually unset + // for clients. + google.protobuf.Timestamp last_remote_stream_created_timestamp = 8; + + // The last time a message was sent by this endpoint. + google.protobuf.Timestamp last_message_sent_timestamp = 9; + // The last time a message was received by this endpoint. + google.protobuf.Timestamp last_message_received_timestamp = 10; + + // The amount of window, granted to the local endpoint by the remote endpoint. + // This may be slightly out of date due to network latency. This does NOT + // include stream level or TCP level flow control info. + google.protobuf.Int64Value local_flow_control_window = 11; + + // The amount of window, granted to the remote endpoint by the local endpoint. + // This may be slightly out of date due to network latency. This does NOT + // include stream level or TCP level flow control info. + google.protobuf.Int64Value remote_flow_control_window = 12; + + // Socket options set on this socket. May be absent if 'summary' is set + // on GetSocketRequest. + repeated SocketOption option = 13; +} + +// Address represents the address used to create the socket. +message Address { + message TcpIpAddress { + // Either the IPv4 or IPv6 address in bytes. Will be either 4 bytes or 16 + // bytes in length. + bytes ip_address = 1; + // 0-64k, or -1 if not appropriate. + int32 port = 2; + } + // A Unix Domain Socket address. + message UdsAddress { + string filename = 1; + } + // An address type not included above. + message OtherAddress { + // The human readable version of the value. This value should be set. + string name = 1; + // The actual address message. + google.protobuf.Any value = 2; + } + + oneof address { + TcpIpAddress tcpip_address = 1; + UdsAddress uds_address = 2; + OtherAddress other_address = 3; + } +} + +// Security represents details about how secure the socket is. +message Security { + message Tls { + oneof cipher_suite { + // The cipher suite name in the RFC 4346 format: + // https://tools.ietf.org/html/rfc4346#appendix-C + string standard_name = 1; + // Some other way to describe the cipher suite if + // the RFC 4346 name is not available. + string other_name = 2; + } + // the certificate used by this endpoint. + bytes local_certificate = 3; + // the certificate used by the remote endpoint. + bytes remote_certificate = 4; + } + message OtherSecurity { + // The human readable version of the value. + string name = 1; + // The actual security details message. + google.protobuf.Any value = 2; + } + oneof model { + Tls tls = 1; + OtherSecurity other = 2; + } +} + +// SocketOption represents socket options for a socket. Specifically, these +// are the options returned by getsockopt(). +message SocketOption { + // The full name of the socket option. Typically this will be the upper case + // name, such as "SO_REUSEPORT". + string name = 1; + // The human readable value of this socket option. At least one of value or + // additional will be set. + string value = 2; + // Additional data associated with the socket option. At least one of value + // or additional will be set. + google.protobuf.Any additional = 3; +} + +// For use with SocketOption's additional field. This is primarily used for +// SO_RCVTIMEO and SO_SNDTIMEO +message SocketOptionTimeout { + google.protobuf.Duration duration = 1; +} + +// For use with SocketOption's additional field. This is primarily used for +// SO_LINGER. +message SocketOptionLinger { + // active maps to `struct linger.l_onoff` + bool active = 1; + // duration maps to `struct linger.l_linger` + google.protobuf.Duration duration = 2; +} + +// For use with SocketOption's additional field. Tcp info for +// SOL_TCP and TCP_INFO. +message SocketOptionTcpInfo { + uint32 tcpi_state = 1; + + uint32 tcpi_ca_state = 2; + uint32 tcpi_retransmits = 3; + uint32 tcpi_probes = 4; + uint32 tcpi_backoff = 5; + uint32 tcpi_options = 6; + uint32 tcpi_snd_wscale = 7; + uint32 tcpi_rcv_wscale = 8; + + uint32 tcpi_rto = 9; + uint32 tcpi_ato = 10; + uint32 tcpi_snd_mss = 11; + uint32 tcpi_rcv_mss = 12; + + uint32 tcpi_unacked = 13; + uint32 tcpi_sacked = 14; + uint32 tcpi_lost = 15; + uint32 tcpi_retrans = 16; + uint32 tcpi_fackets = 17; + + uint32 tcpi_last_data_sent = 18; + uint32 tcpi_last_ack_sent = 19; + uint32 tcpi_last_data_recv = 20; + uint32 tcpi_last_ack_recv = 21; + + uint32 tcpi_pmtu = 22; + uint32 tcpi_rcv_ssthresh = 23; + uint32 tcpi_rtt = 24; + uint32 tcpi_rttvar = 25; + uint32 tcpi_snd_ssthresh = 26; + uint32 tcpi_snd_cwnd = 27; + uint32 tcpi_advmss = 28; + uint32 tcpi_reordering = 29; +} + +// Channelz is a service exposed by gRPC servers that provides detailed debug +// information. +service Channelz { + // Gets all root channels (i.e. channels the application has directly + // created). This does not include subchannels nor non-top level channels. + rpc GetTopChannels(GetTopChannelsRequest) returns (GetTopChannelsResponse); + // Gets all servers that exist in the process. + rpc GetServers(GetServersRequest) returns (GetServersResponse); + // Returns a single Server, or else a NOT_FOUND code. + rpc GetServer(GetServerRequest) returns (GetServerResponse); + // Gets all server sockets that exist in the process. + rpc GetServerSockets(GetServerSocketsRequest) returns (GetServerSocketsResponse); + // Returns a single Channel, or else a NOT_FOUND code. + rpc GetChannel(GetChannelRequest) returns (GetChannelResponse); + // Returns a single Subchannel, or else a NOT_FOUND code. + rpc GetSubchannel(GetSubchannelRequest) returns (GetSubchannelResponse); + // Returns a single Socket or else a NOT_FOUND code. + rpc GetSocket(GetSocketRequest) returns (GetSocketResponse); +} + +message GetTopChannelsRequest { + // start_channel_id indicates that only channels at or above this id should be + // included in the results. + // To request the first page, this should be set to 0. To request + // subsequent pages, the client generates this value by adding 1 to + // the highest seen result ID. + int64 start_channel_id = 1; + + // If non-zero, the server will return a page of results containing + // at most this many items. If zero, the server will choose a + // reasonable page size. Must never be negative. + int64 max_results = 2; +} + +message GetTopChannelsResponse { + // list of channels that the connection detail service knows about. Sorted in + // ascending channel_id order. + // Must contain at least 1 result, otherwise 'end' must be true. + repeated Channel channel = 1; + // If set, indicates that the list of channels is the final list. Requesting + // more channels can only return more if they are created after this RPC + // completes. + bool end = 2; +} + +message GetServersRequest { + // start_server_id indicates that only servers at or above this id should be + // included in the results. + // To request the first page, this must be set to 0. To request + // subsequent pages, the client generates this value by adding 1 to + // the highest seen result ID. + int64 start_server_id = 1; + + // If non-zero, the server will return a page of results containing + // at most this many items. If zero, the server will choose a + // reasonable page size. Must never be negative. + int64 max_results = 2; +} + +message GetServersResponse { + // list of servers that the connection detail service knows about. Sorted in + // ascending server_id order. + // Must contain at least 1 result, otherwise 'end' must be true. + repeated Server server = 1; + // If set, indicates that the list of servers is the final list. Requesting + // more servers will only return more if they are created after this RPC + // completes. + bool end = 2; +} + +message GetServerRequest { + // server_id is the identifier of the specific server to get. + int64 server_id = 1; +} + +message GetServerResponse { + // The Server that corresponds to the requested server_id. This field + // should be set. + Server server = 1; +} + +message GetServerSocketsRequest { + int64 server_id = 1; + // start_socket_id indicates that only sockets at or above this id should be + // included in the results. + // To request the first page, this must be set to 0. To request + // subsequent pages, the client generates this value by adding 1 to + // the highest seen result ID. + int64 start_socket_id = 2; + + // If non-zero, the server will return a page of results containing + // at most this many items. If zero, the server will choose a + // reasonable page size. Must never be negative. + int64 max_results = 3; +} + +message GetServerSocketsResponse { + // list of socket refs that the connection detail service knows about. Sorted in + // ascending socket_id order. + // Must contain at least 1 result, otherwise 'end' must be true. + repeated SocketRef socket_ref = 1; + // If set, indicates that the list of sockets is the final list. Requesting + // more sockets will only return more if they are created after this RPC + // completes. + bool end = 2; +} + +message GetChannelRequest { + // channel_id is the identifier of the specific channel to get. + int64 channel_id = 1; +} + +message GetChannelResponse { + // The Channel that corresponds to the requested channel_id. This field + // should be set. + Channel channel = 1; +} + +message GetSubchannelRequest { + // subchannel_id is the identifier of the specific subchannel to get. + int64 subchannel_id = 1; +} + +message GetSubchannelResponse { + // The Subchannel that corresponds to the requested subchannel_id. This + // field should be set. + Subchannel subchannel = 1; +} + +message GetSocketRequest { + // socket_id is the identifier of the specific socket to get. + int64 socket_id = 1; + + // If true, the response will contain only high level information + // that is inexpensive to obtain. Fields thay may be omitted are + // documented. + bool summary = 2; +} + +message GetSocketResponse { + // The Socket that corresponds to the requested socket_id. This field + // should be set. + Socket socket = 1; +} \ No newline at end of file diff --git a/build/sourcemap-register.cjs b/build/sourcemap-register.cjs new file mode 100644 index 0000000..466141d --- /dev/null +++ b/build/sourcemap-register.cjs @@ -0,0 +1 @@ +(()=>{var e={650:e=>{var r=Object.prototype.toString;var n=typeof Buffer.alloc==="function"&&typeof Buffer.allocUnsafe==="function"&&typeof Buffer.from==="function";function isArrayBuffer(e){return r.call(e).slice(8,-1)==="ArrayBuffer"}function fromArrayBuffer(e,r,t){r>>>=0;var o=e.byteLength-r;if(o<0){throw new RangeError("'offset' is out of bounds")}if(t===undefined){t=o}else{t>>>=0;if(t>o){throw new RangeError("'length' is out of bounds")}}return n?Buffer.from(e.slice(r,r+t)):new Buffer(new Uint8Array(e.slice(r,r+t)))}function fromString(e,r){if(typeof r!=="string"||r===""){r="utf8"}if(!Buffer.isEncoding(r)){throw new TypeError('"encoding" must be a valid string encoding')}return n?Buffer.from(e,r):new Buffer(e,r)}function bufferFrom(e,r,t){if(typeof e==="number"){throw new TypeError('"value" argument must not be a number')}if(isArrayBuffer(e)){return fromArrayBuffer(e,r,t)}if(typeof e==="string"){return fromString(e,r)}return n?Buffer.from(e):new Buffer(e)}e.exports=bufferFrom},274:(e,r,n)=>{var t=n(339);var o=Object.prototype.hasOwnProperty;var i=typeof Map!=="undefined";function ArraySet(){this._array=[];this._set=i?new Map:Object.create(null)}ArraySet.fromArray=function ArraySet_fromArray(e,r){var n=new ArraySet;for(var t=0,o=e.length;t=0){return r}}else{var n=t.toSetString(e);if(o.call(this._set,n)){return this._set[n]}}throw new Error('"'+e+'" is not in the set.')};ArraySet.prototype.at=function ArraySet_at(e){if(e>=0&&e{var t=n(190);var o=5;var i=1<>1;return r?-n:n}r.encode=function base64VLQ_encode(e){var r="";var n;var i=toVLQSigned(e);do{n=i&a;i>>>=o;if(i>0){n|=u}r+=t.encode(n)}while(i>0);return r};r.decode=function base64VLQ_decode(e,r,n){var i=e.length;var s=0;var l=0;var c,p;do{if(r>=i){throw new Error("Expected more digits in base 64 VLQ value.")}p=t.decode(e.charCodeAt(r++));if(p===-1){throw new Error("Invalid base64 digit: "+e.charAt(r-1))}c=!!(p&u);p&=a;s=s+(p<{var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");r.encode=function(e){if(0<=e&&e{r.GREATEST_LOWER_BOUND=1;r.LEAST_UPPER_BOUND=2;function recursiveSearch(e,n,t,o,i,a){var u=Math.floor((n-e)/2)+e;var s=i(t,o[u],true);if(s===0){return u}else if(s>0){if(n-u>1){return recursiveSearch(u,n,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return n1){return recursiveSearch(e,u,t,o,i,a)}if(a==r.LEAST_UPPER_BOUND){return u}else{return e<0?-1:e}}}r.search=function search(e,n,t,o){if(n.length===0){return-1}var i=recursiveSearch(-1,n.length,e,n,t,o||r.GREATEST_LOWER_BOUND);if(i<0){return-1}while(i-1>=0){if(t(n[i],n[i-1],true)!==0){break}--i}return i}},680:(e,r,n)=>{var t=n(339);function generatedPositionAfter(e,r){var n=e.generatedLine;var o=r.generatedLine;var i=e.generatedColumn;var a=r.generatedColumn;return o>n||o==n&&a>=i||t.compareByGeneratedPositionsInflated(e,r)<=0}function MappingList(){this._array=[];this._sorted=true;this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function MappingList_forEach(e,r){this._array.forEach(e,r)};MappingList.prototype.add=function MappingList_add(e){if(generatedPositionAfter(this._last,e)){this._last=e;this._array.push(e)}else{this._sorted=false;this._array.push(e)}};MappingList.prototype.toArray=function MappingList_toArray(){if(!this._sorted){this._array.sort(t.compareByGeneratedPositionsInflated);this._sorted=true}return this._array};r.H=MappingList},758:(e,r)=>{function swap(e,r,n){var t=e[r];e[r]=e[n];e[n]=t}function randomIntInRange(e,r){return Math.round(e+Math.random()*(r-e))}function doQuickSort(e,r,n,t){if(n{var t;var o=n(339);var i=n(345);var a=n(274).I;var u=n(449);var s=n(758).U;function SourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}return n.sections!=null?new IndexedSourceMapConsumer(n,r):new BasicSourceMapConsumer(n,r)}SourceMapConsumer.fromSourceMap=function(e,r){return BasicSourceMapConsumer.fromSourceMap(e,r)};SourceMapConsumer.prototype._version=3;SourceMapConsumer.prototype.__generatedMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{configurable:true,enumerable:true,get:function(){if(!this.__generatedMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__generatedMappings}});SourceMapConsumer.prototype.__originalMappings=null;Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{configurable:true,enumerable:true,get:function(){if(!this.__originalMappings){this._parseMappings(this._mappings,this.sourceRoot)}return this.__originalMappings}});SourceMapConsumer.prototype._charIsMappingSeparator=function SourceMapConsumer_charIsMappingSeparator(e,r){var n=e.charAt(r);return n===";"||n===","};SourceMapConsumer.prototype._parseMappings=function SourceMapConsumer_parseMappings(e,r){throw new Error("Subclasses must implement _parseMappings")};SourceMapConsumer.GENERATED_ORDER=1;SourceMapConsumer.ORIGINAL_ORDER=2;SourceMapConsumer.GREATEST_LOWER_BOUND=1;SourceMapConsumer.LEAST_UPPER_BOUND=2;SourceMapConsumer.prototype.eachMapping=function SourceMapConsumer_eachMapping(e,r,n){var t=r||null;var i=n||SourceMapConsumer.GENERATED_ORDER;var a;switch(i){case SourceMapConsumer.GENERATED_ORDER:a=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:a=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var u=this.sourceRoot;a.map((function(e){var r=e.source===null?null:this._sources.at(e.source);r=o.computeSourceURL(u,r,this._sourceMapURL);return{source:r,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:e.name===null?null:this._names.at(e.name)}}),this).forEach(e,t)};SourceMapConsumer.prototype.allGeneratedPositionsFor=function SourceMapConsumer_allGeneratedPositionsFor(e){var r=o.getArg(e,"line");var n={source:o.getArg(e,"source"),originalLine:r,originalColumn:o.getArg(e,"column",0)};n.source=this._findSourceIndex(n.source);if(n.source<0){return[]}var t=[];var a=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,i.LEAST_UPPER_BOUND);if(a>=0){var u=this._originalMappings[a];if(e.column===undefined){var s=u.originalLine;while(u&&u.originalLine===s){t.push({line:o.getArg(u,"generatedLine",null),column:o.getArg(u,"generatedColumn",null),lastColumn:o.getArg(u,"lastGeneratedColumn",null)});u=this._originalMappings[++a]}}else{var l=u.originalColumn;while(u&&u.originalLine===r&&u.originalColumn==l){t.push({line:o.getArg(u,"generatedLine",null),column:o.getArg(u,"generatedColumn",null),lastColumn:o.getArg(u,"lastGeneratedColumn",null)});u=this._originalMappings[++a]}}}return t};r.SourceMapConsumer=SourceMapConsumer;function BasicSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}var t=o.getArg(n,"version");var i=o.getArg(n,"sources");var u=o.getArg(n,"names",[]);var s=o.getArg(n,"sourceRoot",null);var l=o.getArg(n,"sourcesContent",null);var c=o.getArg(n,"mappings");var p=o.getArg(n,"file",null);if(t!=this._version){throw new Error("Unsupported version: "+t)}if(s){s=o.normalize(s)}i=i.map(String).map(o.normalize).map((function(e){return s&&o.isAbsolute(s)&&o.isAbsolute(e)?o.relative(s,e):e}));this._names=a.fromArray(u.map(String),true);this._sources=a.fromArray(i,true);this._absoluteSources=this._sources.toArray().map((function(e){return o.computeSourceURL(s,e,r)}));this.sourceRoot=s;this.sourcesContent=l;this._mappings=c;this._sourceMapURL=r;this.file=p}BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype);BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer;BasicSourceMapConsumer.prototype._findSourceIndex=function(e){var r=e;if(this.sourceRoot!=null){r=o.relative(this.sourceRoot,r)}if(this._sources.has(r)){return this._sources.indexOf(r)}var n;for(n=0;n1){v.source=l+_[1];l+=_[1];v.originalLine=i+_[2];i=v.originalLine;v.originalLine+=1;v.originalColumn=a+_[3];a=v.originalColumn;if(_.length>4){v.name=c+_[4];c+=_[4]}}m.push(v);if(typeof v.originalLine==="number"){d.push(v)}}}s(m,o.compareByGeneratedPositionsDeflated);this.__generatedMappings=m;s(d,o.compareByOriginalPositions);this.__originalMappings=d};BasicSourceMapConsumer.prototype._findMapping=function SourceMapConsumer_findMapping(e,r,n,t,o,a){if(e[n]<=0){throw new TypeError("Line must be greater than or equal to 1, got "+e[n])}if(e[t]<0){throw new TypeError("Column must be greater than or equal to 0, got "+e[t])}return i.search(e,r,o,a)};BasicSourceMapConsumer.prototype.computeColumnSpans=function SourceMapConsumer_computeColumnSpans(){for(var e=0;e=0){var t=this._generatedMappings[n];if(t.generatedLine===r.generatedLine){var i=o.getArg(t,"source",null);if(i!==null){i=this._sources.at(i);i=o.computeSourceURL(this.sourceRoot,i,this._sourceMapURL)}var a=o.getArg(t,"name",null);if(a!==null){a=this._names.at(a)}return{source:i,line:o.getArg(t,"originalLine",null),column:o.getArg(t,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}};BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function BasicSourceMapConsumer_hasContentsOfAllSources(){if(!this.sourcesContent){return false}return this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return e==null}))};BasicSourceMapConsumer.prototype.sourceContentFor=function SourceMapConsumer_sourceContentFor(e,r){if(!this.sourcesContent){return null}var n=this._findSourceIndex(e);if(n>=0){return this.sourcesContent[n]}var t=e;if(this.sourceRoot!=null){t=o.relative(this.sourceRoot,t)}var i;if(this.sourceRoot!=null&&(i=o.urlParse(this.sourceRoot))){var a=t.replace(/^file:\/\//,"");if(i.scheme=="file"&&this._sources.has(a)){return this.sourcesContent[this._sources.indexOf(a)]}if((!i.path||i.path=="/")&&this._sources.has("/"+t)){return this.sourcesContent[this._sources.indexOf("/"+t)]}}if(r){return null}else{throw new Error('"'+t+'" is not in the SourceMap.')}};BasicSourceMapConsumer.prototype.generatedPositionFor=function SourceMapConsumer_generatedPositionFor(e){var r=o.getArg(e,"source");r=this._findSourceIndex(r);if(r<0){return{line:null,column:null,lastColumn:null}}var n={source:r,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")};var t=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(t>=0){var i=this._originalMappings[t];if(i.source===n.source){return{line:o.getArg(i,"generatedLine",null),column:o.getArg(i,"generatedColumn",null),lastColumn:o.getArg(i,"lastGeneratedColumn",null)}}}return{line:null,column:null,lastColumn:null}};t=BasicSourceMapConsumer;function IndexedSourceMapConsumer(e,r){var n=e;if(typeof e==="string"){n=o.parseSourceMapInput(e)}var t=o.getArg(n,"version");var i=o.getArg(n,"sections");if(t!=this._version){throw new Error("Unsupported version: "+t)}this._sources=new a;this._names=new a;var u={line:-1,column:0};this._sections=i.map((function(e){if(e.url){throw new Error("Support for url field in sections not implemented.")}var n=o.getArg(e,"offset");var t=o.getArg(n,"line");var i=o.getArg(n,"column");if(t{var t=n(449);var o=n(339);var i=n(274).I;var a=n(680).H;function SourceMapGenerator(e){if(!e){e={}}this._file=o.getArg(e,"file",null);this._sourceRoot=o.getArg(e,"sourceRoot",null);this._skipValidation=o.getArg(e,"skipValidation",false);this._sources=new i;this._names=new i;this._mappings=new a;this._sourcesContents=null}SourceMapGenerator.prototype._version=3;SourceMapGenerator.fromSourceMap=function SourceMapGenerator_fromSourceMap(e){var r=e.sourceRoot;var n=new SourceMapGenerator({file:e.file,sourceRoot:r});e.eachMapping((function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};if(e.source!=null){t.source=e.source;if(r!=null){t.source=o.relative(r,t.source)}t.original={line:e.originalLine,column:e.originalColumn};if(e.name!=null){t.name=e.name}}n.addMapping(t)}));e.sources.forEach((function(t){var i=t;if(r!==null){i=o.relative(r,t)}if(!n._sources.has(i)){n._sources.add(i)}var a=e.sourceContentFor(t);if(a!=null){n.setSourceContent(t,a)}}));return n};SourceMapGenerator.prototype.addMapping=function SourceMapGenerator_addMapping(e){var r=o.getArg(e,"generated");var n=o.getArg(e,"original",null);var t=o.getArg(e,"source",null);var i=o.getArg(e,"name",null);if(!this._skipValidation){this._validateMapping(r,n,t,i)}if(t!=null){t=String(t);if(!this._sources.has(t)){this._sources.add(t)}}if(i!=null){i=String(i);if(!this._names.has(i)){this._names.add(i)}}this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:t,name:i})};SourceMapGenerator.prototype.setSourceContent=function SourceMapGenerator_setSourceContent(e,r){var n=e;if(this._sourceRoot!=null){n=o.relative(this._sourceRoot,n)}if(r!=null){if(!this._sourcesContents){this._sourcesContents=Object.create(null)}this._sourcesContents[o.toSetString(n)]=r}else if(this._sourcesContents){delete this._sourcesContents[o.toSetString(n)];if(Object.keys(this._sourcesContents).length===0){this._sourcesContents=null}}};SourceMapGenerator.prototype.applySourceMap=function SourceMapGenerator_applySourceMap(e,r,n){var t=r;if(r==null){if(e.file==null){throw new Error("SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, "+'or the source map\'s "file" property. Both were omitted.')}t=e.file}var a=this._sourceRoot;if(a!=null){t=o.relative(a,t)}var u=new i;var s=new i;this._mappings.unsortedForEach((function(r){if(r.source===t&&r.originalLine!=null){var i=e.originalPositionFor({line:r.originalLine,column:r.originalColumn});if(i.source!=null){r.source=i.source;if(n!=null){r.source=o.join(n,r.source)}if(a!=null){r.source=o.relative(a,r.source)}r.originalLine=i.line;r.originalColumn=i.column;if(i.name!=null){r.name=i.name}}}var l=r.source;if(l!=null&&!u.has(l)){u.add(l)}var c=r.name;if(c!=null&&!s.has(c)){s.add(c)}}),this);this._sources=u;this._names=s;e.sources.forEach((function(r){var t=e.sourceContentFor(r);if(t!=null){if(n!=null){r=o.join(n,r)}if(a!=null){r=o.relative(a,r)}this.setSourceContent(r,t)}}),this)};SourceMapGenerator.prototype._validateMapping=function SourceMapGenerator_validateMapping(e,r,n,t){if(r&&typeof r.line!=="number"&&typeof r.column!=="number"){throw new Error("original.line and original.column are not numbers -- you probably meant to omit "+"the original mapping entirely and only map the generated position. If so, pass "+"null for the original mapping instead of an object with empty or null values.")}if(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0&&!r&&!n&&!t){return}else if(e&&"line"in e&&"column"in e&&r&&"line"in r&&"column"in r&&e.line>0&&e.column>=0&&r.line>0&&r.column>=0&&n){return}else{throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:r,name:t}))}};SourceMapGenerator.prototype._serializeMappings=function SourceMapGenerator_serializeMappings(){var e=0;var r=1;var n=0;var i=0;var a=0;var u=0;var s="";var l;var c;var p;var f;var g=this._mappings.toArray();for(var h=0,d=g.length;h0){if(!o.compareByGeneratedPositionsInflated(c,g[h-1])){continue}l+=","}}l+=t.encode(c.generatedColumn-e);e=c.generatedColumn;if(c.source!=null){f=this._sources.indexOf(c.source);l+=t.encode(f-u);u=f;l+=t.encode(c.originalLine-1-i);i=c.originalLine-1;l+=t.encode(c.originalColumn-n);n=c.originalColumn;if(c.name!=null){p=this._names.indexOf(c.name);l+=t.encode(p-a);a=p}}s+=l}return s};SourceMapGenerator.prototype._generateSourcesContent=function SourceMapGenerator_generateSourcesContent(e,r){return e.map((function(e){if(!this._sourcesContents){return null}if(r!=null){e=o.relative(r,e)}var n=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)};SourceMapGenerator.prototype.toJSON=function SourceMapGenerator_toJSON(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};if(this._file!=null){e.file=this._file}if(this._sourceRoot!=null){e.sourceRoot=this._sourceRoot}if(this._sourcesContents){e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)}return e};SourceMapGenerator.prototype.toString=function SourceMapGenerator_toString(){return JSON.stringify(this.toJSON())};r.h=SourceMapGenerator},351:(e,r,n)=>{var t;var o=n(591).h;var i=n(339);var a=/(\r?\n)/;var u=10;var s="$$$isSourceNode$$$";function SourceNode(e,r,n,t,o){this.children=[];this.sourceContents={};this.line=e==null?null:e;this.column=r==null?null:r;this.source=n==null?null:n;this.name=o==null?null:o;this[s]=true;if(t!=null)this.add(t)}SourceNode.fromStringWithSourceMap=function SourceNode_fromStringWithSourceMap(e,r,n){var t=new SourceNode;var o=e.split(a);var u=0;var shiftNextLine=function(){var e=getNextLine();var r=getNextLine()||"";return e+r;function getNextLine(){return u=0;r--){this.prepend(e[r])}}else if(e[s]||typeof e==="string"){this.children.unshift(e)}else{throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e)}return this};SourceNode.prototype.walk=function SourceNode_walk(e){var r;for(var n=0,t=this.children.length;n0){r=[];for(n=0;n{function getArg(e,r,n){if(r in e){return e[r]}else if(arguments.length===3){return n}else{throw new Error('"'+r+'" is a required argument.')}}r.getArg=getArg;var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;var t=/^data:.+\,.+$/;function urlParse(e){var r=e.match(n);if(!r){return null}return{scheme:r[1],auth:r[2],host:r[3],port:r[4],path:r[5]}}r.urlParse=urlParse;function urlGenerate(e){var r="";if(e.scheme){r+=e.scheme+":"}r+="//";if(e.auth){r+=e.auth+"@"}if(e.host){r+=e.host}if(e.port){r+=":"+e.port}if(e.path){r+=e.path}return r}r.urlGenerate=urlGenerate;function normalize(e){var n=e;var t=urlParse(e);if(t){if(!t.path){return e}n=t.path}var o=r.isAbsolute(n);var i=n.split(/\/+/);for(var a,u=0,s=i.length-1;s>=0;s--){a=i[s];if(a==="."){i.splice(s,1)}else if(a===".."){u++}else if(u>0){if(a===""){i.splice(s+1,u);u=0}else{i.splice(s,2);u--}}}n=i.join("/");if(n===""){n=o?"/":"."}if(t){t.path=n;return urlGenerate(t)}return n}r.normalize=normalize;function join(e,r){if(e===""){e="."}if(r===""){r="."}var n=urlParse(r);var o=urlParse(e);if(o){e=o.path||"/"}if(n&&!n.scheme){if(o){n.scheme=o.scheme}return urlGenerate(n)}if(n||r.match(t)){return r}if(o&&!o.host&&!o.path){o.host=r;return urlGenerate(o)}var i=r.charAt(0)==="/"?r:normalize(e.replace(/\/+$/,"")+"/"+r);if(o){o.path=i;return urlGenerate(o)}return i}r.join=join;r.isAbsolute=function(e){return e.charAt(0)==="/"||n.test(e)};function relative(e,r){if(e===""){e="."}e=e.replace(/\/$/,"");var n=0;while(r.indexOf(e+"/")!==0){var t=e.lastIndexOf("/");if(t<0){return r}e=e.slice(0,t);if(e.match(/^([^\/]+:\/)?\/*$/)){return r}++n}return Array(n+1).join("../")+r.substr(e.length+1)}r.relative=relative;var o=function(){var e=Object.create(null);return!("__proto__"in e)}();function identity(e){return e}function toSetString(e){if(isProtoString(e)){return"$"+e}return e}r.toSetString=o?identity:toSetString;function fromSetString(e){if(isProtoString(e)){return e.slice(1)}return e}r.fromSetString=o?identity:fromSetString;function isProtoString(e){if(!e){return false}var r=e.length;if(r<9){return false}if(e.charCodeAt(r-1)!==95||e.charCodeAt(r-2)!==95||e.charCodeAt(r-3)!==111||e.charCodeAt(r-4)!==116||e.charCodeAt(r-5)!==111||e.charCodeAt(r-6)!==114||e.charCodeAt(r-7)!==112||e.charCodeAt(r-8)!==95||e.charCodeAt(r-9)!==95){return false}for(var n=r-10;n>=0;n--){if(e.charCodeAt(n)!==36){return false}}return true}function compareByOriginalPositions(e,r,n){var t=strcmp(e.source,r.source);if(t!==0){return t}t=e.originalLine-r.originalLine;if(t!==0){return t}t=e.originalColumn-r.originalColumn;if(t!==0||n){return t}t=e.generatedColumn-r.generatedColumn;if(t!==0){return t}t=e.generatedLine-r.generatedLine;if(t!==0){return t}return strcmp(e.name,r.name)}r.compareByOriginalPositions=compareByOriginalPositions;function compareByGeneratedPositionsDeflated(e,r,n){var t=e.generatedLine-r.generatedLine;if(t!==0){return t}t=e.generatedColumn-r.generatedColumn;if(t!==0||n){return t}t=strcmp(e.source,r.source);if(t!==0){return t}t=e.originalLine-r.originalLine;if(t!==0){return t}t=e.originalColumn-r.originalColumn;if(t!==0){return t}return strcmp(e.name,r.name)}r.compareByGeneratedPositionsDeflated=compareByGeneratedPositionsDeflated;function strcmp(e,r){if(e===r){return 0}if(e===null){return 1}if(r===null){return-1}if(e>r){return 1}return-1}function compareByGeneratedPositionsInflated(e,r){var n=e.generatedLine-r.generatedLine;if(n!==0){return n}n=e.generatedColumn-r.generatedColumn;if(n!==0){return n}n=strcmp(e.source,r.source);if(n!==0){return n}n=e.originalLine-r.originalLine;if(n!==0){return n}n=e.originalColumn-r.originalColumn;if(n!==0){return n}return strcmp(e.name,r.name)}r.compareByGeneratedPositionsInflated=compareByGeneratedPositionsInflated;function parseSourceMapInput(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}r.parseSourceMapInput=parseSourceMapInput;function computeSourceURL(e,r,n){r=r||"";if(e){if(e[e.length-1]!=="/"&&r[0]!=="/"){e+="/"}r=e+r}if(n){var t=urlParse(n);if(!t){throw new Error("sourceMapURL could not be parsed")}if(t.path){var o=t.path.lastIndexOf("/");if(o>=0){t.path=t.path.substring(0,o+1)}}r=join(urlGenerate(t),r)}return normalize(r)}r.computeSourceURL=computeSourceURL},997:(e,r,n)=>{n(591).h;r.SourceMapConsumer=n(952).SourceMapConsumer;n(351)},284:(e,r,n)=>{e=n.nmd(e);var t=n(997).SourceMapConsumer;var o=n(17);var i;try{i=n(147);if(!i.existsSync||!i.readFileSync){i=null}}catch(e){}var a=n(650);function dynamicRequire(e,r){return e.require(r)}var u=false;var s=false;var l=false;var c="auto";var p={};var f={};var g=/^data:application\/json[^,]+base64,/;var h=[];var d=[];function isInBrowser(){if(c==="browser")return true;if(c==="node")return false;return typeof window!=="undefined"&&typeof XMLHttpRequest==="function"&&!(window.require&&window.module&&window.process&&window.process.type==="renderer")}function hasGlobalProcessEventEmitter(){return typeof process==="object"&&process!==null&&typeof process.on==="function"}function globalProcessVersion(){if(typeof process==="object"&&process!==null){return process.version}else{return""}}function globalProcessStderr(){if(typeof process==="object"&&process!==null){return process.stderr}}function globalProcessExit(e){if(typeof process==="object"&&process!==null&&typeof process.exit==="function"){return process.exit(e)}}function handlerExec(e){return function(r){for(var n=0;n"}var n=this.getLineNumber();if(n!=null){r+=":"+n;var t=this.getColumnNumber();if(t){r+=":"+t}}}var o="";var i=this.getFunctionName();var a=true;var u=this.isConstructor();var s=!(this.isToplevel()||u);if(s){var l=this.getTypeName();if(l==="[object Object]"){l="null"}var c=this.getMethodName();if(i){if(l&&i.indexOf(l)!=0){o+=l+"."}o+=i;if(c&&i.indexOf("."+c)!=i.length-c.length-1){o+=" [as "+c+"]"}}else{o+=l+"."+(c||"")}}else if(u){o+="new "+(i||"")}else if(i){o+=i}else{o+=r;a=false}if(a){o+=" ("+r+")"}return o}function cloneCallSite(e){var r={};Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach((function(n){r[n]=/^(?:is|get)/.test(n)?function(){return e[n].call(e)}:e[n]}));r.toString=CallSiteToString;return r}function wrapCallSite(e,r){if(r===undefined){r={nextPosition:null,curPosition:null}}if(e.isNative()){r.curPosition=null;return e}var n=e.getFileName()||e.getScriptNameOrSourceURL();if(n){var t=e.getLineNumber();var o=e.getColumnNumber()-1;var i=/^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;var a=i.test(globalProcessVersion())?0:62;if(t===1&&o>a&&!isInBrowser()&&!e.isEval()){o-=a}var u=mapSourcePosition({source:n,line:t,column:o});r.curPosition=u;e=cloneCallSite(e);var s=e.getFunctionName;e.getFunctionName=function(){if(r.nextPosition==null){return s()}return r.nextPosition.name||s()};e.getFileName=function(){return u.source};e.getLineNumber=function(){return u.line};e.getColumnNumber=function(){return u.column+1};e.getScriptNameOrSourceURL=function(){return u.source};return e}var l=e.isEval()&&e.getEvalOrigin();if(l){l=mapEvalOrigin(l);e=cloneCallSite(e);e.getEvalOrigin=function(){return l};return e}return e}function prepareStackTrace(e,r){if(l){p={};f={}}var n=e.name||"Error";var t=e.message||"";var o=n+": "+t;var i={nextPosition:null,curPosition:null};var a=[];for(var u=r.length-1;u>=0;u--){a.push("\n at "+wrapCallSite(r[u],i));i.nextPosition=i.curPosition}i.curPosition=i.nextPosition=null;return o+a.reverse().join("")}function getErrorSource(e){var r=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(e.stack);if(r){var n=r[1];var t=+r[2];var o=+r[3];var a=p[n];if(!a&&i&&i.existsSync(n)){try{a=i.readFileSync(n,"utf8")}catch(e){a=""}}if(a){var u=a.split(/(?:\r\n|\r|\n)/)[t-1];if(u){return n+":"+t+"\n"+u+"\n"+new Array(o).join(" ")+"^"}}}return null}function printErrorAndExit(e){var r=getErrorSource(e);var n=globalProcessStderr();if(n&&n._handle&&n._handle.setBlocking){n._handle.setBlocking(true)}if(r){console.error();console.error(r)}console.error(e.stack);globalProcessExit(1)}function shimEmitUncaughtException(){var e=process.emit;process.emit=function(r){if(r==="uncaughtException"){var n=arguments[1]&&arguments[1].stack;var t=this.listeners(r).length>0;if(n&&!t){return printErrorAndExit(arguments[1])}}return e.apply(this,arguments)}}var S=h.slice(0);var _=d.slice(0);r.wrapCallSite=wrapCallSite;r.getErrorSource=getErrorSource;r.mapSourcePosition=mapSourcePosition;r.retrieveSourceMap=v;r.install=function(r){r=r||{};if(r.environment){c=r.environment;if(["node","browser","auto"].indexOf(c)===-1){throw new Error("environment "+c+" was unknown. Available options are {auto, browser, node}")}}if(r.retrieveFile){if(r.overrideRetrieveFile){h.length=0}h.unshift(r.retrieveFile)}if(r.retrieveSourceMap){if(r.overrideRetrieveSourceMap){d.length=0}d.unshift(r.retrieveSourceMap)}if(r.hookRequire&&!isInBrowser()){var n=dynamicRequire(e,"module");var t=n.prototype._compile;if(!t.__sourceMapSupport){n.prototype._compile=function(e,r){p[r]=e;f[r]=undefined;return t.call(this,e,r)};n.prototype._compile.__sourceMapSupport=true}}if(!l){l="emptyCacheBetweenOperations"in r?r.emptyCacheBetweenOperations:false}if(!u){u=true;Error.prepareStackTrace=prepareStackTrace}if(!s){var o="handleUncaughtExceptions"in r?r.handleUncaughtExceptions:true;try{var i=dynamicRequire(e,"worker_threads");if(i.isMainThread===false){o=false}}catch(e){}if(o&&hasGlobalProcessEventEmitter()){s=true;shimEmitUncaughtException()}}};r.resetRetrieveHandlers=function(){h.length=0;d.length=0;h=S.slice(0);d=_.slice(0);v=handlerExec(d);m=handlerExec(h)}},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")}};var r={};function __webpack_require__(n){var t=r[n];if(t!==undefined){return t.exports}var o=r[n]={id:n,loaded:false,exports:{}};var i=true;try{e[n](o,o.exports,__webpack_require__);i=false}finally{if(i)delete r[n]}o.loaded=true;return o.exports}(()=>{__webpack_require__.nmd=e=>{e.paths=[];if(!e.children)e.children=[];return e}})();if(typeof __webpack_require__!=="undefined")__webpack_require__.ab=__dirname+"/";var n={};(()=>{__webpack_require__(284).install()})();module.exports=n})(); \ No newline at end of file diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..66e2fcb --- /dev/null +++ b/example/README.md @@ -0,0 +1,13 @@ +# Example + +Execute the following command to run the example: + +```shell +./run.sh +``` + +The example runs the following steps: + +1. Start the server. +2. Start the client with valid HMAC credentials. +3. Run gRPC client with invalid HMAC credentials. diff --git a/example/example.proto b/example/example.proto new file mode 100644 index 0000000..168510c --- /dev/null +++ b/example/example.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; + +package example; + +import "google/protobuf/empty.proto"; // import google.protobuf.Empty + +option go_package = "go-grpc-hmac/example/pb"; // go_package is the package name for generated go code + +// User is a user +message User { + // Name of the user + string name = 1; + // Email of the user + string email = 2; +} + +// GetUserRequest is a request to get a user by name +message GetUserRequest { + // Name of the user to get + string name = 1; +} + +// UserService is a service exposed by Grpc servers that provides user management +service UserService { + // Get a user by name + rpc GetUser(GetUserRequest) returns (User); + // List all users + rpc ListUsers(google.protobuf.Empty) returns (stream User); +} \ No newline at end of file diff --git a/example/generated/example.ts b/example/generated/example.ts new file mode 100644 index 0000000..de7595f --- /dev/null +++ b/example/generated/example.ts @@ -0,0 +1,29 @@ +import type * as grpc from "@grpc/grpc-js"; +import type { MessageTypeDefinition } from "@grpc/proto-loader"; + +import type { + UserServiceClient as _example_UserServiceClient, + UserServiceDefinition as _example_UserServiceDefinition +} from "./example/UserService"; + +type SubtypeConstructor any, Subtype> = { + new (...args: ConstructorParameters): Subtype; +}; + +export interface ProtoGrpcType { + example: { + GetUserRequest: MessageTypeDefinition; + User: MessageTypeDefinition; + /** + * UserService is a service exposed by Grpc servers that provides user management + */ + UserService: SubtypeConstructor & { + service: _example_UserServiceDefinition; + }; + }; + google: { + protobuf: { + Empty: MessageTypeDefinition; + }; + }; +} diff --git a/example/generated/example/GetUserRequest.ts b/example/generated/example/GetUserRequest.ts new file mode 100644 index 0000000..8dd0af3 --- /dev/null +++ b/example/generated/example/GetUserRequest.ts @@ -0,0 +1,21 @@ +// Original file: example.proto + +/** + * GetUserRequest is a request to get a user by name + */ +export interface GetUserRequest { + /** + * Name of the user to get + */ + name?: string; +} + +/** + * GetUserRequest is a request to get a user by name + */ +export interface GetUserRequest__Output { + /** + * Name of the user to get + */ + name: string; +} diff --git a/example/generated/example/User.ts b/example/generated/example/User.ts new file mode 100644 index 0000000..45b9573 --- /dev/null +++ b/example/generated/example/User.ts @@ -0,0 +1,29 @@ +// Original file: example.proto + +/** + * User is a user + */ +export interface User { + /** + * Name of the user + */ + name?: string; + /** + * Email of the user + */ + email?: string; +} + +/** + * User is a user + */ +export interface User__Output { + /** + * Name of the user + */ + name: string; + /** + * Email of the user + */ + email: string; +} diff --git a/example/generated/example/UserService.ts b/example/generated/example/UserService.ts new file mode 100644 index 0000000..76dcda2 --- /dev/null +++ b/example/generated/example/UserService.ts @@ -0,0 +1,120 @@ +// Original file: example.proto + +import type * as grpc from "@grpc/grpc-js"; +import type { MethodDefinition } from "@grpc/proto-loader"; +import type { + Empty as _google_protobuf_Empty, + Empty__Output as _google_protobuf_Empty__Output +} from "../google/protobuf/Empty"; +import type { + GetUserRequest as _example_GetUserRequest, + GetUserRequest__Output as _example_GetUserRequest__Output +} from "../example/GetUserRequest"; +import type { User as _example_User, User__Output as _example_User__Output } from "../example/User"; + +/** + * UserService is a service exposed by Grpc servers that provides user management + */ +export interface UserServiceClient extends grpc.Client { + /** + * Get a user by name + */ + GetUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + GetUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + GetUser( + argument: _example_GetUserRequest, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + GetUser( + argument: _example_GetUserRequest, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + /** + * Get a user by name + */ + getUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + getUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + getUser( + argument: _example_GetUserRequest, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + getUser( + argument: _example_GetUserRequest, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + + /** + * List all users + */ + ListUsers( + argument: _google_protobuf_Empty, + metadata: grpc.Metadata, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; + ListUsers( + argument: _google_protobuf_Empty, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; + /** + * List all users + */ + listUsers( + argument: _google_protobuf_Empty, + metadata: grpc.Metadata, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; + listUsers( + argument: _google_protobuf_Empty, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; +} + +/** + * UserService is a service exposed by Grpc servers that provides user management + */ +export interface UserServiceHandlers extends grpc.UntypedServiceImplementation { + /** + * Get a user by name + */ + GetUser: grpc.handleUnaryCall<_example_GetUserRequest__Output, _example_User>; + + /** + * List all users + */ + ListUsers: grpc.handleServerStreamingCall<_google_protobuf_Empty__Output, _example_User>; +} + +export interface UserServiceDefinition extends grpc.ServiceDefinition { + GetUser: MethodDefinition< + _example_GetUserRequest, + _example_User, + _example_GetUserRequest__Output, + _example_User__Output + >; + ListUsers: MethodDefinition< + _google_protobuf_Empty, + _example_User, + _google_protobuf_Empty__Output, + _example_User__Output + >; +} diff --git a/example/generated/google/protobuf/Empty.ts b/example/generated/google/protobuf/Empty.ts new file mode 100644 index 0000000..73cbdee --- /dev/null +++ b/example/generated/google/protobuf/Empty.ts @@ -0,0 +1,5 @@ +// Original file: null + +export interface Empty {} + +export interface Empty__Output {} diff --git a/example/package-lock.json b/example/package-lock.json new file mode 100644 index 0000000..2ea3c4c --- /dev/null +++ b/example/package-lock.json @@ -0,0 +1,823 @@ +{ + "name": "example", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example", + "version": "0.0.0", + "license": "MIT", + "devDependencies": { + "@grpc/grpc-js": "^1.10.1", + "@grpc/proto-loader": "^0.7.10", + "grpc-hmac-interceptor": "file:../grpc-hmac-interceptor-1.0.0.tgz", + "tsx": "^4.7.1", + "typescript": "^5.3.3" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.1.tgz", + "integrity": "sha512-55ONqFytZExfOIjF1RjXPcVmT/jJqFzbbDqxK9jmRV4nxiYWtL9hENSW1Jfx0SdZfrvoqd44YJ/GJTqfRrawSQ==", + "dev": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", + "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "dev": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/grpc-hmac-interceptor": { + "version": "1.0.0", + "resolved": "file:../grpc-hmac-interceptor-1.0.0.tgz", + "integrity": "sha512-k/rg0qGec1nvCZ367kn/0s4rBAJNB/9yimMa2x+tAl67E29iBWcRHn18wk/mOC7aOobMMySlKag2wcwtMgjtxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + }, + "node_modules/protobufjs": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsx": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz", + "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==", + "dev": true, + "dependencies": { + "esbuild": "~0.19.10", + "get-tsconfig": "^4.7.2" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/example/package.json b/example/package.json new file mode 100644 index 0000000..f5fc23d --- /dev/null +++ b/example/package.json @@ -0,0 +1,27 @@ +{ + "name": "example", + "version": "0.0.0", + "description": "Example for gRPC Client/Server HMAC Interceptor", + "main": "main.js", + "type": "module", + "scripts": { + "client": "tsx ./src/client/main.ts", + "server": "tsx ./src/server/main.ts", + "generate": "npm run generate-test-types", + "generate-test-types": "proto-loader-gen-types --longs String --enums String --keepCase --defaults --oneofs --includeComments -O ./generated --grpcLib @grpc/grpc-js example.proto" + }, + "keywords": [ + "hmac", + "interceptor", + "grpc" + ], + "author": "tooling-team@travix.com", + "license": "MIT", + "devDependencies": { + "@grpc/grpc-js": "^1.10.1", + "@grpc/proto-loader": "^0.7.10", + "grpc-hmac-interceptor": "file:../grpc-hmac-interceptor-1.0.0.tgz", + "tsx": "^4.7.1", + "typescript": "^5.3.3" + } +} diff --git a/example/run.sh b/example/run.sh new file mode 100755 index 0000000..9dc2716 --- /dev/null +++ b/example/run.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +set -eo pipefail + +if [[ -z "${CI}" ]]; then + trap "exit" INT TERM + trap "kill 0" EXIT +fi + +# Set HMAC key ID +export HMAC_KEY_ID="key" + +# Generate a random HMAC secret +HMAC_SECRET="$(head /dev/urandom | LC_ALL=C tr -dc A-Za-z0-9 | head -c24)" +export HMAC_SECRET + +# Function to log messages +log() { + echo -e "[run.sh] $1" +} + +# Start the server +npm run server & +log "Server starting with HMAC_SECRET=${HMAC_SECRET}" + +# Wait for the server to start +sleep_duration=2 +log "Waiting ${sleep_duration} seconds for the server to start..." +sleep ${sleep_duration} + +# Run the client with valid credentials +log "Running client with valid credentials, HMAC_SECRET=${HMAC_SECRET}" +npm run client + +# Run the client with invalid credentials +invalid_secret="wrong-secret" +export HMAC_SECRET="${invalid_secret}" +log "Running client with invalid credentials, HMAC_SECRET=${HMAC_SECRET}" +npm run client + diff --git a/example/src/client/main.ts b/example/src/client/main.ts new file mode 100644 index 0000000..785eeab --- /dev/null +++ b/example/src/client/main.ts @@ -0,0 +1,41 @@ +import { credentials, ServiceError } from "@grpc/grpc-js"; +import { User } from "../../generated/example/User"; +import { NewClientInterceptor, initLogger } from "grpc-hmac-interceptor"; +import { GetUserRequest } from "../../generated/example/GetUserRequest"; +import { ServiceClient } from "@grpc/grpc-js/build/src/make-client"; +import { getService } from "../common"; +import { fileURLToPath } from "url"; +import { dirname } from "path"; +import * as path from "path"; + +const log = initLogger(); +const main = () => { + const { HMAC_KEY_ID: keyId = "key", HMAC_SECRET: secretKey = "secret" } = process.env; + const dir = dirname(fileURLToPath(import.meta.url)); + const protoPath = path.join(dir, "../../", "example.proto"); + console.log(protoPath); + const [_userService, construct] = getService({ + path: protoPath, + package: "example", + service: "UserService" + }); + const target = "localhost:50051"; + const interceptor = NewClientInterceptor(keyId, secretKey); + + // @ts-ignore + const client: ServiceClient = new construct(target, credentials.createInsecure(), { + interceptors: [interceptor.WithInterceptor()] + }); + + const req = { name: "unknown" } as GetUserRequest; + req.name = "Unknown"; + client.getUser(req, (err: ServiceError, response: User) => { + if (err) { + log.error(`Error from Server: ${err.message}`); + return; + } + log.info(`Response from Server: ${JSON.stringify(response)}`); + }); +}; + +main(); diff --git a/example/src/common.ts b/example/src/common.ts new file mode 100644 index 0000000..b56ed30 --- /dev/null +++ b/example/src/common.ts @@ -0,0 +1,26 @@ +import { GrpcObject, loadPackageDefinition, ServiceClientConstructor, ServiceDefinition } from "@grpc/grpc-js"; +import * as protoLoader from "@grpc/proto-loader"; +import * as path from "path"; + +export interface ServiceDetails { + path: string; + package: string; + service: string; +} + +const protoLoaderOptions = { + keepCase: true, + longs: String, + enums: String, + defaults: true, + oneofs: true +}; + +export const getService = (serviceDetails: ServiceDetails): [ServiceDefinition, ServiceClientConstructor] => { + const protoPath = path.join(serviceDetails.path); + const packageDefinition = protoLoader.loadSync(protoPath, protoLoaderOptions); + const protoObject = loadPackageDefinition(packageDefinition); + const services = protoObject[serviceDetails.package] as GrpcObject; + const construct = services[serviceDetails.service] as ServiceClientConstructor; + return [construct.service, construct]; +}; diff --git a/example/src/server/main.ts b/example/src/server/main.ts new file mode 100644 index 0000000..217cff1 --- /dev/null +++ b/example/src/server/main.ts @@ -0,0 +1,88 @@ +import { sendUnaryData, Server, ServerCredentials, ServerUnaryCall, ServerWritableStream } from "@grpc/grpc-js"; +import { GetUserRequest } from "../../generated/example/GetUserRequest"; +import { User } from "../../generated/example/User"; +import { NewServerInterceptor, initLogger } from "grpc-hmac-interceptor"; +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import path from "path"; +import { getService } from "../common"; + +const { HMAC_KEY_ID: keyId = "key", HMAC_SECRET: secretKey = "secret" } = process.env; + +const log = initLogger(); +/** + * Implementation of the example service + */ + +export const serviceImpl = { + getUser: (_call: ServerUnaryCall, callback: sendUnaryData) => { + const user = { + name: "Unknown", + email: "unknown@example.com" + }; + + callback(null, user); + }, + listUsers: (call: ServerWritableStream) => { + const users: User[] = [ + { + name: "Unknown", + email: "unknown@example.com" + }, + { + name: "Known", + email: "known@example.com" + } + ]; + users.forEach(user => { + call.write(user); + }); + call.end(); + } +}; + +/** + * getSecret function to fetch the secret from secret manager or any other source + */ +const getSecret = (key: string = keyId): string => { + // Any implementation to fetch the secret from a database or any other source + const secrets = [ + { + key: keyId, + secret: secretKey + } + ]; + + const secret = secrets.find(secret => key === secret.key); + if (secret) { + return secret.secret; + } else { + return ""; + } +}; + +const main = () => { + const __dirname = dirname(fileURLToPath(import.meta.url)); + const protoPath = path.join(__dirname, "../../", "example.proto"); + const [userService, _constructor] = getService({ + path: protoPath, + package: "example", + service: "UserService" + }); + + const target = "localhost:50051"; + + const interceptor = NewServerInterceptor(getSecret); + + let server: Server = new Server({ interceptors: [interceptor.WithInterceptor()] }); + + server.addService(userService, serviceImpl); + server.bindAsync(target, ServerCredentials.createInsecure(), (error, port) => { + if (error) { + log.error("Failed to start server", error); + } + log.info(`Server started on port ${port}`); + }); +}; + +main(); diff --git a/example/tsconfig.json b/example/tsconfig.json new file mode 100644 index 0000000..7a564be --- /dev/null +++ b/example/tsconfig.json @@ -0,0 +1,114 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "esnext", /* Specify what module code is generated. */ + // "rootDir": ".", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ +// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ +// "paths": { +// "lib/*": ["../node_modules/ts-grpc-hmac/src/lib/*"], +// }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ +// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": [ + "src" + ] +} diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..080986a --- /dev/null +++ b/index.ts @@ -0,0 +1,6 @@ +import { initLogger } from "./src/lib/logger"; +import { NewClientInterceptor } from "./src/client"; +import { NewServerInterceptor } from "./src/server"; +import { HMAC, GetSecret } from "./src/lib/hmac"; + +export { initLogger, NewClientInterceptor, NewServerInterceptor, HMAC, GetSecret }; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5589b4a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11231 @@ +{ + "name": "grpc-hmac-interceptor", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "grpc-hmac-interceptor", + "version": "1.0.0", + "license": "MIT", + "devDependencies": { + "@grpc/grpc-js": "^1.10.1", + "@grpc/proto-loader": "^0.7.10", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "@vercel/ncc": "^0.38.1", + "chalk": "^5.3.0", + "concurrently": "^8.2.2", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-simple-import-sort": "^12.0.0", + "eslint-plugin-vitest-globals": "^1.4.0", + "prettier": "^3.2.5", + "semantic-release": "^23.0.2", + "typescript": "^5.3.3", + "typescript-eslint": "^7.1.1", + "vitest": "^1.3.1", + "winston": "^3.12.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dev": true, + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.1.tgz", + "integrity": "sha512-55ONqFytZExfOIjF1RjXPcVmT/jJqFzbbDqxK9jmRV4nxiYWtL9hENSW1Jfx0SdZfrvoqd44YJ/GJTqfRrawSQ==", + "dev": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", + "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "dev": true, + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.4", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.1.0.tgz", + "integrity": "sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.0.0", + "@octokit/request": "^8.0.2", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/endpoint": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", + "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "dev": true, + "dependencies": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-retry": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "dev": true, + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", + "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.2.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@octokit/request": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.2.0.tgz", + "integrity": "sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dev": true, + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", + "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", + "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", + "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", + "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", + "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", + "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", + "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", + "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", + "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", + "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", + "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", + "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", + "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-11.1.0.tgz", + "integrity": "sha512-cXNTbv3nXR2hlzHjAMgbuiQVtvWHTlwwISt60B+4NZv01y/QRY7p2HcJm8Eh2StzcTJoNnflvKjHH/cjFS7d5g==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "import-from-esm": "^1.0.3", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "dev": true, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/github": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", + "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "dev": true, + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^6.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/globby": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-11.0.3.tgz", + "integrity": "sha512-KUsozQGhRBAnoVg4UMZj9ep436VEGwT536/jwSqB7vcEfA6oncCUU7UIYTRdLx7GvTtqn0kBjnkfLVkcnBa2YQ==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^8.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^10.5.0", + "rc": "^1.2.8", + "read-pkg": "^9.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": "^18.17 || >=20" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-12.1.0.tgz", + "integrity": "sha512-g6M9AjUKAZUZnxaJZnouNBeDNTCUrJ5Ltj+VJ60gJeDaRRahcHsry9HW8yKrnKkKNkx5lbWiEP1FPMqVNQz8Kg==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^1.0.3", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^11.0.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.1.1.tgz", + "integrity": "sha512-zioDz623d0RHNhvx0eesUmGfIjzrk18nSBC8xewepKXbBvN/7c1qImV7Hg8TI1URTxKax7/zxfxj3Uph8Chcuw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/type-utils": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.1.1.tgz", + "integrity": "sha512-ZWUFyL0z04R1nAEgr9e79YtV5LbafdOtN7yapNbn1ansMyaegl2D4bL7vHoJ4HPSc4CaLwuCVas8CVuneKzplQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.1.1.tgz", + "integrity": "sha512-cirZpA8bJMRb4WZ+rO6+mnOJrGFDd38WoXCEI57+CYBqta8Yc8aJym2i7vyqLL1vVYljgw0X27axkUXz32T8TA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.1.1.tgz", + "integrity": "sha512-5r4RKze6XHEEhlZnJtR3GYeCh1IueUHdbrukV2KSlLXaTjuSfeVF8mZUVPLovidCuZfbVjfhi4c0DNSa/Rdg5g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.1.1", + "@typescript-eslint/utils": "7.1.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.1.1.tgz", + "integrity": "sha512-KhewzrlRMrgeKm1U9bh2z5aoL4s7K3tK5DwHDn8MHv0yQfWFz/0ZR6trrIHHa5CsF83j/GgHqzdbzCXJ3crx0Q==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.1.1.tgz", + "integrity": "sha512-9ZOncVSfr+sMXVxxca2OJOPagRwT0u/UHikM2Rd6L/aB+kL/QAuTnsv6MeXtjzCJYb8PzrXarypSGIPx3Jemxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/visitor-keys": "7.1.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.1.1.tgz", + "integrity": "sha512-thOXM89xA03xAE0lW7alstvnyoBUbBX38YtY+zAUcpRPcq9EIhXPuJ0YTv948MbzmKh6e1AUszn5cBFK49Umqg==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "7.1.1", + "@typescript-eslint/types": "7.1.1", + "@typescript-eslint/typescript-estree": "7.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.1.1.tgz", + "integrity": "sha512-yTdHDQxY7cSoCcAtiBzVzxleJhkGB9NncSIyMYe2+OGON1ZsP9zOPws/Pqgopa65jvknOjlk/w7ulPlZ78PiLQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.1.1", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vercel/ncc": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", + "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", + "dev": true, + "bin": { + "ncc": "dist/ncc/cli.js" + } + }, + "node_modules/@vitest/expect": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.3.1.tgz", + "integrity": "sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==", + "dev": true, + "dependencies": { + "@vitest/spy": "1.3.1", + "@vitest/utils": "1.3.1", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.3.1.tgz", + "integrity": "sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==", + "dev": true, + "dependencies": { + "@vitest/utils": "1.3.1", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.3.1.tgz", + "integrity": "sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.3.1.tgz", + "integrity": "sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==", + "dev": true, + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.3.1.tgz", + "integrity": "sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "dev": true, + "dependencies": { + "type-fest": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "dev": true + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", + "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cli-highlight/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dev": true, + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "dev": true + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", + "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-ci": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.0.0.tgz", + "integrity": "sha512-apikxMgkipkgTvMdRT9MNqWx5VLOci79F4VBd7Op/7OPjjoanjdAvn6fglMCCEf/1bAh8eOiuEVCUs4V3qP3nQ==", + "dev": true, + "dependencies": { + "execa": "^8.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz", + "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "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.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.0.0.tgz", + "integrity": "sha512-8o0dVEdAkYap0Cn5kNeklaKcT1nUsa3LITWEuFk3nJifOoD+5JQGoyDUW2W/iPWwBsNBJpyJS9y4je/BgxLcyQ==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-plugin-vitest-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.4.0.tgz", + "integrity": "sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "dev": true, + "dependencies": { + "semver-regex": "^4.0.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/git-log-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", + "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==", + "dev": true, + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "~0.6.6" + } + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "dev": true, + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-from-esm": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.3.tgz", + "integrity": "sha512-U3Qt/CyfFpTUv6LOP2jRTLYjphH6zg3okMfHbyqRa/W2w6hr8OsJWVggNlR4jxuojQy81TgTJTxgSkyoteRGMQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=16.20" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/issue-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", + "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/logform": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", + "dev": true, + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/marked": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-12.0.0.tgz", + "integrity": "sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==", + "dev": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-terminal": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.0.0.tgz", + "integrity": "sha512-sNEx8nn9Ktcm6pL0TnRz8tnXq/mSS0Q1FRSwJOAqw4lAB4l49UeDf85Gm1n9RPFm5qurCPjwi1StAQT2XExhZw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^6.2.0", + "chalk": "^5.3.0", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.3", + "node-emoji": "^2.1.3", + "supports-hyperlinks": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <13" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", + "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mlly": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "dev": true + }, + "node_modules/node-emoji": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.1.3.tgz", + "integrity": "sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.5.0.tgz", + "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.4", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/run-script": "^7.0.4", + "@sigstore/tuf": "^2.3.1", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.2", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.1", + "ini": "^4.1.1", + "init-package-json": "^6.0.0", + "is-cidr": "^5.0.3", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^7.0.4", + "libnpmfund": "^5.0.1", + "libnpmhook": "^10.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^6.0.3", + "libnpmpublish": "^9.0.2", + "libnpmsearch": "^7.0.0", + "libnpmteam": "^6.0.0", + "libnpmversion": "^5.0.1", + "make-fetch-happen": "^13.0.0", + "minimatch": "^9.0.3", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.0.1", + "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-profile": "^9.0.0", + "npm-registry-fetch": "^16.1.0", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^17.0.6", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.1.0", + "semver": "^7.6.0", + "spdx-expression-parse": "^3.0.1", + "ssri": "^10.0.5", + "supports-color": "^9.4.0", + "tar": "^6.2.0", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.1.0", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.2.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/gauge": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.0.3", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "4.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^9.0.0", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4", + "tar": "^6.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "7.0.8", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.1", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "6.0.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^7.0.2", + "npm-package-arg": "^11.0.1", + "pacote": "^17.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.0", + "npm-package-arg": "^11.0.1", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^16.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "5.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.3", + "@npmcli/run-script": "^7.0.2", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "10.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "9.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "16.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "17.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.10.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "2.2.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "@sigstore/sign": "^2.2.3", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 16.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.17", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", + "dev": true, + "dependencies": { + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "dev": true, + "dependencies": { + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.1.tgz", + "integrity": "sha512-2wnaR0XL/FDOj+TgpDuRb2KTjLnu3Fma6b1ZUwGY7LcqenMcvP/YFpjpbPKY6WVGsbuJZRuoUz8iPrt8ORnAFw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-reduce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", + "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/protobufjs": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-11.0.0.tgz", + "integrity": "sha512-LOVbvF1Q0SZdjClSefZ0Nz5z8u+tIE7mV5NibzmE9VYmDe9CaBbAVtz1veOSZbofrdsilxuDAYnFenukZVp8/Q==", + "deprecated": "Renamed to read-package-up", + "dev": true, + "dependencies": { + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.11.1.tgz", + "integrity": "sha512-MFMf6VkEVZAETidGGSYW2B1MjXbGX+sWIywn2QPEaJ3j08V+MwVRHMXtf2noB8ENJaD0LIun9wh5Z6OPNf1QzQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.11.1.tgz", + "integrity": "sha512-MFMf6VkEVZAETidGGSYW2B1MjXbGX+sWIywn2QPEaJ3j08V+MwVRHMXtf2noB8ENJaD0LIun9wh5Z6OPNf1QzQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", + "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.12.0", + "@rollup/rollup-android-arm64": "4.12.0", + "@rollup/rollup-darwin-arm64": "4.12.0", + "@rollup/rollup-darwin-x64": "4.12.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", + "@rollup/rollup-linux-arm64-gnu": "4.12.0", + "@rollup/rollup-linux-arm64-musl": "4.12.0", + "@rollup/rollup-linux-riscv64-gnu": "4.12.0", + "@rollup/rollup-linux-x64-gnu": "4.12.0", + "@rollup/rollup-linux-x64-musl": "4.12.0", + "@rollup/rollup-win32-arm64-msvc": "4.12.0", + "@rollup/rollup-win32-ia32-msvc": "4.12.0", + "@rollup/rollup-win32-x64-msvc": "4.12.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.2.tgz", + "integrity": "sha512-OnVYJ6Xgzwe1x8MKswba7RU9+5djS1MWRTrTn5qsq3xZYpslroZkV9Pt0dA2YcIuieeuSZWJhn+yUWoBUHO5Fw==", + "dev": true, + "dependencies": { + "@semantic-release/commit-analyzer": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^9.0.0", + "@semantic-release/npm": "^11.0.0", + "@semantic-release/release-notes-generator": "^12.0.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^9.0.0", + "debug": "^4.0.0", + "env-ci": "^11.0.0", + "execa": "^8.0.0", + "figures": "^6.0.0", + "find-versions": "^5.1.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^7.0.0", + "import-from-esm": "^1.3.1", + "lodash-es": "^4.17.21", + "marked": "^12.0.0", + "marked-terminal": "^7.0.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-pkg-up": "^11.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=20.8.1" + } + }, + "node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dev": true, + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/signale/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "dev": true, + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "dev": true + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "dev": true, + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.0.0.tgz", + "integrity": "sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==", + "dev": true, + "dependencies": { + "js-tokens": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", + "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tinybench": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz", + "integrity": "sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.2.tgz", + "integrity": "sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "dev": true, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.1.1.tgz", + "integrity": "sha512-vScnjSkm0pjZqySB5o8ZbfywfGWamVOqIGtJeOnUuDDGFaGKwMqdZWVa7EYKBnLCUSuwD8MN2a2ur9OgaKu6Tg==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "7.1.1", + "@typescript-eslint/parser": "7.1.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz", + "integrity": "sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.3.1.tgz", + "integrity": "sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.3.1.tgz", + "integrity": "sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==", + "dev": true, + "dependencies": { + "@vitest/expect": "1.3.1", + "@vitest/runner": "1.3.1", + "@vitest/snapshot": "1.3.1", + "@vitest/spy": "1.3.1", + "@vitest/utils": "1.3.1", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.2", + "vite": "^5.0.0", + "vite-node": "1.3.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.3.1", + "@vitest/ui": "1.3.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vitest/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/winston": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.12.0.tgz", + "integrity": "sha512-OwbxKaOlESDi01mC9rkM0dQqQt2I8DAUMRLZ/HpbwvDXm85IryEHgoogy5fziQy38PntgZsLlhAYHz//UPHZ5w==", + "dev": true, + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.7.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", + "dev": true, + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/winston/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..de44320 --- /dev/null +++ b/package.json @@ -0,0 +1,100 @@ +{ + "name": "grpc-hmac-interceptor", + "version": "1.0.0", + "description": "Nodejs library for effortless HMAC Client and Server interceptors in gRPC applications.", + "type": "module", + "main": "build/index.js", + "scripts": { + "all": "npm run clean && npm run generate && npm run format --fix && npm run lint -- --fix && npm run test -- --run && npm run build", + "clean": "rimraf build", + "format": "prettier --write '**/*.{ts,js,cjs,json}'", + "format-check": "prettier --check '**/*.{ts,js,cjs,json}'", + "lint": "eslint src/**/*.ts test/**/*.ts --cache", + "test": "vitest", + "generate": "npm run generate-test-types", + "generate-test-types": "proto-loader-gen-types --longs String --enums String --keepCase --defaults --oneofs --includeComments --include-dirs ./test/fixtures/ -O test/common/generated/ --grpcLib @grpc/grpc-js example.proto", + "build-server": "ncc build src/server/index.ts -mo build/src/server --source-map --license licenses.txt --target es2022", + "build-client": "ncc build src/client/index.ts -mo build/src/client --source-map --license licenses.txt --target es2022", + "build": "ncc build ./index.ts -mo build --source-map --license licenses.txt --target es2022", + "build-all": "concurrently 'npm run build-server' 'npm run build-client' 'npm run build'", + "compile": "tsc -p .", + "pack": "npm pack" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/travix/ts-grpc-hmac.git" + }, + "release": { + "branches": [ + "main" + ], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + "@semantic-release/changelog", + "@semantic-release/npm", + { + "npmPublish": false, + "tarballDir": "build" + }, + [ + "@semantic-release/git", + { + "assets": [ + "package.json" + ], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ], + [ + "@semantic-release/github", + { + "assets": [ + { + "path": "build/*.tgz", + "label": "ts-grpc-hmac-${nextRelease.version}.tgz" + } + ] + } + ] + ] + }, + "keywords": [ + "grpc", + "node", + "interceptor" + ], + "author": "Travix International", + "homepage": "https://github.com/travix/ts-grpc-hmac#readme", + "license": "MIT", + "devDependencies": { + "@grpc/grpc-js": "^1.10.1", + "@grpc/proto-loader": "^0.7.10", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "@vercel/ncc": "^0.38.1", + "chalk": "^5.3.0", + "concurrently": "^8.2.2", + "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-simple-import-sort": "^12.0.0", + "eslint-plugin-vitest-globals": "^1.4.0", + "prettier": "^3.2.5", + "semantic-release": "^23.0.2", + "typescript": "^5.3.3", + "typescript-eslint": "^7.1.1", + "vitest": "^1.3.1", + "winston": "^3.12.0" + }, + "files": [ + "src", + "index.ts", + "build/*.{js,cjs,d.ts,js.map}", + "LICENSE" + ] +} diff --git a/src/client/index.ts b/src/client/index.ts new file mode 100644 index 0000000..d3ec2f6 --- /dev/null +++ b/src/client/index.ts @@ -0,0 +1,137 @@ +import { + InterceptingCall, + InterceptingListener, + InterceptorOptions, + Metadata, + NextCall, + RequesterBuilder +} from "@grpc/grpc-js"; +import { FullListener } from "@grpc/grpc-js/build/src/call-interface"; +import { Logger } from "winston"; + +import { HMAC } from "../lib/hmac"; +import { initLogger } from "../lib/logger"; + +const log: Logger = initLogger(); + +/** + * Interface for a client-side interceptor. + */ +export interface ClientInterceptor { + /** + * Function that creates a unary client interceptor. + * @param options - Interceptor options. + * @param next - Next call in the interceptor chain. + * @returns InterceptingCall + */ + Interceptor: (options: InterceptorOptions, next: NextCall) => InterceptingCall; + + /** + * Function that returns a unary client interceptor. + * @returns Function that creates a unary client interceptor. + */ + WithInterceptor: () => (options: InterceptorOptions, nextCall: NextCall) => InterceptingCall; +} + +class ClientInterceptorImpl implements ClientInterceptor { + private readonly hmacKeyId: string; + private readonly hmacSecret: string; + private hmac: HMAC; + + /** + * Create a new instance of the ClientInterceptor. + * @param hmacKeyId - HMAC key ID. + * @param hmacSecret - HMAC secret key. + */ + constructor(hmacKeyId: string, hmacSecret: string) { + this.hmacKeyId = hmacKeyId; + this.hmacSecret = hmacSecret; + this.hmac = new HMAC(); + } + + /** + * Function that creates a unary client interceptor. + * @param options - Interceptor options. + * @param next - Next call in the interceptor chain. + * @returns InterceptingCall + */ + Interceptor(options: InterceptorOptions, next: NextCall): InterceptingCall { + let savedMetadata: Metadata; + let savedListener: InterceptingListener; + let startNext: (metadata: Metadata, listener: InterceptingListener | Partial) => void; + + // Create a Requester using RequesterBuilder + const requester = new RequesterBuilder() + .withStart((metadata, listener, next) => { + savedMetadata = metadata; + savedListener = listener; + startNext = next; + }) + .withSendMessage((message, next) => { + if (typeof message === "string") { + log.info(`Sending message: ${message}`); + } else if (message instanceof Buffer) { + log.info(`Sending message: ${message.toString()}`); + } else if (typeof message === "object") { + log.info(`Sending message: ${JSON.stringify(message)}`); + } else if (typeof message === "number") { + log.info(`Sending message: ${message}`); + } else if (typeof message === "boolean") { + log.info(`Sending message: ${message}`); + } else if (message === undefined) { + log.info(`Sending message: undefined`); + } + // Encode the message and generate the signature + const [msg, encodeErr] = this.hmac.buildMessage(message, options.method_definition.path); + if (encodeErr) { + log.error(`Failed to encode request: ${encodeErr}`); + return; + } + + const [signature, signErr] = this.hmac.generateSignature(this.hmacSecret, msg); + if (signErr) { + log.error(`Failed to generate signature: ${signErr}`); + return; + } + + // Set HMAC-related metadata + savedMetadata = savedMetadata ?? new Metadata(); + savedMetadata.set("x-hmac-key-id", this.hmacKeyId); + savedMetadata.set("x-hmac-signature", signature); + + // Call the next interceptor + startNext(savedMetadata, savedListener); + next(message); + }) + .withHalfClose(next => { + next(); + }) + .withCancel(message => { + log.error(`Cancelled message: ${message}`); + }) + .build(); + + // Return the InterceptingCall with the next call and the requester + return new InterceptingCall(next(options), requester); + } + + /** + * Function that returns a unary client interceptor. + * @returns Function that creates a unary client interceptor. + */ + WithInterceptor(): (options: InterceptorOptions, nextCall: NextCall) => InterceptingCall { + return (options: InterceptorOptions, next: NextCall) => { + return this.Interceptor(options, next); + }; + } +} + +/** + * Factory function to create a new client interceptor. + * @param hmacKeyId - HMAC key ID. + * @param hmacSecret - HMAC secret key. + * @returns ClientInterceptor + */ +export const NewClientInterceptor = (hmacKeyId: string, hmacSecret: string): ClientInterceptor => { + return new ClientInterceptorImpl(hmacKeyId, hmacSecret); +}; diff --git a/src/lib/hmac/index.ts b/src/lib/hmac/index.ts new file mode 100644 index 0000000..d89ca55 --- /dev/null +++ b/src/lib/hmac/index.ts @@ -0,0 +1,104 @@ +import { initLogger } from "../logger"; +import { Buffer } from "buffer"; +import { createHmac, timingSafeEqual } from "crypto"; +import { ErrInternal, ErrInvalidHmacKeyID, ErrInvalidHmacSignature } from "./status"; +import { isEmptyObject } from "../util"; + +const log = initLogger(); + +export type GetSecret = (keyId: string) => string; + +/** + * HMAC class for generating and verifying HMAC signatures. + */ +export class HMAC { + constructor() {} + /** + * Builds a message string representation of the request and method. + * @param req - The request object. + * @param method - The method name. + * @returns A tuple containing the message string from the request and method concatenation with semicolon and an optional error. + */ + public buildMessage = (req: any, method: string): [string, Error?] => { + const methodKey = "method="; + const requestKey = "request="; + + // If no request is provided, use only the method name as the message + if (!req) { + console.warn("No request provided, using only method name as message"); + return [methodKey + method, undefined]; + } + + let requestString: string; + + // Convert the request object to a string representation + if (typeof req === "string") { + requestString = req; + } else if (typeof req === "object") { + requestString = isEmptyObject(req) ? "" : JSON.stringify(req, null, 0); + } else { + return ["", new Error("Invalid request type")]; + } + + // If the request string is empty, log a warning and use only the method name as the message + if (requestString.length === 0) { + console.warn("Empty request, using only method name as message"); + return [methodKey + method, undefined]; + } + + // Construct the message string with the request and method + const message = `${requestKey}${requestString};${methodKey}${method}`; + return [message, undefined]; + }; + + /** + * Generates an HMAC signature for the given message and secret key. + * @param secretKey - The secret key used for generating the HMAC. + * @param message - The message to generate the signature for. + * @returns A tuple containing the HMAC signature and an optional error. + */ public generateSignature = (secretKey: string, message: string): [string, Error | undefined] => { + log.debug(`generating signature for message: ${message}`); + const mac = createHmac("sha512-256", secretKey); + mac.update(message); + const digest = mac.digest("base64"); + log.debug(`signature generated: ${digest}`); + return [digest, undefined]; + }; + + /** + * Verifies the HMAC signature against the provided message and key ID. + * @param getSecret - A function to retrieve the secret key based on the key ID. + * @returns A function that takes the message, key ID, and signature, and returns a Promise resolving to an error or undefined. + */ + public verifySignature = + (getSecret: GetSecret) => + (message: string, keyId: string, signature: string): Error | undefined => { + try { + log.debug(`verifying signature for message: ${message}`); + const secret = getSecret(keyId); + log.debug("secret: ", secret); + if (secret === undefined) { + log.error("error: invalid key id"); + return new Error(`${ErrInvalidHmacKeyID.code}: ${ErrInvalidHmacKeyID.details}`); + } + const [expectedSignature, err] = this.generateSignature(secret, message); + if (err) { + log.error(`error: failed to generate signature: ${err}`); + return new Error(`${ErrInternal.code}: ${err.message}`); + } + + if (!timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature))) { + log.error("error: signature verification failed"); + return new Error(`${ErrInvalidHmacSignature.code}: ${ErrInvalidHmacSignature.details}`); + } + + return undefined; // No error, signature verification successful + } catch (error) { + log.error("error: unexpected error occurred during signature verification: ", error); + return new Error(`${ErrInternal.code} : ${error}`); + } + }; +} + +// Export status codes and details +export * from "./status"; diff --git a/src/lib/hmac/status.ts b/src/lib/hmac/status.ts new file mode 100644 index 0000000..1d44746 --- /dev/null +++ b/src/lib/hmac/status.ts @@ -0,0 +1,33 @@ +import { status, StatusBuilder } from "@grpc/grpc-js"; + +export const ErrInvalidHmacKeyID = new StatusBuilder() + .withCode(status.UNAUTHENTICATED) + .withDetails("Invalid x-hmac-key-id") + .build(); + +export const ErrInvalidHmacSignature = new StatusBuilder() + .withCode(status.UNAUTHENTICATED) + .withDetails("Mismatched x-hmac-signature") + .build(); + +export const ErrMissingHmacSignature = new StatusBuilder() + .withCode(status.UNAUTHENTICATED) + .withDetails("Missing x-hmac-signature") + .build(); + +export const ErrMissingMetadata = new StatusBuilder() + .withCode(status.UNAUTHENTICATED) + .withDetails("Missing metadata") + .build(); + +export const ErrInternal = new StatusBuilder().withCode(status.INTERNAL).withDetails("Internal error").build(); + +export const ErrInvalidMetadata = new StatusBuilder() + .withCode(status.UNAUTHENTICATED) + .withDetails("Invalid metadata") + .build(); + +export const ErrUnauthenticated = new StatusBuilder() + .withCode(status.UNAUTHENTICATED) + .withDetails("Unauthenticated") + .build(); diff --git a/src/lib/logger/index.ts b/src/lib/logger/index.ts new file mode 100644 index 0000000..2f72fdf --- /dev/null +++ b/src/lib/logger/index.ts @@ -0,0 +1,59 @@ +import { createLogger, format, transports, Logger } from "winston"; +import chalk, { ChalkInstance } from "chalk"; + +// Define custom log levels +type LogLevel = "INF" | "WRN" | "ERR" | "DEBUG"; + +// Define log format function +type ColorizeText = (text: string, color: ChalkInstance) => string; +const customSimpleFormat = (colorizeText: ColorizeText) => + format.printf(({ level, label, timestamp, message }) => { + const formattedLevel = formatLevel(level); + return `${colorizeText(`[${label}]`, chalk.green)} ${timestamp} ${colorizeText(formattedLevel, getLevelColor(level))} ${message}`; + }); + +// Helper function to format log levels +const formatLevel = (level: string): LogLevel => { + switch (level) { + case "info": + return "INF"; + case "warn": + return "WRN"; + case "error": + return "ERR"; + case "debug": + return "DEBUG"; + default: + return level.toUpperCase() as LogLevel; + } +}; + +// Helper function to get color based on log level +const getLevelColor = (level: string): ChalkInstance => { + switch (level) { + case "info": + return chalk.green; + case "warn": + return chalk.yellow; + case "error": + return chalk.red; + case "debug": + return chalk.blue; + default: + return chalk.white; + } +}; + +// Initialize logger function +export const initLogger = (): Logger => { + const colorizeText: ColorizeText = (text: string, color: ChalkInstance) => color(text); // Default color for level + return createLogger({ + format: format.combine( + // format.errors({ stack: true }), + format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), + format.label({ label: "ts-grpc-hmac" }), + customSimpleFormat(colorizeText) + ), + transports: [new transports.Console()] + }); +}; diff --git a/src/lib/util.ts b/src/lib/util.ts new file mode 100644 index 0000000..940e49c --- /dev/null +++ b/src/lib/util.ts @@ -0,0 +1,4 @@ +// Check if object is empty +export const isEmptyObject = (obj: any) => { + return Object.keys(obj).length === 0 && obj.constructor === Object; +}; diff --git a/src/server/index.ts b/src/server/index.ts new file mode 100644 index 0000000..cf16847 --- /dev/null +++ b/src/server/index.ts @@ -0,0 +1,166 @@ +import { + Metadata, + ServerInterceptingCall, + ServerInterceptingCallInterface, + ServerListener, + ServerListenerBuilder, + status +} from "@grpc/grpc-js"; +import { ServerMethodDefinition } from "@grpc/grpc-js/build/src/make-client"; + +import { GetSecret, HMAC } from "../lib/hmac"; // Check if the path is correct +import { initLogger } from "../lib/logger"; + +const log = initLogger(); + +/** + * Interface defining the structure of a server interceptor. + */ +export interface ServerInterceptor { + /** + * Function to intercept unary server calls. + * @param methodDescriptor - The method descriptor of the unary server call. + * @param call - The server intercepting call interface. + * @returns The intercepted server call. + */ + ServerInterceptor: ( + methodDescriptor: ServerMethodDefinition, + call: ServerInterceptingCallInterface + ) => ServerInterceptingCall; + + /** + * Function to add a unary interceptor to a method. + * @returns A function that can be used to wrap a unary grpc method with the interceptor. + */ + WithInterceptor: () => ( + methodDescriptor: ServerMethodDefinition, + call: ServerInterceptingCallInterface + ) => ServerInterceptingCall; +} + +/** + * Implementation of the ServerInterceptor interface. + */ +export class ServerInterceptorImpl implements ServerInterceptor { + auth: (message: string, keyId: string, signature: string) => Error | undefined; + hmac: HMAC; + + constructor(getSecret: GetSecret) { + this.hmac = new HMAC(); + this.auth = this.hmac.verifySignature(getSecret); + } + + /** + * Intercepts unary server calls. + * @param methodDescriptor - The method descriptor of the unary server call. + * @param call - The server intercepting call interface. + * @returns The intercepted server call. + */ + ServerInterceptor( + methodDescriptor: ServerMethodDefinition, + call: ServerInterceptingCallInterface + ): ServerInterceptingCall { + let savedMetadata: Metadata; + return new ServerInterceptingCall(call, { + start: next => { + const authListener: ServerListener = new ServerListenerBuilder() + .withOnReceiveMetadata((metadata, mdNext) => { + if (!metadata.get("x-hmac-key-id")) { + log.error("No HMAC key ID provided"); + call.sendStatus({ + code: status.UNAUTHENTICATED, + details: "No HMAC key ID provided" + }); + } else if (!metadata.get("x-hmac-signature")) { + log.error("No HMAC signature provided"); + call.sendStatus({ + code: status.UNAUTHENTICATED, + details: "No HMAC signature provided" + }); + } else { + savedMetadata = metadata; + mdNext(metadata); + } + }) + .withOnReceiveMessage((message, msgNext) => { + typeof message === "string" + ? log.debug(`Received message: ${message}`) + : message instanceof Buffer + ? log.debug(`Received message: ${message.toString()}`) + : typeof message === "object" + ? log.debug(`Received message: ${JSON.stringify(message)}`) + : typeof message === "number" + ? log.debug(`Received message: ${message}`) + : null; + const [msg, encodeErr] = this.hmac.buildMessage(message, methodDescriptor.path); + + if (encodeErr) { + log.error(`Failed to encode request: ${encodeErr}`); + call.sendStatus({ + code: status.UNAUTHENTICATED, + details: encodeErr.message + }); + } + + const err = this.auth( + msg, + savedMetadata.get("x-hmac-key-id").toString(), + savedMetadata.get("x-hmac-signature").toString() + ); + + if (err) { + log.error( + `Authentication failed on unary method: ${methodDescriptor.path} with error ${err.name}` + ); + call.sendStatus({ + code: status.UNAUTHENTICATED, + details: err.message + }); + } + msgNext(message); + }) + .withOnReceiveHalfClose(halfClose => { + halfClose(); + }) + .withOnCancel(() => {}) + .build(); + + next(authListener); + }, + sendMessage: (message, next) => { + typeof message === "string" + ? log.debug(`Server Sending message: ${message}`) + : message instanceof Buffer + ? log.debug(`Server Sending message: ${message.toString()}`) + : typeof message === "object" + ? log.debug(`Server Sending message: ${JSON.stringify(message)}`) + : typeof message === "number" + ? log.debug(`Server Sending message: ${message}`) + : null; + next(message); + } + }); + } + + /** + * Adds a unary interceptor to a method. + * @returns A function that can be used to wrap a unary grpc method with the interceptor. + */ + WithInterceptor(): ( + methodDescriptor: ServerMethodDefinition, + call: ServerInterceptingCallInterface + ) => ServerInterceptingCall { + return (methodDescriptor: ServerMethodDefinition, call: ServerInterceptingCallInterface) => { + return this.ServerInterceptor(methodDescriptor, call); + }; + } +} + +/** + * Creates a new server interceptor. + * @param getSecret - The callback to get the secret. + * @returns A promise resolving to the new server interceptor. + */ +export const NewServerInterceptor = (getSecret: GetSecret): ServerInterceptor => { + return new ServerInterceptorImpl(getSecret); +}; diff --git a/test/client/index.test.ts b/test/client/index.test.ts new file mode 100644 index 0000000..7cf016d --- /dev/null +++ b/test/client/index.test.ts @@ -0,0 +1,47 @@ +// clientInterceptor.test.ts +import { afterAll, describe, it, vi } from "vitest"; + +import { TestClient, TestServer } from "../common"; +import { GetUserRequest } from "../common/generated/example/GetUserRequest"; +import { User } from "../common/generated/example/User"; + +describe("Client Interceptor Tests", () => { + // Mock HMAC key ID and secret for testing + const { HMAC_KEY_ID: keyId = "key", HMAC_SECRET: secretKey = "secret" } = process.env; + + let client: TestClient; + let server: TestServer; + it("Test Unary Client Interceptor", async ({ expect }) => { + const serverOrErr = await TestServer.startServerWithHMACInterceptor(keyId, secretKey); + expect(serverOrErr).not.toBeInstanceOf(Error); + server = serverOrErr as TestServer; + client = TestClient.createWithHMACInterceptor(server, keyId, secretKey); + await vi.waitUntil(() => client.isChannelReady(), { + timeout: 1000, + interval: 20 + }); + + expect(client.isChannelReady()).toBeTruthy(); + const userRequest: GetUserRequest = { name: "Unknown" } as GetUserRequest; + const expectedUser: User = { + name: "Unknown", + email: "unknown@example.com" + }; + const result = await new Promise((resolve, reject) => { + client.sendRequest(userRequest, (err, res): void => { + if (err) { + reject(err); + } else { + resolve(res); + } + }); + }); + + expect(result).toEqual(expectedUser); + }); + + afterAll(async () => { + client.close(); + await server.shutdown(); + }); +}); diff --git a/test/common/generated/example.ts b/test/common/generated/example.ts new file mode 100644 index 0000000..de7595f --- /dev/null +++ b/test/common/generated/example.ts @@ -0,0 +1,29 @@ +import type * as grpc from "@grpc/grpc-js"; +import type { MessageTypeDefinition } from "@grpc/proto-loader"; + +import type { + UserServiceClient as _example_UserServiceClient, + UserServiceDefinition as _example_UserServiceDefinition +} from "./example/UserService"; + +type SubtypeConstructor any, Subtype> = { + new (...args: ConstructorParameters): Subtype; +}; + +export interface ProtoGrpcType { + example: { + GetUserRequest: MessageTypeDefinition; + User: MessageTypeDefinition; + /** + * UserService is a service exposed by Grpc servers that provides user management + */ + UserService: SubtypeConstructor & { + service: _example_UserServiceDefinition; + }; + }; + google: { + protobuf: { + Empty: MessageTypeDefinition; + }; + }; +} diff --git a/test/common/generated/example/GetUserRequest.ts b/test/common/generated/example/GetUserRequest.ts new file mode 100644 index 0000000..cc18af6 --- /dev/null +++ b/test/common/generated/example/GetUserRequest.ts @@ -0,0 +1,21 @@ +// Original file: test/fixtures/example.proto + +/** + * GetUserRequest is a request to get a user by name + */ +export interface GetUserRequest { + /** + * Name of the user to get + */ + name?: string; +} + +/** + * GetUserRequest is a request to get a user by name + */ +export interface GetUserRequest__Output { + /** + * Name of the user to get + */ + name: string; +} diff --git a/test/common/generated/example/User.ts b/test/common/generated/example/User.ts new file mode 100644 index 0000000..6ecaf3a --- /dev/null +++ b/test/common/generated/example/User.ts @@ -0,0 +1,29 @@ +// Original file: test/fixtures/example.proto + +/** + * User is a user + */ +export interface User { + /** + * Name of the user + */ + name?: string; + /** + * Email of the user + */ + email?: string; +} + +/** + * User is a user + */ +export interface User__Output { + /** + * Name of the user + */ + name: string; + /** + * Email of the user + */ + email: string; +} diff --git a/test/common/generated/example/UserService.ts b/test/common/generated/example/UserService.ts new file mode 100644 index 0000000..1883294 --- /dev/null +++ b/test/common/generated/example/UserService.ts @@ -0,0 +1,120 @@ +// Original file: test/fixtures/example.proto + +import type * as grpc from "@grpc/grpc-js"; +import type { MethodDefinition } from "@grpc/proto-loader"; +import type { + Empty as _google_protobuf_Empty, + Empty__Output as _google_protobuf_Empty__Output +} from "../google/protobuf/Empty"; +import type { + GetUserRequest as _example_GetUserRequest, + GetUserRequest__Output as _example_GetUserRequest__Output +} from "../example/GetUserRequest"; +import type { User as _example_User, User__Output as _example_User__Output } from "../example/User"; + +/** + * UserService is a service exposed by Grpc servers that provides user management + */ +export interface UserServiceClient extends grpc.Client { + /** + * Get a user by name + */ + GetUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + GetUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + GetUser( + argument: _example_GetUserRequest, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + GetUser( + argument: _example_GetUserRequest, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + /** + * Get a user by name + */ + getUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + getUser( + argument: _example_GetUserRequest, + metadata: grpc.Metadata, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + getUser( + argument: _example_GetUserRequest, + options: grpc.CallOptions, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + getUser( + argument: _example_GetUserRequest, + callback: grpc.requestCallback<_example_User__Output> + ): grpc.ClientUnaryCall; + + /** + * List all users + */ + ListUsers( + argument: _google_protobuf_Empty, + metadata: grpc.Metadata, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; + ListUsers( + argument: _google_protobuf_Empty, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; + /** + * List all users + */ + listUsers( + argument: _google_protobuf_Empty, + metadata: grpc.Metadata, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; + listUsers( + argument: _google_protobuf_Empty, + options?: grpc.CallOptions + ): grpc.ClientReadableStream<_example_User__Output>; +} + +/** + * UserService is a service exposed by Grpc servers that provides user management + */ +export interface UserServiceHandlers extends grpc.UntypedServiceImplementation { + /** + * Get a user by name + */ + GetUser: grpc.handleUnaryCall<_example_GetUserRequest__Output, _example_User>; + + /** + * List all users + */ + ListUsers: grpc.handleServerStreamingCall<_google_protobuf_Empty__Output, _example_User>; +} + +export interface UserServiceDefinition extends grpc.ServiceDefinition { + GetUser: MethodDefinition< + _example_GetUserRequest, + _example_User, + _example_GetUserRequest__Output, + _example_User__Output + >; + ListUsers: MethodDefinition< + _google_protobuf_Empty, + _example_User, + _google_protobuf_Empty__Output, + _example_User__Output + >; +} diff --git a/test/common/generated/google/protobuf/Empty.ts b/test/common/generated/google/protobuf/Empty.ts new file mode 100644 index 0000000..73cbdee --- /dev/null +++ b/test/common/generated/google/protobuf/Empty.ts @@ -0,0 +1,5 @@ +// Original file: null + +export interface Empty {} + +export interface Empty__Output {} diff --git a/test/common/index.ts b/test/common/index.ts new file mode 100644 index 0000000..44d3d7c --- /dev/null +++ b/test/common/index.ts @@ -0,0 +1,172 @@ +import { + ChannelOptions, + credentials, + GrpcObject, + loadPackageDefinition, + sendUnaryData, + Server, + ServerCredentials, + ServerOptions, + ServerUnaryCall, + ServerWritableStream, + ServiceClientConstructor, + ServiceError +} from "@grpc/grpc-js"; +import { ConnectivityState } from "@grpc/grpc-js/build/src/connectivity-state"; +import { ServiceClient } from "@grpc/grpc-js/build/src/make-client"; +import * as protoLoader from "@grpc/proto-loader"; +import * as path from "path"; + +import { NewClientInterceptor } from "../../src/client"; +import { NewServerInterceptor } from "../../src/server"; +import { GetUserRequest } from "./generated/example/GetUserRequest"; +import { User } from "./generated/example/User"; + +const protoLoaderOptions = { + keepCase: true, + longs: String, + enums: String, + defaults: true, + oneofs: true, + keepalive: { + keepaliveTimeMs: 5000, + keepaliveTimeoutMs: 5000 + } +}; + +const protoFile = path.join(__dirname, "/../", "fixtures", "example.proto"); + +// Load the proto files and return the gRPC object +export const loadProtoFile = (protoFiles: string): GrpcObject => { + const packageDefinition = protoLoader.loadSync(protoFiles, protoLoaderOptions); + return loadPackageDefinition(packageDefinition); +}; + +const userService = loadProtoFile(protoFile).example["UserService"] as ServiceClientConstructor; + +const userServiceImpl = { + getUser: (_call: ServerUnaryCall, callback: sendUnaryData) => { + // Extract the request object from the gRPC call + // const request: GetUserRequest = call.request; + const user: User = { + name: "Unknown", + email: "unknown@example.com" + } as User; + callback(null, user); + }, + listUsers: (call: ServerWritableStream) => { + const users: User[] = [ + { + name: "Unknown", + email: "unknown@example.com" + }, + { + name: "Known", + email: "known@example.com" + } + ]; + users.forEach(user => { + call.write(user); + }); + call.end(); + } +}; + +// Create a new instance of the gRPC server +export class TestServer { + private readonly server: Server; + public port: string | null = null; + + constructor(options?: ServerOptions) { + this.server = new Server(options); + this.server.addService(userService.service, userServiceImpl); + } + + // start the server + async start(): Promise { + const credentials = ServerCredentials.createInsecure(); + try { + const actualPort = await new Promise((resolve, reject) => { + this.server.bindAsync("localhost:0", credentials, (err, actualPort) => { + if (err) { + console.error("Error starting server", err); + reject(err); + } + this.port = actualPort.toString(); + resolve(actualPort); + }); + }); + + this.port = actualPort.toString(); + } catch (err) { + console.error("Error Starting Test server", err); + return err; + } + } + + // shutdown the server + async shutdown(): Promise { + return new Promise((resolve, reject) => { + this.server.tryShutdown((err?: Error) => { + if (err) { + console.error("Error shutting down server", err); + reject(err); + } else { + resolve(undefined); + } + }); + }); + } + + static async startServerWithHMACInterceptor(hmacKeyId: string, hmacSecret: string): Promise { + const serverInterceptor = NewServerInterceptor((key: string = hmacKeyId): string => { + const secrets = [ + { + key: hmacKeyId, + secret: hmacSecret + } + ]; + + const secret = secrets.find(secret => secret.key === key); + + if (secret) { + return secret.secret; + } else { + return ""; + } + }); + const server = new TestServer({ interceptors: [serverInterceptor.WithInterceptor()] }); + const err = await server.start(); + if (err) { + console.error("Error starting server", err); + return err; + } + return server; + } +} + +// Create a new instance of the gRPC client +export class TestClient { + private client: ServiceClient; + constructor(port: string, options?: ChannelOptions) { + const creds = credentials.createInsecure(); + this.client = new userService(`localhost:${port}`, creds, options); + } + + static createWithHMACInterceptor(server: TestServer, hmacKeyId: string, hmacSecret: string): TestClient { + const clientInterceptor = NewClientInterceptor(hmacKeyId, hmacSecret); + return new TestClient(server.port, { interceptors: [clientInterceptor.WithInterceptor()] }); + } + + isChannelReady(): boolean { + return this.client.getChannel().getConnectivityState(true) === ConnectivityState.READY; + } + + sendRequest(request: GetUserRequest, callback: (error: ServiceError, response: User) => void): void { + this.client.getUser(request, callback); + } + + close(): void { + this.client.close(); + } +} diff --git a/test/fixtures/example.proto b/test/fixtures/example.proto new file mode 100644 index 0000000..168510c --- /dev/null +++ b/test/fixtures/example.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; + +package example; + +import "google/protobuf/empty.proto"; // import google.protobuf.Empty + +option go_package = "go-grpc-hmac/example/pb"; // go_package is the package name for generated go code + +// User is a user +message User { + // Name of the user + string name = 1; + // Email of the user + string email = 2; +} + +// GetUserRequest is a request to get a user by name +message GetUserRequest { + // Name of the user to get + string name = 1; +} + +// UserService is a service exposed by Grpc servers that provides user management +service UserService { + // Get a user by name + rpc GetUser(GetUserRequest) returns (User); + // List all users + rpc ListUsers(google.protobuf.Empty) returns (stream User); +} \ No newline at end of file diff --git a/test/hmac/index.test.ts b/test/hmac/index.test.ts new file mode 100644 index 0000000..05abbf2 --- /dev/null +++ b/test/hmac/index.test.ts @@ -0,0 +1,50 @@ +// index.test.ts +import { describe, expect, it } from "vitest"; + +import { HMAC } from "../../index"; + +describe("Testing buildMessage function in HMAC module", () => { + it.concurrent("buildMessage: non-empty request", () => { + // Arrange + const message = { + name: "test", + email: "test@example.com" + }; + const path = "/example.UserService/GetUser"; + const expected = `request=${JSON.stringify(message)};method=${path}`; + + // Act + const hmac = new HMAC(); + const [result, err] = hmac.buildMessage(message, path); + + expect(err).toBeUndefined(); + expect(result).toEqual(expected); + }); + + it.concurrent("buildMessage: no request", () => { + // Arrange + const method = "method"; + const expected = `method=${method}`; + + // Act + const hmac = new HMAC(); + const [result, err] = hmac.buildMessage(null, method); + + // Assert + expect(err).toBeUndefined(); + expect(result).toBe(expected); + }); + + it.concurrent("buildMessage: empty request", () => { + // Arrange + const method = "method"; + const expected = `method=${method}`; + + // Act + const hmac = new HMAC(); + const [result, err] = hmac.buildMessage({}, method); + + expect(err).toBeUndefined(); + expect(result).toBe(expected); + }); +}); diff --git a/test/server/index.test.ts b/test/server/index.test.ts new file mode 100644 index 0000000..ba07884 --- /dev/null +++ b/test/server/index.test.ts @@ -0,0 +1,6 @@ +import { it } from "vitest"; + +it.skip("should work", ctx => { + // prints name of the test + console.log(ctx.task.name); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6685771 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,118 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "esnext", /* Specify what module code is generated. */ + "rootDir": ".", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "baseUrl": ".", /* Specify the base directory to resolve non-relative module names. */ /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ +// "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + "outDir": "./dist", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": [ + "src", + "index.ts" + ], + "exclude": [ + "node_modules", + "test/**/*", + "build", + "example", + ] +} diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..a8bcc12 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,31 @@ +/// +import { defineConfig } from "vite"; +import { configDefaults } from "vitest/config"; +import { resolve } from "path"; + +export default defineConfig({ + resolve: { + alias: { + lib: resolve(__dirname, "./src/lib") + } + }, + test: { + clearMocks: true, + watch: true, + coverage: { + reporter: ["lcov", "html"], + provider: "v8", + exclude: [...configDefaults.exclude, "**/test/**", "**/test/**"], + thresholds: { + functions: 90, + branches: 70, + lines: 90, + perFile: true, + statements: 90 + }, + skipFull: true + }, + globals: true, + include: ["test/**/*.test.{ts,js}"] + } +});