diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bfe42ac75..a07e5fe40 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,7 +44,7 @@ jobs: - name: Get trader bin run: | - trader_version=$(poetry run python -c "import yaml; config = yaml.safe_load(open('templates/trader.yaml')); print(config['trader_version'])") + trader_version=$(poetry run python -c "import yaml; config = yaml.safe_load(open('templates/trader.yaml')); print(config['service_version'])") echo $trader_version mkdir dist && curl -L -o dist/aea_bin "https://github.com/valory-xyz/trader/releases/download/${trader_version}/trader_bin_${{ env.OS_ARCH }}" @@ -93,7 +93,7 @@ jobs: - run: yarn install-deps - name: "Build frontend with env vars" run: yarn build:frontend - env: + env: NODE_ENV: production DEV_RPC: https://rpc-gate.autonolas.tech/gnosis-rpc/ IS_STAGING: ${{ github.ref != 'refs/heads/main' && 'true' || 'false' }} @@ -110,4 +110,26 @@ jobs: NODE_ENV: production DEV_RPC: https://rpc-gate.autonolas.tech/gnosis-rpc/ FORK_URL: https://rpc-gate.autonolas.tech/gnosis-rpc/ - run: node build.js \ No newline at end of file + run: node build.js + - name: "Build frontend with dev env vars" + run: yarn build:frontend + env: + NODE_ENV: development + DEV_RPC: https://virtual.gnosis.rpc.tenderly.co/78ca845d-2b24-44a6-9ce2-869a979e8b5b + IS_STAGING: ${{ github.ref != 'refs/heads/main' && 'true' || 'false' }} + FORK_URL: https://virtual.gnosis.rpc.tenderly.co/78ca845d-2b24-44a6-9ce2-869a979e8b5b + - name: "Build, notarize, publish dev build" + env: + APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLEIDPASS }} + APPLE_ID: ${{ secrets.APPLEID }} + APPLETEAMID: ${{ secrets.APPLETEAMID }} + CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + CSC_LINK: ${{ secrets.CSC_LINK }} + GH_TOKEN: ${{ secrets.github_token}} + NODE_ENV: development + DEV_RPC: https://virtual.gnosis.rpc.tenderly.co/78ca845d-2b24-44a6-9ce2-869a979e8b5b + FORK_URL: https://virtual.gnosis.rpc.tenderly.co/78ca845d-2b24-44a6-9ce2-869a979e8b5b + run: | + echo "DEV_RPC=https://virtual.gnosis.rpc.tenderly.co/78ca845d-2b24-44a6-9ce2-869a979e8b5b" >> .env + echo -e "FORK_URL=https://virtual.gnosis.rpc.tenderly.co/78ca845d-2b24-44a6-9ce2-869a979e8b5b" >> .env + node build.js \ No newline at end of file diff --git a/.gitleaksignore b/.gitleaksignore index 446eb5a4b..33c8c27cf 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -27,4 +27,6 @@ d8149e9b5b7bd6a7ed7bc1039900702f1d4f287b:operate/services/manage.py:generic-api- 99c0f139b037da2587708212fcf6d0e20786d0ba:operate/services/manage.py:generic-api-key:406 99c0f139b037da2587708212fcf6d0e20786d0ba:operate/services/manage.py:generic-api-key:454 99c0f139b037da2587708212fcf6d0e20786d0ba:operate/services/manage.py:generic-api-key:455 -91ec07457f69e9a29f63693ac8ef887e4b5f49f0:operate/services/manage.py:generic-api-key:454 \ No newline at end of file +91ec07457f69e9a29f63693ac8ef887e4b5f49f0:operate/services/manage.py:generic-api-key:454 +410bea2bd02ff54da69387fe8f3b58793e09f7b0:operate/services/manage.py:generic-api-key:421 +410bea2bd02ff54da69387fe8f3b58793e09f7b0:operate/services/manage.py:generic-api-key:422 \ No newline at end of file diff --git a/build.js b/build.js deleted file mode 100644 index a7e15a32b..000000000 --- a/build.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * This script is used to build the electron app **with notarization**. It is used for the final build and release process. - */ -require('dotenv').config(); -const build = require('electron-builder').build; - -const { publishOptions } = require('./electron/constants'); - -const main = async () => { - console.log('Building...'); - - /** @type import {CliOptions} from "electron-builder" */ - await build({ - publish: 'onTag', - config: { - appId: 'xyz.valory.olas-operate-app', - artifactName: '${productName}-${version}-${platform}-${arch}.${ext}', - productName: 'Pearl', - files: ['electron/**/*', 'package.json'], - directories: { - output: 'dist', - }, - extraResources: [ - { - from: 'electron/bins', - to: 'bins', - filter: ['**/*'], - }, - ], - cscKeyPassword: process.env.CSC_KEY_PASSWORD, - cscLink: process.env.CSC_LINK, - mac: { - target: [ - { - target: 'default', - arch: ['x64', 'arm64'], - }, - ], - publish: publishOptions, - category: 'public.app-category.utilities', - icon: 'electron/assets/icons/splash-robot-head-dock.png', - hardenedRuntime: true, - gatekeeperAssess: false, - entitlements: 'electron/entitlements.mac.plist', - entitlementsInherit: 'electron/entitlements.mac.plist', - notarize: { - teamId: process.env.APPLETEAMID, - }, - }, - }, - }); -}; - -main().then((response) => { console.log('Build & Notarize complete'); }).catch((e) => console.error(e)); diff --git a/build.tester.js b/build.tester.js deleted file mode 100644 index c4a9439e0..000000000 --- a/build.tester.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This script is used to build the electron app **without** notarization. - * - * This is useful for testing the build process. - * It will not notarize the app, so it will not be able to be run on someone else's Mac without disabling Gatekeeper on their machine. - */ -require('dotenv').config(); -const build = require('electron-builder').build; - -const { publishOptions } = require('./electron/constants'); - -const main = async () => { - console.log('Building...'); - - /** @type import {CliOptions} from "electron-builder" */ - await build({ - publish: 'onTag', - config: { - appId: 'xyz.valory.olas-operate-app', - artifactName: '${productName}-${version}-${platform}-${arch}.${ext}', - productName: 'Pearl', - files: ['electron/**/*', 'package.json'], - directories: { - output: 'dist', - }, - extraResources: [ - { - from: 'electron/bins', - to: 'bins', - filter: ['**/*'], - }, - ], - mac: { - publish: null, - target: [ - { - target: 'default', - arch: ['arm64'], - }, - ], - category: 'public.app-category.utilities', - icon: 'electron/assets/icons/splash-robot-head-dock.png', - hardenedRuntime: true, - gatekeeperAssess: false, - entitlements: 'electron/entitlements.mac.plist', - entitlementsInherit: 'electron/entitlements.mac.plist', - }, - }, - }); -}; - -main().then((response) => { console.log('Build & Notarize complete'); }).catch((e) => console.error(e)); diff --git a/electron/.eslintrc.json b/electron/.eslintrc.json deleted file mode 100644 index 1aca62fc4..000000000 --- a/electron/.eslintrc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "extends": ["eslint:recommended", "plugin:prettier/recommended"], - "plugins": ["prettier"], - "ignorePatterns": [".next/"], - "rules": { - "prettier/prettier": [ - "error", - { - "endOfLine": "auto", - "semi": true, - "singleQuote": true - } - ], - "no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }] - }, - "parserOptions": { - "ecmaVersion": "latest", - "commonjs": true - }, - "env": { - "node": true, - "es6": true - } -} diff --git a/electron/afterPack.js b/electron/afterPack.js deleted file mode 100644 index 2c196e49a..000000000 --- a/electron/afterPack.js +++ /dev/null @@ -1,25 +0,0 @@ -const { promises: fs } = require('fs'); -const log = (...messages) => console.log(...messages); - -exports.default = async function (context) { - if (context.electronPlatformName !== 'darwin') { - return context; - } - const troublesome_files = [ - `dist/mac-arm64/Olas Operate.app/Contents/Resources/app.asar.unpacked/node_modules/electron-sudo/dist/bin/applet.app/Contents/MacOS/applet/LICENSE`, - ]; - - try { - log('\n\n🪝 afterPack hook triggered: '); - await Promise.all( - troublesome_files.map((file) => { - log(`Deleting ${file}`); - return fs.rm(file); - }), - ); - log('Cleaned up LICENSE files\n\n'); - return context; - } catch (e) { - log(`afterPack issue: `, e); - } -}; diff --git a/electron/assets/css/antd.css b/electron/assets/css/antd.css deleted file mode 100644 index 76932195c..000000000 --- a/electron/assets/css/antd.css +++ /dev/null @@ -1,27541 +0,0 @@ -/*! - * - * antd v4.4.3 - * - * Copyright 2015-present, Alipay, Inc. - * All rights reserved. - * - */ -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -[class^=ant-]::-ms-clear, -[class*= ant-]::-ms-clear, -[class^=ant-] input::-ms-clear, -[class*= ant-] input::-ms-clear, -[class^=ant-] input::-ms-reveal, -[class*= ant-] input::-ms-reveal { - display: none; -} -[class^=ant-], -[class*= ant-], -[class^=ant-] *, -[class*= ant-] *, -[class^=ant-] *::before, -[class*= ant-] *::before, -[class^=ant-] *::after, -[class*= ant-] *::after { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -/* stylelint-disable at-rule-no-unknown */ -html, -body { - width: 100%; - height: 100%; -} -input::-ms-clear, -input::-ms-reveal { - display: none; -} -*, -*::before, -*::after { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-family: sans-serif; - line-height: 1.15; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; - -ms-overflow-style: scrollbar; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -@-ms-viewport { - width: device-width; -} -body { - margin: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - font-variant: tabular-nums; - line-height: 1.5715; - background-color: #fff; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -[tabindex='-1']:focus { - outline: none !important; -} -hr { - -webkit-box-sizing: content-box; - box-sizing: content-box; - height: 0; - overflow: visible; -} -h1, -h2, -h3, -h4, -h5, -h6 { - margin-top: 0; - margin-bottom: 0.5em; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; -} -p { - margin-top: 0; - margin-bottom: 1em; -} -abbr[title], -abbr[data-original-title] { - text-decoration: underline; - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - border-bottom: 0; - cursor: help; -} -address { - margin-bottom: 1em; - font-style: normal; - line-height: inherit; -} -input[type='text'], -input[type='password'], -input[type='number'], -textarea { - -webkit-appearance: none; -} -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1em; -} -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} -dt { - font-weight: 500; -} -dd { - margin-bottom: 0.5em; - margin-left: 0; -} -blockquote { - margin: 0 0 1em; -} -dfn { - font-style: italic; -} -b, -strong { - font-weight: bolder; -} -small { - font-size: 80%; -} -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} -sub { - bottom: -0.25em; -} -sup { - top: -0.5em; -} -a { - color: #1890ff; - text-decoration: none; - background-color: transparent; - outline: none; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - -webkit-text-decoration-skip: objects; -} -a:hover { - color: #40a9ff; -} -a:active { - color: #096dd9; -} -a:active, -a:hover { - text-decoration: none; - outline: 0; -} -a:focus { - text-decoration: none; - outline: 0; -} -a[disabled] { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; - pointer-events: none; -} -pre, -code, -kbd, -samp { - font-size: 1em; - font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; -} -pre { - margin-top: 0; - margin-bottom: 1em; - overflow: auto; -} -figure { - margin: 0 0 1em; -} -img { - vertical-align: middle; - border-style: none; -} -svg:not(:root) { - overflow: hidden; -} -a, -area, -button, -[role='button'], -input:not([type='range']), -label, -select, -summary, -textarea { - -ms-touch-action: manipulation; - touch-action: manipulation; -} -table { - border-collapse: collapse; -} -caption { - padding-top: 0.75em; - padding-bottom: 0.3em; - color: rgba(0, 0, 0, 0.45); - text-align: left; - caption-side: bottom; -} -th { - text-align: inherit; -} -input, -button, -select, -optgroup, -textarea { - margin: 0; - color: inherit; - font-size: inherit; - font-family: inherit; - line-height: inherit; -} -button, -input { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html [type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; -} -button::-moz-focus-inner, -[type='button']::-moz-focus-inner, -[type='reset']::-moz-focus-inner, -[type='submit']::-moz-focus-inner { - padding: 0; - border-style: none; -} -input[type='radio'], -input[type='checkbox'] { - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type='date'], -input[type='time'], -input[type='datetime-local'], -input[type='month'] { - -webkit-appearance: listbox; -} -textarea { - overflow: auto; - resize: vertical; -} -fieldset { - min-width: 0; - margin: 0; - padding: 0; - border: 0; -} -legend { - display: block; - width: 100%; - max-width: 100%; - margin-bottom: 0.5em; - padding: 0; - color: inherit; - font-size: 1.5em; - line-height: inherit; - white-space: normal; -} -progress { - vertical-align: baseline; -} -[type='number']::-webkit-inner-spin-button, -[type='number']::-webkit-outer-spin-button { - height: auto; -} -[type='search'] { - outline-offset: -2px; - -webkit-appearance: none; -} -[type='search']::-webkit-search-cancel-button, -[type='search']::-webkit-search-decoration { - -webkit-appearance: none; -} -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} -output { - display: inline-block; -} -summary { - display: list-item; -} -template { - display: none; -} -[hidden] { - display: none !important; -} -mark { - padding: 0.2em; - background-color: #feffe6; -} -::-moz-selection { - color: #fff; - background: #1890ff; -} -::selection { - color: #fff; - background: #1890ff; -} -.clearfix::before { - display: table; - content: ''; -} -.clearfix::after { - display: table; - clear: both; - content: ''; -} -.anticon { - display: inline-block; - color: inherit; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.anticon > * { - line-height: 1; -} -.anticon svg { - display: inline-block; -} -.anticon::before { - display: none; -} -.anticon .anticon-icon { - display: block; -} -.anticon[tabindex] { - cursor: pointer; -} -.anticon-spin::before { - display: inline-block; - -webkit-animation: loadingCircle 1s infinite linear; - animation: loadingCircle 1s infinite linear; -} -.anticon-spin { - display: inline-block; - -webkit-animation: loadingCircle 1s infinite linear; - animation: loadingCircle 1s infinite linear; -} -.fade-enter, -.fade-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.fade-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.fade-enter.fade-enter-active, -.fade-appear.fade-appear-active { - -webkit-animation-name: antFadeIn; - animation-name: antFadeIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.fade-leave.fade-leave-active { - -webkit-animation-name: antFadeOut; - animation-name: antFadeOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.fade-enter, -.fade-appear { - opacity: 0; - -webkit-animation-timing-function: linear; - animation-timing-function: linear; -} -.fade-leave { - -webkit-animation-timing-function: linear; - animation-timing-function: linear; -} -@-webkit-keyframes antFadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes antFadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@-webkit-keyframes antFadeOut { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -@keyframes antFadeOut { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} -.move-up-enter, -.move-up-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-up-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-up-enter.move-up-enter-active, -.move-up-appear.move-up-appear-active { - -webkit-animation-name: antMoveUpIn; - animation-name: antMoveUpIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.move-up-leave.move-up-leave-active { - -webkit-animation-name: antMoveUpOut; - animation-name: antMoveUpOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.move-up-enter, -.move-up-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.move-up-leave { - -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); - animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); -} -.move-down-enter, -.move-down-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-down-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-down-enter.move-down-enter-active, -.move-down-appear.move-down-appear-active { - -webkit-animation-name: antMoveDownIn; - animation-name: antMoveDownIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.move-down-leave.move-down-leave-active { - -webkit-animation-name: antMoveDownOut; - animation-name: antMoveDownOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.move-down-enter, -.move-down-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.move-down-leave { - -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); - animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); -} -.move-left-enter, -.move-left-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-left-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-left-enter.move-left-enter-active, -.move-left-appear.move-left-appear-active { - -webkit-animation-name: antMoveLeftIn; - animation-name: antMoveLeftIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.move-left-leave.move-left-leave-active { - -webkit-animation-name: antMoveLeftOut; - animation-name: antMoveLeftOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.move-left-enter, -.move-left-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.move-left-leave { - -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); - animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); -} -.move-right-enter, -.move-right-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-right-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.move-right-enter.move-right-enter-active, -.move-right-appear.move-right-appear-active { - -webkit-animation-name: antMoveRightIn; - animation-name: antMoveRightIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.move-right-leave.move-right-leave-active { - -webkit-animation-name: antMoveRightOut; - animation-name: antMoveRightOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.move-right-enter, -.move-right-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.move-right-leave { - -webkit-animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); - animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); -} -@-webkit-keyframes antMoveDownIn { - 0% { - -webkit-transform: translateY(100%); - transform: translateY(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@keyframes antMoveDownIn { - 0% { - -webkit-transform: translateY(100%); - transform: translateY(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@-webkit-keyframes antMoveDownOut { - 0% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateY(100%); - transform: translateY(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@keyframes antMoveDownOut { - 0% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateY(100%); - transform: translateY(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@-webkit-keyframes antMoveLeftIn { - 0% { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@keyframes antMoveLeftIn { - 0% { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@-webkit-keyframes antMoveLeftOut { - 0% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@keyframes antMoveLeftOut { - 0% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@-webkit-keyframes antMoveRightIn { - 0% { - -webkit-transform: translateX(100%); - transform: translateX(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@keyframes antMoveRightIn { - 0% { - -webkit-transform: translateX(100%); - transform: translateX(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@-webkit-keyframes antMoveRightOut { - 0% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateX(100%); - transform: translateX(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@keyframes antMoveRightOut { - 0% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateX(100%); - transform: translateX(100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@-webkit-keyframes antMoveUpIn { - 0% { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@keyframes antMoveUpIn { - 0% { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } - 100% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } -} -@-webkit-keyframes antMoveUpOut { - 0% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@keyframes antMoveUpOut { - 0% { - -webkit-transform: translateY(0%); - transform: translateY(0%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 1; - } - 100% { - -webkit-transform: translateY(-100%); - transform: translateY(-100%); - -webkit-transform-origin: 0 0; - transform-origin: 0 0; - opacity: 0; - } -} -@-webkit-keyframes loadingCircle { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -@keyframes loadingCircle { - 100% { - -webkit-transform: rotate(360deg); - transform: rotate(360deg); - } -} -[ant-click-animating='true'], -[ant-click-animating-without-extra-node='true'] { - position: relative; -} -html { - --antd-wave-shadow-color: #1890ff; - --scroll-bar: 0; -} -[ant-click-animating-without-extra-node='true']::after, -.ant-click-animating-node { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; - border-radius: inherit; - -webkit-box-shadow: 0 0 0 0 #1890ff; - box-shadow: 0 0 0 0 #1890ff; - -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color); - box-shadow: 0 0 0 0 var(--antd-wave-shadow-color); - opacity: 0.2; - -webkit-animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1); - animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1); - -webkit-animation-fill-mode: forwards; - animation-fill-mode: forwards; - content: ''; - pointer-events: none; -} -@-webkit-keyframes waveEffect { - 100% { - -webkit-box-shadow: 0 0 0 #1890ff; - box-shadow: 0 0 0 #1890ff; - -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color); - box-shadow: 0 0 0 6px var(--antd-wave-shadow-color); - } -} -@keyframes waveEffect { - 100% { - -webkit-box-shadow: 0 0 0 #1890ff; - box-shadow: 0 0 0 #1890ff; - -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color); - box-shadow: 0 0 0 6px var(--antd-wave-shadow-color); - } -} -@-webkit-keyframes fadeEffect { - 100% { - opacity: 0; - } -} -@keyframes fadeEffect { - 100% { - opacity: 0; - } -} -.slide-up-enter, -.slide-up-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-up-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-up-enter.slide-up-enter-active, -.slide-up-appear.slide-up-appear-active { - -webkit-animation-name: antSlideUpIn; - animation-name: antSlideUpIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.slide-up-leave.slide-up-leave-active { - -webkit-animation-name: antSlideUpOut; - animation-name: antSlideUpOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.slide-up-enter, -.slide-up-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); - animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); -} -.slide-up-leave { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -} -.slide-down-enter, -.slide-down-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-down-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-down-enter.slide-down-enter-active, -.slide-down-appear.slide-down-appear-active { - -webkit-animation-name: antSlideDownIn; - animation-name: antSlideDownIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.slide-down-leave.slide-down-leave-active { - -webkit-animation-name: antSlideDownOut; - animation-name: antSlideDownOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.slide-down-enter, -.slide-down-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); - animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); -} -.slide-down-leave { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -} -.slide-left-enter, -.slide-left-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-left-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-left-enter.slide-left-enter-active, -.slide-left-appear.slide-left-appear-active { - -webkit-animation-name: antSlideLeftIn; - animation-name: antSlideLeftIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.slide-left-leave.slide-left-leave-active { - -webkit-animation-name: antSlideLeftOut; - animation-name: antSlideLeftOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.slide-left-enter, -.slide-left-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); - animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); -} -.slide-left-leave { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -} -.slide-right-enter, -.slide-right-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-right-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.slide-right-enter.slide-right-enter-active, -.slide-right-appear.slide-right-appear-active { - -webkit-animation-name: antSlideRightIn; - animation-name: antSlideRightIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.slide-right-leave.slide-right-leave-active { - -webkit-animation-name: antSlideRightOut; - animation-name: antSlideRightOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.slide-right-enter, -.slide-right-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); - animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); -} -.slide-right-leave { - -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); - animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); -} -@-webkit-keyframes antSlideUpIn { - 0% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } -} -@keyframes antSlideUpIn { - 0% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } -} -@-webkit-keyframes antSlideUpOut { - 0% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } -} -@keyframes antSlideUpOut { - 0% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } -} -@-webkit-keyframes antSlideDownIn { - 0% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 0; - } - 100% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 1; - } -} -@keyframes antSlideDownIn { - 0% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 0; - } - 100% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 1; - } -} -@-webkit-keyframes antSlideDownOut { - 0% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 1; - } - 100% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 0; - } -} -@keyframes antSlideDownOut { - 0% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 1; - } - 100% { - -webkit-transform: scaleY(0.8); - transform: scaleY(0.8); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; - opacity: 0; - } -} -@-webkit-keyframes antSlideLeftIn { - 0% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } -} -@keyframes antSlideLeftIn { - 0% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } -} -@-webkit-keyframes antSlideLeftOut { - 0% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } -} -@keyframes antSlideLeftOut { - 0% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } -} -@-webkit-keyframes antSlideRightIn { - 0% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 1; - } -} -@keyframes antSlideRightIn { - 0% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 1; - } -} -@-webkit-keyframes antSlideRightOut { - 0% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 0; - } -} -@keyframes antSlideRightOut { - 0% { - -webkit-transform: scaleX(1); - transform: scaleX(1); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleX(0.8); - transform: scaleX(0.8); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; - opacity: 0; - } -} -.zoom-enter, -.zoom-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-enter.zoom-enter-active, -.zoom-appear.zoom-appear-active { - -webkit-animation-name: antZoomIn; - animation-name: antZoomIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-leave.zoom-leave-active { - -webkit-animation-name: antZoomOut; - animation-name: antZoomOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-enter, -.zoom-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.zoom-big-enter, -.zoom-big-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-big-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-big-enter.zoom-big-enter-active, -.zoom-big-appear.zoom-big-appear-active { - -webkit-animation-name: antZoomBigIn; - animation-name: antZoomBigIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-big-leave.zoom-big-leave-active { - -webkit-animation-name: antZoomBigOut; - animation-name: antZoomBigOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-big-enter, -.zoom-big-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-big-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.zoom-big-fast-enter, -.zoom-big-fast-appear { - -webkit-animation-duration: 0.1s; - animation-duration: 0.1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-big-fast-leave { - -webkit-animation-duration: 0.1s; - animation-duration: 0.1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-big-fast-enter.zoom-big-fast-enter-active, -.zoom-big-fast-appear.zoom-big-fast-appear-active { - -webkit-animation-name: antZoomBigIn; - animation-name: antZoomBigIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-big-fast-leave.zoom-big-fast-leave-active { - -webkit-animation-name: antZoomBigOut; - animation-name: antZoomBigOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-big-fast-enter, -.zoom-big-fast-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-big-fast-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.zoom-up-enter, -.zoom-up-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-up-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-up-enter.zoom-up-enter-active, -.zoom-up-appear.zoom-up-appear-active { - -webkit-animation-name: antZoomUpIn; - animation-name: antZoomUpIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-up-leave.zoom-up-leave-active { - -webkit-animation-name: antZoomUpOut; - animation-name: antZoomUpOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-up-enter, -.zoom-up-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-up-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.zoom-down-enter, -.zoom-down-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-down-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-down-enter.zoom-down-enter-active, -.zoom-down-appear.zoom-down-appear-active { - -webkit-animation-name: antZoomDownIn; - animation-name: antZoomDownIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-down-leave.zoom-down-leave-active { - -webkit-animation-name: antZoomDownOut; - animation-name: antZoomDownOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-down-enter, -.zoom-down-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-down-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.zoom-left-enter, -.zoom-left-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-left-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-left-enter.zoom-left-enter-active, -.zoom-left-appear.zoom-left-appear-active { - -webkit-animation-name: antZoomLeftIn; - animation-name: antZoomLeftIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-left-leave.zoom-left-leave-active { - -webkit-animation-name: antZoomLeftOut; - animation-name: antZoomLeftOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-left-enter, -.zoom-left-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-left-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.zoom-right-enter, -.zoom-right-appear { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-right-leave { - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.zoom-right-enter.zoom-right-enter-active, -.zoom-right-appear.zoom-right-appear-active { - -webkit-animation-name: antZoomRightIn; - animation-name: antZoomRightIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.zoom-right-leave.zoom-right-leave-active { - -webkit-animation-name: antZoomRightOut; - animation-name: antZoomRightOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.zoom-right-enter, -.zoom-right-appear { - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); - animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); -} -.zoom-right-leave { - -webkit-animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -@-webkit-keyframes antZoomIn { - 0% { - -webkit-transform: scale(0.2); - transform: scale(0.2); - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } -} -@keyframes antZoomIn { - 0% { - -webkit-transform: scale(0.2); - transform: scale(0.2); - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } -} -@-webkit-keyframes antZoomOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - 100% { - -webkit-transform: scale(0.2); - transform: scale(0.2); - opacity: 0; - } -} -@keyframes antZoomOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - 100% { - -webkit-transform: scale(0.2); - transform: scale(0.2); - opacity: 0; - } -} -@-webkit-keyframes antZoomBigIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } -} -@keyframes antZoomBigIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - } -} -@-webkit-keyframes antZoomBigOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0; - } -} -@keyframes antZoomBigOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0; - } -} -@-webkit-keyframes antZoomUpIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - } -} -@keyframes antZoomUpIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - } -} -@-webkit-keyframes antZoomUpOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - opacity: 0; - } -} -@keyframes antZoomUpOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 0%; - transform-origin: 50% 0%; - opacity: 0; - } -} -@-webkit-keyframes antZoomLeftIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - } -} -@keyframes antZoomLeftIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - } -} -@-webkit-keyframes antZoomLeftOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - opacity: 0; - } -} -@keyframes antZoomLeftOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 0% 50%; - transform-origin: 0% 50%; - opacity: 0; - } -} -@-webkit-keyframes antZoomRightIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - } -} -@keyframes antZoomRightIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - } -} -@-webkit-keyframes antZoomRightOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - opacity: 0; - } -} -@keyframes antZoomRightOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 100% 50%; - transform-origin: 100% 50%; - opacity: 0; - } -} -@-webkit-keyframes antZoomDownIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - } -} -@keyframes antZoomDownIn { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - opacity: 0; - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - } -} -@-webkit-keyframes antZoomDownOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - opacity: 0; - } -} -@keyframes antZoomDownOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - } - 100% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - -webkit-transform-origin: 50% 100%; - transform-origin: 50% 100%; - opacity: 0; - } -} -.ant-motion-collapse-legacy { - overflow: hidden; -} -.ant-motion-collapse-legacy-active { - -webkit-transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important; - transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important; -} -.ant-motion-collapse { - overflow: hidden; - -webkit-transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important; - transition: height 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1) !important; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-affix { - position: fixed; - z-index: 10; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-alert { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - max-height: 1000vh; - padding: 8px 15px 8px 37px; - word-wrap: break-word; - border-radius: 2px; -} -.ant-alert.ant-alert-no-icon { - padding: 8px 15px; -} -.ant-alert.ant-alert-no-icon .ant-alert-close-icon { - top: 12.0005px; -} -.ant-alert.ant-alert-closable { - padding-right: 30px; -} -.ant-alert-icon { - position: absolute; - top: 12.0005px; - left: 16px; -} -.ant-alert-description { - display: none; - font-size: 14px; - line-height: 22px; -} -.ant-alert-success { - background-color: #f6ffed; - border: 1px solid #b7eb8f; -} -.ant-alert-success .ant-alert-icon { - color: #52c41a; -} -.ant-alert-info { - background-color: #e6f7ff; - border: 1px solid #91d5ff; -} -.ant-alert-info .ant-alert-icon { - color: #1890ff; -} -.ant-alert-warning { - background-color: #fffbe6; - border: 1px solid #ffe58f; -} -.ant-alert-warning .ant-alert-icon { - color: #faad14; -} -.ant-alert-error { - background-color: #fff2f0; - border: 1px solid #ffccc7; -} -.ant-alert-error .ant-alert-icon { - color: #ff4d4f; -} -.ant-alert-error .ant-alert-description > pre { - margin: 0; - padding: 0; -} -.ant-alert-close-icon { - position: absolute; - top: 12.0005px; - right: 16px; - padding: 0; - overflow: hidden; - font-size: 12px; - line-height: 12px; - background-color: transparent; - border: none; - outline: none; - cursor: pointer; -} -.ant-alert-close-icon .anticon-close { - color: rgba(0, 0, 0, 0.45); - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-alert-close-icon .anticon-close:hover { - color: rgba(0, 0, 0, 0.75); -} -.ant-alert-close-text { - color: rgba(0, 0, 0, 0.45); - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-alert-close-text:hover { - color: rgba(0, 0, 0, 0.75); -} -.ant-alert-with-description { - position: relative; - padding: 15px 15px 15px 63px; - color: rgba(0, 0, 0, 0.65); - line-height: 1.5715; - border-radius: 2px; -} -.ant-alert-with-description.ant-alert-no-icon { - padding: 15px 15px; -} -.ant-alert-with-description .ant-alert-icon { - position: absolute; - top: 15px; - left: 24px; - font-size: 24px; -} -.ant-alert-with-description .ant-alert-close-icon { - position: absolute; - top: 16px; - right: 16px; - font-size: 14px; - cursor: pointer; -} -.ant-alert-with-description .ant-alert-message { - display: block; - margin-bottom: 4px; - color: rgba(0, 0, 0, 0.85); - font-size: 16px; -} -.ant-alert-message { - color: rgba(0, 0, 0, 0.85); -} -.ant-alert-with-description .ant-alert-description { - display: block; -} -.ant-alert.ant-alert-closing { - max-height: 0; - margin: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-transform-origin: 50% 0; - transform-origin: 50% 0; - -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.ant-alert-slide-up-leave { - -webkit-animation: antAlertSlideUpOut 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation: antAlertSlideUpOut 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} -.ant-alert-banner { - margin-bottom: 0; - border: 0; - border-radius: 0; -} -@-webkit-keyframes antAlertSlideUpIn { - 0% { - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } -} -@keyframes antAlertSlideUpIn { - 0% { - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } - 100% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } -} -@-webkit-keyframes antAlertSlideUpOut { - 0% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } -} -@keyframes antAlertSlideUpOut { - 0% { - -webkit-transform: scaleY(1); - transform: scaleY(1); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 1; - } - 100% { - -webkit-transform: scaleY(0); - transform: scaleY(0); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; - opacity: 0; - } -} -.ant-alert.ant-alert-rtl { - padding: 8px 37px 8px 15px; - direction: rtl; -} -.ant-alert-rtl.ant-alert.ant-alert-no-icon { - padding: 8px 15px; -} -.ant-alert.ant-alert-rtl.ant-alert.ant-alert-closable { - padding-right: 37px; - padding-left: 30px; -} -.ant-alert.ant-alert-rtl.ant-alert.ant-alert-no-icon.ant-alert-closable { - padding-right: 15px; - padding-left: 30px; -} -.ant-alert-rtl .ant-alert-icon { - right: 16px; - left: auto; -} -.ant-alert-rtl .ant-alert-close-icon { - right: auto; - left: 16px; -} -.ant-alert.ant-alert-rtl.ant-alert-with-description, -.ant-alert.ant-alert-rtl.ant-alert-with-description.ant-alert-closable { - padding: 15px 63px 15px 15px; -} -.ant-alert.ant-alert-rtl.ant-alert-with-description.ant-alert-no-icon { - padding: 15px; -} -.ant-alert-rtl.ant-alert-with-description .ant-alert-icon { - right: 24px; - left: auto; -} -.ant-alert-rtl.ant-alert-with-description .ant-alert-close-icon { - right: auto; - left: 16px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-anchor { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - padding-left: 2px; -} -.ant-anchor-wrapper { - margin-left: -4px; - padding-left: 4px; - overflow: auto; - background-color: #fff; -} -.ant-anchor-ink { - position: absolute; - top: 0; - left: 0; - height: 100%; -} -.ant-anchor-ink::before { - position: relative; - display: block; - width: 2px; - height: 100%; - margin: 0 auto; - background-color: #f0f0f0; - content: ' '; -} -.ant-anchor-ink-ball { - position: absolute; - left: 50%; - display: none; - width: 8px; - height: 8px; - background-color: #fff; - border: 2px solid #1890ff; - border-radius: 8px; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); - -webkit-transition: top 0.3s ease-in-out; - transition: top 0.3s ease-in-out; -} -.ant-anchor-ink-ball.visible { - display: inline-block; -} -.ant-anchor.fixed .ant-anchor-ink .ant-anchor-ink-ball { - display: none; -} -.ant-anchor-link { - padding: 7px 0 7px 16px; - line-height: 1.143; -} -.ant-anchor-link-title { - position: relative; - display: block; - margin-bottom: 6px; - overflow: hidden; - color: rgba(0, 0, 0, 0.65); - white-space: nowrap; - text-overflow: ellipsis; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-anchor-link-title:only-child { - margin-bottom: 0; -} -.ant-anchor-link-active > .ant-anchor-link-title { - color: #1890ff; -} -.ant-anchor-link .ant-anchor-link { - padding-top: 5px; - padding-bottom: 5px; -} -.ant-anchor-rtl { - direction: rtl; -} -.ant-anchor-rtl.ant-anchor-wrapper { - margin-right: -4px; - margin-left: 0; - padding-right: 4px; - padding-left: 0; -} -.ant-anchor-rtl .ant-anchor-ink { - right: 0; - left: auto; -} -.ant-anchor-rtl .ant-anchor-ink-ball { - right: 50%; - left: 0; - -webkit-transform: translateX(50%); - transform: translateX(50%); -} -.ant-anchor-rtl .ant-anchor-link { - padding: 7px 16px 7px 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-select-auto-complete { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -.ant-select-auto-complete .ant-select-clear { - right: 13px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-select-single .ant-select-selector { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.ant-select-single .ant-select-selector .ant-select-selection-search { - position: absolute; - top: 0; - right: 11px; - bottom: 0; - left: 11px; -} -.ant-select-single .ant-select-selector .ant-select-selection-search-input { - width: 100%; -} -.ant-select-single .ant-select-selector .ant-select-selection-item, -.ant-select-single .ant-select-selector .ant-select-selection-placeholder { - padding: 0; - line-height: 30px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -@supports (-moz-appearance: meterbar) { - .ant-select-single .ant-select-selector .ant-select-selection-item, - .ant-select-single .ant-select-selector .ant-select-selection-placeholder { - line-height: 30px; - } -} -.ant-select-single .ant-select-selector .ant-select-selection-item { - position: relative; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-select-single .ant-select-selector .ant-select-selection-placeholder { - pointer-events: none; -} -.ant-select-single .ant-select-selector::after, -.ant-select-single .ant-select-selector .ant-select-selection-item::after, -.ant-select-single .ant-select-selector .ant-select-selection-placeholder::after { - display: inline-block; - width: 0; - visibility: hidden; - content: '\a0'; -} -.ant-select-single.ant-select-show-arrow .ant-select-selection-search { - right: 25px; -} -.ant-select-single.ant-select-show-arrow .ant-select-selection-item, -.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder { - padding-right: 18px; -} -.ant-select-single.ant-select-open .ant-select-selection-item { - opacity: 0.4; -} -.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - position: relative; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - width: 100%; - height: 32px; - padding: 0 11px; -} -.ant-select-single:not(.ant-select-customize-input) .ant-select-selector input { - cursor: pointer; -} -.ant-select-show-search.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - cursor: text; -} -.ant-select-show-search.ant-select-single:not(.ant-select-customize-input) .ant-select-selector input { - cursor: auto; -} -.ant-select-focused.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - cursor: not-allowed; -} -.ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector input { - cursor: not-allowed; -} -.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input { - margin: 0; - padding: 0; - background: transparent; - border: none; - outline: none; -} -.ant-select-single:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-search-input { - height: 30px; -} -.ant-select-single:not(.ant-select-customize-input) .ant-select-selector::after { - line-height: 30px; -} -.ant-select-single.ant-select-customize-input .ant-select-selector::after { - display: none; -} -.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-search { - position: static; - width: 100%; -} -.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder { - position: absolute; - right: 0; - left: 0; - padding: 0 11px; -} -.ant-select-single.ant-select-customize-input .ant-select-selector .ant-select-selection-placeholder::after { - display: none; -} -.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector { - height: 40px; -} -.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector::after, -.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item, -.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder { - line-height: 38px; -} -.ant-select-single.ant-select-lg:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input { - height: 38px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector { - height: 24px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector::after, -.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-item, -.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector .ant-select-selection-placeholder { - line-height: 22px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input):not(.ant-select-customize-input) .ant-select-selection-search-input { - height: 22px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selection-search { - right: 7px; - left: 7px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input) .ant-select-selector { - padding: 0 7px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search { - right: 28px; -} -.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item, -.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder { - padding-right: 21px; -} -.ant-select-single.ant-select-lg:not(.ant-select-customize-input) .ant-select-selector { - padding: 0 11px; -} -/** - * Do not merge `height` & `line-height` under style with `selection` & `search`, - * since chrome may update to redesign with its align logic. - */ -.ant-select-multiple .ant-select-selector { - position: relative; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 1px 4px; -} -.ant-select-multiple .ant-select-selector input { - cursor: pointer; -} -.ant-select-show-search.ant-select-multiple .ant-select-selector { - cursor: text; -} -.ant-select-show-search.ant-select-multiple .ant-select-selector input { - cursor: auto; -} -.ant-select-focused.ant-select-multiple .ant-select-selector { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-select-disabled.ant-select-multiple .ant-select-selector { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - cursor: not-allowed; -} -.ant-select-disabled.ant-select-multiple .ant-select-selector input { - cursor: not-allowed; -} -.ant-select-multiple .ant-select-selector .ant-select-selection-search-input { - margin: 0; - padding: 0; - background: transparent; - border: none; - outline: none; -} -.ant-select-show-search.ant-select-multiple .ant-select-selector { - cursor: text; -} -.ant-select-multiple .ant-select-selector::after { - display: inline-block; - width: 0; - margin: 2px 0; - line-height: 24px; - content: '\a0'; -} -.ant-select-multiple.ant-select-allow-clear .ant-select-selector { - padding-right: 24px; -} -.ant-select-multiple .ant-select-selection-item { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -webkit-box-sizing: border-box; - box-sizing: border-box; - max-width: 100%; - height: 24px; - margin-top: 2px; - margin-right: 4px; - margin-bottom: 2px; - padding: 0 4px 0 8px; - line-height: 22px; - background: #f5f5f5; - border: 1px solid #f0f0f0; - border-radius: 2px; - cursor: default; - -webkit-transition: font-size 0.3s, line-height 0.3s, height 0.3s; - transition: font-size 0.3s, line-height 0.3s, height 0.3s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-select-multiple .ant-select-selection-item-content { - display: inline-block; - margin-right: 4px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-select-multiple .ant-select-selection-item-remove { - color: inherit; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: rgba(0, 0, 0, 0.45); - font-weight: bold; - font-size: 12px; - line-height: inherit; - cursor: pointer; - display: inline-block; - font-size: 10px; -} -.ant-select-multiple .ant-select-selection-item-remove > * { - line-height: 1; -} -.ant-select-multiple .ant-select-selection-item-remove svg { - display: inline-block; -} -.ant-select-multiple .ant-select-selection-item-remove::before { - display: none; -} -.ant-select-multiple .ant-select-selection-item-remove .ant-select-multiple .ant-select-selection-item-remove-icon { - display: block; -} -.ant-select-multiple .ant-select-selection-item-remove > .anticon { - vertical-align: -0.2em; -} -.ant-select-multiple .ant-select-selection-item-remove:hover { - color: rgba(0, 0, 0, 0.75); -} -.ant-select-multiple .ant-select-selection-search { - position: relative; - margin-left: 0.5px; -} -.ant-select-multiple .ant-select-selection-search-input, -.ant-select-multiple .ant-select-selection-search-mirror { - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - line-height: 1.5715; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-select-multiple .ant-select-selection-search-input { - width: 100%; - min-width: 3px; -} -.ant-select-multiple .ant-select-selection-search-mirror { - position: absolute; - top: 0; - left: 0; - z-index: 999; - white-space: nowrap; - visibility: hidden; -} -.ant-select-multiple .ant-select-selection-search:first-child .ant-select-selection-search-input { - margin-left: 6.5px; -} -.ant-select-multiple .ant-select-selection-placeholder { - position: absolute; - top: 50%; - right: 11px; - left: 11px; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-select-multiple.ant-select-lg .ant-select-selector::after { - line-height: 32px; -} -.ant-select-multiple.ant-select-lg .ant-select-selection-item { - height: 32px; - line-height: 30px; -} -.ant-select-multiple.ant-select-lg .ant-select-selection-search { - height: 33px; - line-height: 33px; -} -.ant-select-multiple.ant-select-lg .ant-select-selection-search-input, -.ant-select-multiple.ant-select-lg .ant-select-selection-search-mirror { - height: 32px; - line-height: 30px; -} -.ant-select-multiple.ant-select-sm .ant-select-selector::after { - line-height: 16px; -} -.ant-select-multiple.ant-select-sm .ant-select-selection-item { - height: 16px; - line-height: 14px; -} -.ant-select-multiple.ant-select-sm .ant-select-selection-search { - height: 17px; - line-height: 17px; -} -.ant-select-multiple.ant-select-sm .ant-select-selection-search-input, -.ant-select-multiple.ant-select-sm .ant-select-selection-search-mirror { - height: 16px; - line-height: 14px; -} -.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder { - left: 7px; -} -.ant-select-multiple.ant-select-sm .ant-select-selection-search:first-child .ant-select-selection-search-input { - margin-left: 3px; -} -.ant-select-multiple.ant-select-lg .ant-select-selection-item { - height: 32px; - line-height: 32px; -} -.ant-select-disabled .ant-select-selection-item-remove { - display: none; -} -/* Reset search input style */ -.ant-select { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - cursor: pointer; -} -.ant-select:not(.ant-select-disabled):hover .ant-select-selector { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-select-selection-item { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -@media all and (-ms-high-contrast: none) { - .ant-select-selection-item *::-ms-backdrop, - .ant-select-selection-item { - -ms-flex: auto; - flex: auto; - } -} -.ant-select-selection-placeholder { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - opacity: 0.4; -} -@media all and (-ms-high-contrast: none) { - .ant-select-selection-placeholder *::-ms-backdrop, - .ant-select-selection-placeholder { - -ms-flex: auto; - flex: auto; - } -} -.ant-select-arrow { - display: inline-block; - color: inherit; - font-style: normal; - line-height: 0; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - top: 53%; - right: 11px; - width: 12px; - height: 12px; - margin-top: -6px; - color: rgba(0, 0, 0, 0.25); - font-size: 12px; - line-height: 1; - text-align: center; - pointer-events: none; -} -.ant-select-arrow > * { - line-height: 1; -} -.ant-select-arrow svg { - display: inline-block; -} -.ant-select-arrow::before { - display: none; -} -.ant-select-arrow .ant-select-arrow-icon { - display: block; -} -.ant-select-arrow .anticon { - vertical-align: top; - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -.ant-select-arrow .anticon > svg { - vertical-align: top; -} -.ant-select-arrow .anticon:not(.ant-select-suffix) { - pointer-events: auto; -} -.ant-select-clear { - position: absolute; - top: 50%; - right: 11px; - z-index: 1; - display: inline-block; - width: 12px; - height: 12px; - margin-top: -6px; - color: rgba(0, 0, 0, 0.25); - font-size: 12px; - font-style: normal; - line-height: 1; - text-align: center; - text-transform: none; - background: #fff; - cursor: pointer; - opacity: 0; - -webkit-transition: color 0.3s ease, opacity 0.15s ease; - transition: color 0.3s ease, opacity 0.15s ease; - text-rendering: auto; -} -.ant-select-clear::before { - display: block; -} -.ant-select-clear:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-select:hover .ant-select-clear { - opacity: 1; -} -.ant-select-dropdown { - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - top: -9999px; - left: -9999px; - z-index: 1050; - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 4px 0; - overflow: hidden; - font-size: 14px; - font-variant: initial; - background-color: #fff; - border-radius: 2px; - outline: none; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft, -.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft { - -webkit-animation-name: antSlideUpIn; - animation-name: antSlideUpIn; -} -.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft, -.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft { - -webkit-animation-name: antSlideDownIn; - animation-name: antSlideDownIn; -} -.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft { - -webkit-animation-name: antSlideUpOut; - animation-name: antSlideUpOut; -} -.ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft { - -webkit-animation-name: antSlideDownOut; - animation-name: antSlideDownOut; -} -.ant-select-dropdown-hidden { - display: none; -} -.ant-select-dropdown-empty { - color: rgba(0, 0, 0, 0.25); -} -.ant-select-item-empty { - position: relative; - display: block; - min-height: 32px; - padding: 5px 12px; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; - line-height: 22px; - color: rgba(0, 0, 0, 0.25); -} -.ant-select-item { - position: relative; - display: block; - min-height: 32px; - padding: 5px 12px; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; - line-height: 22px; - cursor: pointer; - -webkit-transition: background 0.3s ease; - transition: background 0.3s ease; -} -.ant-select-item-group { - color: rgba(0, 0, 0, 0.45); - font-size: 12px; - cursor: default; -} -.ant-select-item-option { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.ant-select-item-option-content { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-select-item-option-state { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-select-item-option-active:not(.ant-select-item-option-disabled) { - background-color: #f5f5f5; -} -.ant-select-item-option-selected:not(.ant-select-item-option-disabled) { - color: rgba(0, 0, 0, 0.65); - font-weight: 600; - background-color: #e6f7ff; -} -.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state { - color: #1890ff; -} -.ant-select-item-option-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-select-item-option-grouped { - padding-left: 24px; -} -.ant-select-lg { - font-size: 16px; -} -.ant-select-borderless .ant-select-selector { - background-color: transparent !important; - border-color: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.ant-select-rtl { - direction: rtl; -} -.ant-select-rtl .ant-select-arrow { - right: initial; - left: 11px; -} -.ant-select-rtl .ant-select-clear { - right: initial; - left: 11px; -} -.ant-select-dropdown-rtl { - direction: rtl; -} -.ant-select-dropdown-rtl .ant-select-item-option-grouped { - padding-right: 24px; - padding-left: 12px; -} -.ant-select-rtl.ant-select-multiple.ant-select-allow-clear .ant-select-selector { - padding-right: 4px; - padding-left: 24px; -} -.ant-select-rtl.ant-select-multiple .ant-select-selection-item { - margin-right: 0; - margin-left: 4px; - padding: 0 8px 0 4px; - text-align: right; -} -.ant-select-rtl.ant-select-multiple .ant-select-selection-item-content { - margin-right: 0; - margin-left: 4px; - text-align: right; -} -.ant-select-rtl.ant-select-multiple .ant-select-selection-search { - margin-right: 0.5px; - margin-left: 4px; -} -.ant-select-rtl.ant-select-multiple .ant-select-selection-search-mirror { - right: 0; - left: auto; -} -.ant-select-rtl.ant-select-multiple .ant-select-selection-placeholder { - right: 11px; - left: auto; -} -.ant-select-rtl.ant-select-multiple.ant-select-sm .ant-select-selection-placeholder { - right: 7px; -} -.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-item, -.ant-select-rtl.ant-select-single .ant-select-selector .ant-select-selection-placeholder { - right: 0; - left: 9px; - text-align: right; -} -.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-search { - right: 11px; - left: 25px; -} -.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-item, -.ant-select-rtl.ant-select-single.ant-select-show-arrow .ant-select-selection-placeholder { - padding-right: 0; - padding-left: 18px; -} -.ant-select-rtl.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - padding: 0 11px; -} -.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-search { - right: 0; -} -.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-item, -.ant-select-rtl.ant-select-single.ant-select-sm:not(.ant-select-customize-input).ant-select-show-arrow .ant-select-selection-placeholder { - padding-right: 0; - padding-left: 21px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-empty { - margin: 0 8px; - font-size: 14px; - line-height: 1.5715; - text-align: center; -} -.ant-empty-image { - height: 100px; - margin-bottom: 8px; -} -.ant-empty-image img { - height: 100%; -} -.ant-empty-image svg { - height: 100%; - margin: auto; -} -.ant-empty-description { - margin: 0; -} -.ant-empty-footer { - margin-top: 16px; -} -.ant-empty-normal { - margin: 32px 0; - color: rgba(0, 0, 0, 0.25); -} -.ant-empty-normal .ant-empty-image { - height: 40px; -} -.ant-empty-small { - margin: 8px 0; - color: rgba(0, 0, 0, 0.25); -} -.ant-empty-small .ant-empty-image { - height: 35px; -} -.ant-empty-img-default-ellipse { - fill-opacity: 0.8; - fill: #f5f5f5; -} -.ant-empty-img-default-path-1 { - fill: #aeb8c2; -} -.ant-empty-img-default-path-2 { - fill: url(#linearGradient-1); -} -.ant-empty-img-default-path-3 { - fill: #f5f5f7; -} -.ant-empty-img-default-path-4 { - fill: #dce0e6; -} -.ant-empty-img-default-path-5 { - fill: #dce0e6; -} -.ant-empty-img-default-g { - fill: #fff; -} -.ant-empty-img-simple-ellipse { - fill: #f5f5f5; -} -.ant-empty-img-simple-g { - stroke: #d9d9d9; -} -.ant-empty-img-simple-path { - fill: #fafafa; -} -.ant-empty-rtl { - direction: rtl; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-avatar { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - overflow: hidden; - color: #fff; - white-space: nowrap; - text-align: center; - vertical-align: middle; - background: #ccc; - width: 32px; - height: 32px; - line-height: 32px; - border-radius: 50%; -} -.ant-avatar-image { - background: transparent; -} -.ant-avatar-string { - position: absolute; - left: 50%; - -webkit-transform-origin: 0 center; - transform-origin: 0 center; -} -.ant-avatar.ant-avatar-icon { - font-size: 18px; -} -.ant-avatar.ant-avatar-icon > .anticon { - margin: 0; -} -.ant-avatar-lg { - width: 40px; - height: 40px; - line-height: 40px; - border-radius: 50%; -} -.ant-avatar-lg-string { - position: absolute; - left: 50%; - -webkit-transform-origin: 0 center; - transform-origin: 0 center; -} -.ant-avatar-lg.ant-avatar-icon { - font-size: 24px; -} -.ant-avatar-lg.ant-avatar-icon > .anticon { - margin: 0; -} -.ant-avatar-sm { - width: 24px; - height: 24px; - line-height: 24px; - border-radius: 50%; -} -.ant-avatar-sm-string { - position: absolute; - left: 50%; - -webkit-transform-origin: 0 center; - transform-origin: 0 center; -} -.ant-avatar-sm.ant-avatar-icon { - font-size: 14px; -} -.ant-avatar-sm.ant-avatar-icon > .anticon { - margin: 0; -} -.ant-avatar-square { - border-radius: 2px; -} -.ant-avatar > img { - display: block; - width: 100%; - height: 100%; - -o-object-fit: cover; - object-fit: cover; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-back-top { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: fixed; - right: 100px; - bottom: 50px; - z-index: 10; - width: 40px; - height: 40px; - cursor: pointer; -} -.ant-back-top:empty { - display: none; -} -.ant-back-top-rtl { - right: auto; - left: 100px; - direction: rtl; -} -.ant-back-top-content { - width: 40px; - height: 40px; - overflow: hidden; - color: #fff; - text-align: center; - background-color: rgba(0, 0, 0, 0.45); - border-radius: 20px; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-back-top-content:hover { - background-color: rgba(0, 0, 0, 0.65); - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-back-top-icon { - font-size: 24px; - line-height: 40px; -} -@media screen and (max-width: 768px) { - .ant-back-top { - right: 60px; - } -} -@media screen and (max-width: 480px) { - .ant-back-top { - right: 20px; - } -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-badge { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - color: unset; - line-height: 1; -} -.ant-badge-count { - z-index: auto; - min-width: 20px; - height: 20px; - padding: 0 6px; - color: #fff; - font-weight: normal; - font-size: 12px; - line-height: 20px; - white-space: nowrap; - text-align: center; - background: #ff4d4f; - border-radius: 10px; - -webkit-box-shadow: 0 0 0 1px #fff; - box-shadow: 0 0 0 1px #fff; -} -.ant-badge-count a, -.ant-badge-count a:hover { - color: #fff; -} -.ant-badge-multiple-words { - padding: 0 8px; -} -.ant-badge-dot { - z-index: auto; - width: 6px; - height: 6px; - background: #ff4d4f; - border-radius: 100%; - -webkit-box-shadow: 0 0 0 1px #fff; - box-shadow: 0 0 0 1px #fff; -} -.ant-badge-count, -.ant-badge-dot, -.ant-badge .ant-scroll-number-custom-component { - position: absolute; - top: 0; - right: 0; - -webkit-transform: translate(50%, -50%); - transform: translate(50%, -50%); - -webkit-transform-origin: 100% 0%; - transform-origin: 100% 0%; -} -.ant-badge-status { - line-height: inherit; - vertical-align: baseline; -} -.ant-badge-status-dot { - position: relative; - top: -1px; - display: inline-block; - width: 6px; - height: 6px; - vertical-align: middle; - border-radius: 50%; -} -.ant-badge-status-success { - background-color: #52c41a; -} -.ant-badge-status-processing { - position: relative; - background-color: #1890ff; -} -.ant-badge-status-processing::after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 1px solid #1890ff; - border-radius: 50%; - -webkit-animation: antStatusProcessing 1.2s infinite ease-in-out; - animation: antStatusProcessing 1.2s infinite ease-in-out; - content: ''; -} -.ant-badge-status-default { - background-color: #d9d9d9; -} -.ant-badge-status-error { - background-color: #ff4d4f; -} -.ant-badge-status-warning { - background-color: #faad14; -} -.ant-badge-status-pink { - background: #eb2f96; -} -.ant-badge-status-magenta { - background: #eb2f96; -} -.ant-badge-status-red { - background: #f5222d; -} -.ant-badge-status-volcano { - background: #fa541c; -} -.ant-badge-status-orange { - background: #fa8c16; -} -.ant-badge-status-yellow { - background: #fadb14; -} -.ant-badge-status-gold { - background: #faad14; -} -.ant-badge-status-cyan { - background: #13c2c2; -} -.ant-badge-status-lime { - background: #a0d911; -} -.ant-badge-status-green { - background: #52c41a; -} -.ant-badge-status-blue { - background: #1890ff; -} -.ant-badge-status-geekblue { - background: #2f54eb; -} -.ant-badge-status-purple { - background: #722ed1; -} -.ant-badge-status-text { - margin-left: 8px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; -} -.ant-badge-zoom-appear, -.ant-badge-zoom-enter { - -webkit-animation: antZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46); - animation: antZoomBadgeIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46); - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} -.ant-badge-zoom-leave { - -webkit-animation: antZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6); - animation: antZoomBadgeOut 0.3s cubic-bezier(0.71, -0.46, 0.88, 0.6); - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} -.ant-badge-not-a-wrapper:not(.ant-badge-status) { - vertical-align: middle; -} -.ant-badge-not-a-wrapper .ant-scroll-number { - position: relative; - top: auto; - display: block; -} -.ant-badge-not-a-wrapper .ant-badge-count { - -webkit-transform: none; - transform: none; -} -@-webkit-keyframes antStatusProcessing { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(2.4); - transform: scale(2.4); - opacity: 0; - } -} -@keyframes antStatusProcessing { - 0% { - -webkit-transform: scale(0.8); - transform: scale(0.8); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(2.4); - transform: scale(2.4); - opacity: 0; - } -} -.ant-scroll-number { - overflow: hidden; -} -.ant-scroll-number-only { - display: inline-block; - height: 20px; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-scroll-number-only > p.ant-scroll-number-only-unit { - height: 20px; - margin: 0; -} -.ant-scroll-number-symbol { - vertical-align: top; -} -@-webkit-keyframes antZoomBadgeIn { - 0% { - -webkit-transform: scale(0) translate(50%, -50%); - transform: scale(0) translate(50%, -50%); - opacity: 0; - } - 100% { - -webkit-transform: scale(1) translate(50%, -50%); - transform: scale(1) translate(50%, -50%); - } -} -@keyframes antZoomBadgeIn { - 0% { - -webkit-transform: scale(0) translate(50%, -50%); - transform: scale(0) translate(50%, -50%); - opacity: 0; - } - 100% { - -webkit-transform: scale(1) translate(50%, -50%); - transform: scale(1) translate(50%, -50%); - } -} -@-webkit-keyframes antZoomBadgeOut { - 0% { - -webkit-transform: scale(1) translate(50%, -50%); - transform: scale(1) translate(50%, -50%); - } - 100% { - -webkit-transform: scale(0) translate(50%, -50%); - transform: scale(0) translate(50%, -50%); - opacity: 0; - } -} -@keyframes antZoomBadgeOut { - 0% { - -webkit-transform: scale(1) translate(50%, -50%); - transform: scale(1) translate(50%, -50%); - } - 100% { - -webkit-transform: scale(0) translate(50%, -50%); - transform: scale(0) translate(50%, -50%); - opacity: 0; - } -} -.ant-badge-rtl { - direction: rtl; -} -.ant-badge-rtl .ant-badge-count, -.ant-badge-rtl .ant-badge-dot, -.ant-badge-rtl .ant-badge .ant-scroll-number-custom-component { - right: auto; - left: 0; - direction: ltr; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; -} -.ant-badge-rtl.ant-badge .ant-scroll-number-custom-component { - right: auto; - left: 0; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - -webkit-transform-origin: 0% 0%; - transform-origin: 0% 0%; -} -.ant-badge-rtl .ant-badge-status-text { - margin-right: 8px; - margin-left: 0; -} -.ant-badge-rtl .ant-badge-zoom-appear, -.ant-badge-rtl .ant-badge-zoom-enter { - -webkit-animation-name: antZoomBadgeInRtl; - animation-name: antZoomBadgeInRtl; -} -.ant-badge-rtl .ant-badge-zoom-leave { - -webkit-animation-name: antZoomBadgeOutRtl; - animation-name: antZoomBadgeOutRtl; -} -.ant-badge-not-a-wrapper .ant-badge-count { - -webkit-transform: none; - transform: none; -} -@-webkit-keyframes antZoomBadgeInRtl { - 0% { - -webkit-transform: scale(0) translate(-50%, -50%); - transform: scale(0) translate(-50%, -50%); - opacity: 0; - } - 100% { - -webkit-transform: scale(1) translate(-50%, -50%); - transform: scale(1) translate(-50%, -50%); - } -} -@keyframes antZoomBadgeInRtl { - 0% { - -webkit-transform: scale(0) translate(-50%, -50%); - transform: scale(0) translate(-50%, -50%); - opacity: 0; - } - 100% { - -webkit-transform: scale(1) translate(-50%, -50%); - transform: scale(1) translate(-50%, -50%); - } -} -@-webkit-keyframes antZoomBadgeOutRtl { - 0% { - -webkit-transform: scale(1) translate(-50%, -50%); - transform: scale(1) translate(-50%, -50%); - } - 100% { - -webkit-transform: scale(0) translate(-50%, -50%); - transform: scale(0) translate(-50%, -50%); - opacity: 0; - } -} -@keyframes antZoomBadgeOutRtl { - 0% { - -webkit-transform: scale(1) translate(-50%, -50%); - transform: scale(1) translate(-50%, -50%); - } - 100% { - -webkit-transform: scale(0) translate(-50%, -50%); - transform: scale(0) translate(-50%, -50%); - opacity: 0; - } -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-breadcrumb { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; -} -.ant-breadcrumb .anticon { - font-size: 14px; -} -.ant-breadcrumb a { - color: rgba(0, 0, 0, 0.45); - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-breadcrumb a:hover { - color: #40a9ff; -} -.ant-breadcrumb > span:last-child { - color: rgba(0, 0, 0, 0.65); -} -.ant-breadcrumb > span:last-child a { - color: rgba(0, 0, 0, 0.65); -} -.ant-breadcrumb > span:last-child .ant-breadcrumb-separator { - display: none; -} -.ant-breadcrumb-separator { - margin: 0 8px; - color: rgba(0, 0, 0, 0.45); -} -.ant-breadcrumb-link > .anticon + span, -.ant-breadcrumb-link > .anticon + a { - margin-left: 4px; -} -.ant-breadcrumb-overlay-link > .anticon { - margin-left: 4px; -} -.ant-breadcrumb-rtl { - direction: rtl; -} -.ant-breadcrumb-rtl::before { - display: table; - content: ''; -} -.ant-breadcrumb-rtl::after { - display: table; - clear: both; - content: ''; -} -.ant-breadcrumb-rtl > span { - float: right; -} -.ant-breadcrumb-rtl .ant-breadcrumb-link > .anticon + span, -.ant-breadcrumb-rtl .ant-breadcrumb-link > .anticon + a { - margin-right: 4px; - margin-left: 0; -} -.ant-breadcrumb-rtl .ant-breadcrumb-overlay-link > .anticon { - margin-right: 4px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-menu-item-danger.ant-menu-item { - color: #ff4d4f; -} -.ant-menu-item-danger.ant-menu-item:hover, -.ant-menu-item-danger.ant-menu-item-active { - color: #ff4d4f; -} -.ant-menu-item-danger.ant-menu-item:active { - background: #fff1f0; -} -.ant-menu-item-danger.ant-menu-item-selected { - color: #ff4d4f; -} -.ant-menu-item-danger.ant-menu-item-selected > a, -.ant-menu-item-danger.ant-menu-item-selected > a:hover { - color: #ff4d4f; -} -.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected { - background-color: #fff1f0; -} -.ant-menu-inline .ant-menu-item-danger.ant-menu-item::after { - border-right-color: #ff4d4f; -} -.ant-menu-dark .ant-menu-item-danger.ant-menu-item, -.ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, -.ant-menu-dark .ant-menu-item-danger.ant-menu-item > a { - color: #ff4d4f; -} -.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected { - color: #fff; - background-color: #ff4d4f; -} -.ant-menu { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - font-variant: tabular-nums; - line-height: 1.5715; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - margin-bottom: 0; - padding-left: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 0; - text-align: left; - list-style: none; - background: #fff; - outline: none; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - -webkit-transition: background 0.3s, width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s; - transition: background 0.3s, width 0.3s cubic-bezier(0.2, 0, 0, 1) 0s; -} -.ant-menu::before { - display: table; - content: ''; -} -.ant-menu::after { - display: table; - clear: both; - content: ''; -} -.ant-menu ul, -.ant-menu ol { - margin: 0; - padding: 0; - list-style: none; -} -.ant-menu-hidden { - display: none; -} -.ant-menu-item-group-title { - height: 1.5715; - padding: 8px 16px; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - line-height: 1.5715; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-menu-submenu, -.ant-menu-submenu-inline { - -webkit-transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-submenu-selected { - color: #1890ff; -} -.ant-menu-item:active, -.ant-menu-submenu-title:active { - background: #e6f7ff; -} -.ant-menu-submenu .ant-menu-sub { - cursor: initial; - -webkit-transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-item a { - color: rgba(0, 0, 0, 0.65); -} -.ant-menu-item a:hover { - color: #1890ff; -} -.ant-menu-item a::before { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: transparent; - content: ''; -} -.ant-menu-item > .ant-badge a { - color: rgba(0, 0, 0, 0.65); -} -.ant-menu-item > .ant-badge a:hover { - color: #1890ff; -} -.ant-menu-item-divider { - height: 1px; - overflow: hidden; - line-height: 0; - background-color: #f0f0f0; -} -.ant-menu-item:hover, -.ant-menu-item-active, -.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, -.ant-menu-submenu-active, -.ant-menu-submenu-title:hover { - color: #1890ff; -} -.ant-menu-horizontal .ant-menu-item, -.ant-menu-horizontal .ant-menu-submenu { - margin-top: -1px; -} -.ant-menu-horizontal > .ant-menu-item:hover, -.ant-menu-horizontal > .ant-menu-item-active, -.ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover { - background-color: transparent; -} -.ant-menu-item-selected { - color: #1890ff; -} -.ant-menu-item-selected a, -.ant-menu-item-selected a:hover { - color: #1890ff; -} -.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { - background-color: #e6f7ff; -} -.ant-menu-inline, -.ant-menu-vertical, -.ant-menu-vertical-left { - border-right: 1px solid #f0f0f0; -} -.ant-menu-vertical-right { - border-left: 1px solid #f0f0f0; -} -.ant-menu-vertical.ant-menu-sub, -.ant-menu-vertical-left.ant-menu-sub, -.ant-menu-vertical-right.ant-menu-sub { - min-width: 160px; - max-height: calc(100vh - 100px); - padding: 0; - overflow: hidden; - border-right: 0; - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -.ant-menu-vertical.ant-menu-sub:not(.zoom-big-enter-active):not(.zoom-big-leave-active), -.ant-menu-vertical-left.ant-menu-sub:not(.zoom-big-enter-active):not(.zoom-big-leave-active), -.ant-menu-vertical-right.ant-menu-sub:not(.zoom-big-enter-active):not(.zoom-big-leave-active) { - overflow-x: hidden; - overflow-y: auto; -} -.ant-menu-vertical.ant-menu-sub .ant-menu-item, -.ant-menu-vertical-left.ant-menu-sub .ant-menu-item, -.ant-menu-vertical-right.ant-menu-sub .ant-menu-item { - left: 0; - margin-left: 0; - border-right: 0; -} -.ant-menu-vertical.ant-menu-sub .ant-menu-item::after, -.ant-menu-vertical-left.ant-menu-sub .ant-menu-item::after, -.ant-menu-vertical-right.ant-menu-sub .ant-menu-item::after { - border-right: 0; -} -.ant-menu-vertical.ant-menu-sub > .ant-menu-item, -.ant-menu-vertical-left.ant-menu-sub > .ant-menu-item, -.ant-menu-vertical-right.ant-menu-sub > .ant-menu-item, -.ant-menu-vertical.ant-menu-sub > .ant-menu-submenu, -.ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu, -.ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu { - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -.ant-menu-horizontal.ant-menu-sub { - min-width: 114px; -} -.ant-menu-item, -.ant-menu-submenu-title { - position: relative; - display: block; - margin: 0; - padding: 0 20px; - white-space: nowrap; - cursor: pointer; - -webkit-transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), border-color 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), padding 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-item .anticon, -.ant-menu-submenu-title .anticon { - min-width: 14px; - margin-right: 10px; - font-size: 14px; - -webkit-transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: font-size 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), margin 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-item .anticon + span, -.ant-menu-submenu-title .anticon + span { - opacity: 1; - -webkit-transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: opacity 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), width 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-item.ant-menu-item-only-child > .anticon, -.ant-menu-submenu-title.ant-menu-item-only-child > .anticon { - margin-right: 0; -} -.ant-menu > .ant-menu-item-divider { - height: 1px; - margin: 1px 0; - padding: 0; - overflow: hidden; - line-height: 0; - background-color: #f0f0f0; -} -.ant-menu-submenu-popup { - position: absolute; - z-index: 1050; - border-radius: 2px; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-menu-submenu-popup::before { - position: absolute; - top: -7px; - right: 0; - bottom: 0; - left: 0; - z-index: -1; - width: 100%; - height: 100%; - opacity: 0.0001; - content: ' '; -} -.ant-menu-submenu-placement-rightTop::before { - top: 0; - left: -7px; -} -.ant-menu-submenu > .ant-menu { - background-color: #fff; - border-radius: 2px; -} -.ant-menu-submenu > .ant-menu-submenu-title::after { - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-submenu-popup > .ant-menu { - background-color: #fff; -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow { - position: absolute; - top: 50%; - right: 16px; - width: 10px; - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after { - position: absolute; - width: 6px; - height: 1.5px; - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.65)), to(rgba(0, 0, 0, 0.65))); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65)); - border-radius: 2px; - -webkit-transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: background 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), top 0.3s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - content: ''; -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before { - -webkit-transform: rotate(45deg) translateY(-2px); - transform: rotate(45deg) translateY(-2px); -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after { - -webkit-transform: rotate(-45deg) translateY(2px); - transform: rotate(-45deg) translateY(2px); -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after, -.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before, -.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow::before { - background: -webkit-gradient(linear, left top, right top, from(#1890ff), to(#1890ff)); - background: linear-gradient(to right, #1890ff, #1890ff); -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before { - -webkit-transform: rotate(45deg) translateY(-2px); - transform: rotate(45deg) translateY(-2px); -} -.ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after { - -webkit-transform: rotate(-45deg) translateY(2px); - transform: rotate(-45deg) translateY(2px); -} -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before { - -webkit-transform: rotate(-45deg) translateX(2px); - transform: rotate(-45deg) translateX(2px); -} -.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after { - -webkit-transform: rotate(45deg) translateX(-2px); - transform: rotate(45deg) translateX(-2px); -} -.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow { - -webkit-transform: translateY(-2px); - transform: translateY(-2px); -} -.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::after { - -webkit-transform: rotate(-45deg) translateX(-2px); - transform: rotate(-45deg) translateX(-2px); -} -.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow::before { - -webkit-transform: rotate(45deg) translateX(2px); - transform: rotate(45deg) translateX(2px); -} -.ant-menu-vertical .ant-menu-submenu-selected, -.ant-menu-vertical-left .ant-menu-submenu-selected, -.ant-menu-vertical-right .ant-menu-submenu-selected { - color: #1890ff; -} -.ant-menu-horizontal { - line-height: 46px; - white-space: nowrap; - border: 0; - border-bottom: 1px solid #f0f0f0; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-menu-horizontal > .ant-menu-item, -.ant-menu-horizontal > .ant-menu-submenu { - position: relative; - top: 1px; - display: inline-block; - vertical-align: bottom; - border-bottom: 2px solid transparent; -} -.ant-menu-horizontal > .ant-menu-item:hover, -.ant-menu-horizontal > .ant-menu-submenu:hover, -.ant-menu-horizontal > .ant-menu-item-active, -.ant-menu-horizontal > .ant-menu-submenu-active, -.ant-menu-horizontal > .ant-menu-item-open, -.ant-menu-horizontal > .ant-menu-submenu-open, -.ant-menu-horizontal > .ant-menu-item-selected, -.ant-menu-horizontal > .ant-menu-submenu-selected { - color: #1890ff; - border-bottom: 2px solid #1890ff; -} -.ant-menu-horizontal > .ant-menu-item a { - color: rgba(0, 0, 0, 0.65); -} -.ant-menu-horizontal > .ant-menu-item a:hover { - color: #1890ff; -} -.ant-menu-horizontal > .ant-menu-item a::before { - bottom: -2px; -} -.ant-menu-horizontal > .ant-menu-item-selected a { - color: #1890ff; -} -.ant-menu-horizontal::after { - display: block; - clear: both; - height: 0; - content: '\20'; -} -.ant-menu-vertical .ant-menu-item, -.ant-menu-vertical-left .ant-menu-item, -.ant-menu-vertical-right .ant-menu-item, -.ant-menu-inline .ant-menu-item { - position: relative; -} -.ant-menu-vertical .ant-menu-item::after, -.ant-menu-vertical-left .ant-menu-item::after, -.ant-menu-vertical-right .ant-menu-item::after, -.ant-menu-inline .ant-menu-item::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - border-right: 3px solid #1890ff; - -webkit-transform: scaleY(0.0001); - transform: scaleY(0.0001); - opacity: 0; - -webkit-transition: opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); - transition: opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); - transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); - transition: transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 0.15s cubic-bezier(0.215, 0.61, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.215, 0.61, 0.355, 1); - content: ''; -} -.ant-menu-vertical .ant-menu-item, -.ant-menu-vertical-left .ant-menu-item, -.ant-menu-vertical-right .ant-menu-item, -.ant-menu-inline .ant-menu-item, -.ant-menu-vertical .ant-menu-submenu-title, -.ant-menu-vertical-left .ant-menu-submenu-title, -.ant-menu-vertical-right .ant-menu-submenu-title, -.ant-menu-inline .ant-menu-submenu-title { - height: 40px; - margin-top: 4px; - margin-bottom: 4px; - padding: 0 16px; - overflow: hidden; - line-height: 40px; - text-overflow: ellipsis; -} -.ant-menu-vertical .ant-menu-submenu, -.ant-menu-vertical-left .ant-menu-submenu, -.ant-menu-vertical-right .ant-menu-submenu, -.ant-menu-inline .ant-menu-submenu { - padding-bottom: 0.02px; -} -.ant-menu-vertical .ant-menu-item:not(:last-child), -.ant-menu-vertical-left .ant-menu-item:not(:last-child), -.ant-menu-vertical-right .ant-menu-item:not(:last-child), -.ant-menu-inline .ant-menu-item:not(:last-child) { - margin-bottom: 8px; -} -.ant-menu-vertical > .ant-menu-item, -.ant-menu-vertical-left > .ant-menu-item, -.ant-menu-vertical-right > .ant-menu-item, -.ant-menu-inline > .ant-menu-item, -.ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title, -.ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title, -.ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title, -.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title { - height: 40px; - line-height: 40px; -} -.ant-menu-vertical .ant-menu-submenu-title { - padding-right: 34px; -} -.ant-menu-inline { - width: 100%; -} -.ant-menu-inline .ant-menu-selected::after, -.ant-menu-inline .ant-menu-item-selected::after { - -webkit-transform: scaleY(1); - transform: scaleY(1); - opacity: 1; - -webkit-transition: opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.15s cubic-bezier(0.645, 0.045, 0.355, 1), -webkit-transform 0.15s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-menu-inline .ant-menu-item, -.ant-menu-inline .ant-menu-submenu-title { - width: calc(100% + 1px); -} -.ant-menu-inline .ant-menu-submenu-title { - padding-right: 34px; -} -.ant-menu-inline-collapsed { - width: 80px; -} -.ant-menu-inline-collapsed > .ant-menu-item, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title, -.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title { - left: 0; - padding: 0 32px; - text-overflow: clip; -} -.ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow { - display: none; -} -.ant-menu-inline-collapsed > .ant-menu-item .anticon, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon, -.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon { - margin: 0; - font-size: 16px; - line-height: 40px; -} -.ant-menu-inline-collapsed > .ant-menu-item .anticon + span, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span, -.ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span, -.ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span { - display: inline-block; - max-width: 0; - opacity: 0; -} -.ant-menu-inline-collapsed .anticon { - display: inline-block; -} -.ant-menu-inline-collapsed-tooltip { - pointer-events: none; -} -.ant-menu-inline-collapsed-tooltip .anticon { - display: none; -} -.ant-menu-inline-collapsed-tooltip a { - color: rgba(255, 255, 255, 0.85); -} -.ant-menu-inline-collapsed .ant-menu-item-group-title { - padding-right: 4px; - padding-left: 4px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-menu-item-group-list { - margin: 0; - padding: 0; -} -.ant-menu-item-group-list .ant-menu-item, -.ant-menu-item-group-list .ant-menu-submenu-title { - padding: 0 16px 0 28px; -} -.ant-menu-root.ant-menu-vertical, -.ant-menu-root.ant-menu-vertical-left, -.ant-menu-root.ant-menu-vertical-right, -.ant-menu-root.ant-menu-inline { - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-menu-root.ant-menu-inline-collapsed .ant-menu-item > .ant-menu-inline-collapsed-noicon, -.ant-menu-root.ant-menu-inline-collapsed .ant-menu-submenu .ant-menu-submenu-title > .ant-menu-inline-collapsed-noicon { - font-size: 16px; - text-align: center; -} -.ant-menu-sub.ant-menu-inline { - padding: 0; - border: 0; - border-radius: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-menu-sub.ant-menu-inline > .ant-menu-item, -.ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title { - height: 40px; - line-height: 40px; - list-style-position: inside; - list-style-type: disc; -} -.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title { - padding-left: 32px; -} -.ant-menu-item-disabled, -.ant-menu-submenu-disabled { - color: rgba(0, 0, 0, 0.25) !important; - background: none; - border-color: transparent !important; - cursor: not-allowed; -} -.ant-menu-item-disabled a, -.ant-menu-submenu-disabled a { - color: rgba(0, 0, 0, 0.25) !important; - pointer-events: none; -} -.ant-menu-item-disabled > .ant-menu-submenu-title, -.ant-menu-submenu-disabled > .ant-menu-submenu-title { - color: rgba(0, 0, 0, 0.25) !important; - cursor: not-allowed; -} -.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after { - background: rgba(0, 0, 0, 0.25) !important; -} -.ant-layout-header .ant-menu { - line-height: inherit; -} -.ant-menu.ant-menu-dark, -.ant-menu-dark .ant-menu-sub, -.ant-menu.ant-menu-dark .ant-menu-sub { - color: rgba(255, 255, 255, 0.65); - background: #001529; -} -.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow { - opacity: 0.45; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow::before { - background: #fff; -} -.ant-menu-dark.ant-menu-submenu-popup { - background: transparent; -} -.ant-menu-dark .ant-menu-inline.ant-menu-sub { - background: #000c17; -} -.ant-menu-dark.ant-menu-horizontal { - border-bottom: 0; -} -.ant-menu-dark.ant-menu-horizontal > .ant-menu-item, -.ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu { - top: 0; - margin-top: 0; - border-color: #001529; - border-bottom: 0; -} -.ant-menu-dark.ant-menu-horizontal > .ant-menu-item > a::before { - bottom: 0; -} -.ant-menu-dark .ant-menu-item, -.ant-menu-dark .ant-menu-item-group-title, -.ant-menu-dark .ant-menu-item > a, -.ant-menu-dark .ant-menu-item > span > a { - color: rgba(255, 255, 255, 0.65); -} -.ant-menu-dark.ant-menu-inline, -.ant-menu-dark.ant-menu-vertical, -.ant-menu-dark.ant-menu-vertical-left, -.ant-menu-dark.ant-menu-vertical-right { - border-right: 0; -} -.ant-menu-dark.ant-menu-inline .ant-menu-item, -.ant-menu-dark.ant-menu-vertical .ant-menu-item, -.ant-menu-dark.ant-menu-vertical-left .ant-menu-item, -.ant-menu-dark.ant-menu-vertical-right .ant-menu-item { - left: 0; - margin-left: 0; - border-right: 0; -} -.ant-menu-dark.ant-menu-inline .ant-menu-item::after, -.ant-menu-dark.ant-menu-vertical .ant-menu-item::after, -.ant-menu-dark.ant-menu-vertical-left .ant-menu-item::after, -.ant-menu-dark.ant-menu-vertical-right .ant-menu-item::after { - border-right: 0; -} -.ant-menu-dark.ant-menu-inline .ant-menu-item, -.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title { - width: 100%; -} -.ant-menu-dark .ant-menu-item:hover, -.ant-menu-dark .ant-menu-item-active, -.ant-menu-dark .ant-menu-submenu-active, -.ant-menu-dark .ant-menu-submenu-open, -.ant-menu-dark .ant-menu-submenu-selected, -.ant-menu-dark .ant-menu-submenu-title:hover { - color: #fff; - background-color: transparent; -} -.ant-menu-dark .ant-menu-item:hover > a, -.ant-menu-dark .ant-menu-item-active > a, -.ant-menu-dark .ant-menu-submenu-active > a, -.ant-menu-dark .ant-menu-submenu-open > a, -.ant-menu-dark .ant-menu-submenu-selected > a, -.ant-menu-dark .ant-menu-submenu-title:hover > a, -.ant-menu-dark .ant-menu-item:hover > span > a, -.ant-menu-dark .ant-menu-item-active > span > a, -.ant-menu-dark .ant-menu-submenu-active > span > a, -.ant-menu-dark .ant-menu-submenu-open > span > a, -.ant-menu-dark .ant-menu-submenu-selected > span > a, -.ant-menu-dark .ant-menu-submenu-title:hover > span > a { - color: #fff; -} -.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, -.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow { - opacity: 1; -} -.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow::before { - background: #fff; -} -.ant-menu-dark .ant-menu-item:hover { - background-color: transparent; -} -.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected { - background-color: #1890ff; -} -.ant-menu-dark .ant-menu-item-selected { - color: #fff; - border-right: 0; -} -.ant-menu-dark .ant-menu-item-selected::after { - border-right: 0; -} -.ant-menu-dark .ant-menu-item-selected > a, -.ant-menu-dark .ant-menu-item-selected > span > a, -.ant-menu-dark .ant-menu-item-selected > a:hover, -.ant-menu-dark .ant-menu-item-selected > span > a:hover { - color: #fff; -} -.ant-menu-dark .ant-menu-item-selected .anticon { - color: #fff; -} -.ant-menu-dark .ant-menu-item-selected .anticon + span { - color: #fff; -} -.ant-menu.ant-menu-dark .ant-menu-item-selected, -.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected { - background-color: #1890ff; -} -.ant-menu-dark .ant-menu-item-disabled, -.ant-menu-dark .ant-menu-submenu-disabled, -.ant-menu-dark .ant-menu-item-disabled > a, -.ant-menu-dark .ant-menu-submenu-disabled > a, -.ant-menu-dark .ant-menu-item-disabled > span > a, -.ant-menu-dark .ant-menu-submenu-disabled > span > a { - color: rgba(255, 255, 255, 0.35) !important; - opacity: 0.8; -} -.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, -.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title { - color: rgba(255, 255, 255, 0.35) !important; -} -.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::before, -.ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after, -.ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow::after { - background: rgba(255, 255, 255, 0.35) !important; -} -.ant-menu-rtl { - direction: rtl; - text-align: right; -} -.ant-menu-rtl .ant-menu-item-group-title { - text-align: right; -} -.ant-menu-rtl.ant-menu-inline, -.ant-menu-rtl.ant-menu-vertical { - border-right: none; - border-left: 1px solid #f0f0f0; -} -.ant-menu-rtl.ant-menu-dark.ant-menu-inline, -.ant-menu-rtl.ant-menu-dark.ant-menu-vertical { - border-left: none; -} -.ant-menu-rtl.ant-menu-vertical.ant-menu-sub, -.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub, -.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub { - -webkit-transform-origin: top right; - transform-origin: top right; -} -.ant-menu-rtl.ant-menu-vertical.ant-menu-sub > .ant-menu-item, -.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub > .ant-menu-item, -.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub > .ant-menu-item, -.ant-menu-rtl.ant-menu-vertical.ant-menu-sub > .ant-menu-submenu, -.ant-menu-rtl.ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu, -.ant-menu-rtl.ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu { - -webkit-transform-origin: top right; - transform-origin: top right; -} -.ant-menu-rtl .ant-menu-item .anticon, -.ant-menu-rtl .ant-menu-submenu-title .anticon { - margin-right: auto; - margin-left: 10px; -} -.ant-menu-rtl .ant-menu-item.ant-menu-item-only-child > .anticon, -.ant-menu-rtl .ant-menu-submenu-title.ant-menu-item-only-child > .anticon { - margin-left: 0; -} -.ant-menu-rtl .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-rtl .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-rtl .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow, -.ant-menu-rtl .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow { - right: auto; - left: 16px; -} -.ant-menu-rtl .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-rtl .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::before, -.ant-menu-rtl .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::before { - -webkit-transform: rotate(-45deg) translateY(-2px); - transform: rotate(-45deg) translateY(-2px); -} -.ant-menu-rtl .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-rtl .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow::after, -.ant-menu-rtl .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow::after { - -webkit-transform: rotate(45deg) translateY(2px); - transform: rotate(45deg) translateY(2px); -} -.ant-menu-rtl.ant-menu-vertical .ant-menu-item::after, -.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item::after, -.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item::after, -.ant-menu-rtl.ant-menu-inline .ant-menu-item::after { - right: auto; - left: 0; -} -.ant-menu-rtl.ant-menu-vertical .ant-menu-item, -.ant-menu-rtl.ant-menu-vertical-left .ant-menu-item, -.ant-menu-rtl.ant-menu-vertical-right .ant-menu-item, -.ant-menu-rtl.ant-menu-inline .ant-menu-item, -.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title, -.ant-menu-rtl.ant-menu-vertical-left .ant-menu-submenu-title, -.ant-menu-rtl.ant-menu-vertical-right .ant-menu-submenu-title, -.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title { - text-align: right; -} -.ant-menu-rtl.ant-menu-inline .ant-menu-submenu-title { - padding-right: 0; - padding-left: 34px; -} -.ant-menu-rtl.ant-menu-vertical .ant-menu-submenu-title { - padding-right: 16px; - padding-left: 34px; -} -.ant-menu-rtl.ant-menu-inline-collapsed.ant-menu-vertical .ant-menu-submenu-title { - padding: 0 32px; -} -.ant-menu-rtl .ant-menu-item-group-list .ant-menu-item, -.ant-menu-rtl .ant-menu-item-group-list .ant-menu-submenu-title { - padding: 0 28px 0 16px; -} -.ant-menu-sub.ant-menu-inline { - border: 0; -} -.ant-menu-rtl.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title { - padding-right: 32px; - padding-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-tooltip { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - z-index: 1070; - display: block; - max-width: 250px; - visibility: visible; -} -.ant-tooltip-hidden { - display: none; -} -.ant-tooltip-placement-top, -.ant-tooltip-placement-topLeft, -.ant-tooltip-placement-topRight { - padding-bottom: 8px; -} -.ant-tooltip-placement-right, -.ant-tooltip-placement-rightTop, -.ant-tooltip-placement-rightBottom { - padding-left: 8px; -} -.ant-tooltip-placement-bottom, -.ant-tooltip-placement-bottomLeft, -.ant-tooltip-placement-bottomRight { - padding-top: 8px; -} -.ant-tooltip-placement-left, -.ant-tooltip-placement-leftTop, -.ant-tooltip-placement-leftBottom { - padding-right: 8px; -} -.ant-tooltip-inner { - min-width: 30px; - min-height: 32px; - padding: 6px 8px; - color: #fff; - text-align: left; - text-decoration: none; - word-wrap: break-word; - background-color: rgba(0, 0, 0, 0.75); - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-tooltip-arrow { - position: absolute; - display: block; - width: 13.07106781px; - height: 13.07106781px; - overflow: hidden; - background: transparent; - pointer-events: none; -} -.ant-tooltip-arrow-content { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; - width: 5px; - height: 5px; - margin: auto; - background-color: rgba(0, 0, 0, 0.75); - content: ''; - pointer-events: auto; -} -.ant-tooltip-placement-top .ant-tooltip-arrow, -.ant-tooltip-placement-topLeft .ant-tooltip-arrow, -.ant-tooltip-placement-topRight .ant-tooltip-arrow { - bottom: -5.07106781px; -} -.ant-tooltip-placement-top .ant-tooltip-arrow-content, -.ant-tooltip-placement-topLeft .ant-tooltip-arrow-content, -.ant-tooltip-placement-topRight .ant-tooltip-arrow-content { - -webkit-box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); - box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); - -webkit-transform: translateY(-6.53553391px) rotate(45deg); - transform: translateY(-6.53553391px) rotate(45deg); -} -.ant-tooltip-placement-top .ant-tooltip-arrow { - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); -} -.ant-tooltip-placement-topLeft .ant-tooltip-arrow { - left: 13px; -} -.ant-tooltip-placement-topRight .ant-tooltip-arrow { - right: 13px; -} -.ant-tooltip-placement-right .ant-tooltip-arrow, -.ant-tooltip-placement-rightTop .ant-tooltip-arrow, -.ant-tooltip-placement-rightBottom .ant-tooltip-arrow { - left: -5.07106781px; -} -.ant-tooltip-placement-right .ant-tooltip-arrow-content, -.ant-tooltip-placement-rightTop .ant-tooltip-arrow-content, -.ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content { - -webkit-box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); - box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); - -webkit-transform: translateX(6.53553391px) rotate(45deg); - transform: translateX(6.53553391px) rotate(45deg); -} -.ant-tooltip-placement-right .ant-tooltip-arrow { - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.ant-tooltip-placement-rightTop .ant-tooltip-arrow { - top: 5px; -} -.ant-tooltip-placement-rightBottom .ant-tooltip-arrow { - bottom: 5px; -} -.ant-tooltip-placement-left .ant-tooltip-arrow, -.ant-tooltip-placement-leftTop .ant-tooltip-arrow, -.ant-tooltip-placement-leftBottom .ant-tooltip-arrow { - right: -5.07106781px; -} -.ant-tooltip-placement-left .ant-tooltip-arrow-content, -.ant-tooltip-placement-leftTop .ant-tooltip-arrow-content, -.ant-tooltip-placement-leftBottom .ant-tooltip-arrow-content { - -webkit-box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); - box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); - -webkit-transform: translateX(-6.53553391px) rotate(45deg); - transform: translateX(-6.53553391px) rotate(45deg); -} -.ant-tooltip-placement-left .ant-tooltip-arrow { - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.ant-tooltip-placement-leftTop .ant-tooltip-arrow { - top: 5px; -} -.ant-tooltip-placement-leftBottom .ant-tooltip-arrow { - bottom: 5px; -} -.ant-tooltip-placement-bottom .ant-tooltip-arrow, -.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow, -.ant-tooltip-placement-bottomRight .ant-tooltip-arrow { - top: -5.07106781px; -} -.ant-tooltip-placement-bottom .ant-tooltip-arrow-content, -.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow-content, -.ant-tooltip-placement-bottomRight .ant-tooltip-arrow-content { - -webkit-box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07); - box-shadow: -3px -3px 7px rgba(0, 0, 0, 0.07); - -webkit-transform: translateY(6.53553391px) rotate(45deg); - transform: translateY(6.53553391px) rotate(45deg); -} -.ant-tooltip-placement-bottom .ant-tooltip-arrow { - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); -} -.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow { - left: 13px; -} -.ant-tooltip-placement-bottomRight .ant-tooltip-arrow { - right: 13px; -} -.ant-tooltip-pink .ant-tooltip-inner { - background-color: #eb2f96; -} -.ant-tooltip-pink .ant-tooltip-arrow-content { - background-color: #eb2f96; -} -.ant-tooltip-magenta .ant-tooltip-inner { - background-color: #eb2f96; -} -.ant-tooltip-magenta .ant-tooltip-arrow-content { - background-color: #eb2f96; -} -.ant-tooltip-red .ant-tooltip-inner { - background-color: #f5222d; -} -.ant-tooltip-red .ant-tooltip-arrow-content { - background-color: #f5222d; -} -.ant-tooltip-volcano .ant-tooltip-inner { - background-color: #fa541c; -} -.ant-tooltip-volcano .ant-tooltip-arrow-content { - background-color: #fa541c; -} -.ant-tooltip-orange .ant-tooltip-inner { - background-color: #fa8c16; -} -.ant-tooltip-orange .ant-tooltip-arrow-content { - background-color: #fa8c16; -} -.ant-tooltip-yellow .ant-tooltip-inner { - background-color: #fadb14; -} -.ant-tooltip-yellow .ant-tooltip-arrow-content { - background-color: #fadb14; -} -.ant-tooltip-gold .ant-tooltip-inner { - background-color: #faad14; -} -.ant-tooltip-gold .ant-tooltip-arrow-content { - background-color: #faad14; -} -.ant-tooltip-cyan .ant-tooltip-inner { - background-color: #13c2c2; -} -.ant-tooltip-cyan .ant-tooltip-arrow-content { - background-color: #13c2c2; -} -.ant-tooltip-lime .ant-tooltip-inner { - background-color: #a0d911; -} -.ant-tooltip-lime .ant-tooltip-arrow-content { - background-color: #a0d911; -} -.ant-tooltip-green .ant-tooltip-inner { - background-color: #52c41a; -} -.ant-tooltip-green .ant-tooltip-arrow-content { - background-color: #52c41a; -} -.ant-tooltip-blue .ant-tooltip-inner { - background-color: #1890ff; -} -.ant-tooltip-blue .ant-tooltip-arrow-content { - background-color: #1890ff; -} -.ant-tooltip-geekblue .ant-tooltip-inner { - background-color: #2f54eb; -} -.ant-tooltip-geekblue .ant-tooltip-arrow-content { - background-color: #2f54eb; -} -.ant-tooltip-purple .ant-tooltip-inner { - background-color: #722ed1; -} -.ant-tooltip-purple .ant-tooltip-arrow-content { - background-color: #722ed1; -} -.ant-tooltip-rtl { - direction: rtl; -} -.ant-tooltip-rtl .ant-tooltip-inner { - text-align: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-dropdown-menu-item.ant-dropdown-menu-item-danger { - color: #ff4d4f; -} -.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover { - color: #fff; - background-color: #ff4d4f; -} -.ant-dropdown { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - top: -9999px; - left: -9999px; - z-index: 1050; - display: block; -} -.ant-dropdown::before { - position: absolute; - top: -7px; - right: 0; - bottom: -7px; - left: -7px; - z-index: -9999; - opacity: 0.0001; - content: ' '; -} -.ant-dropdown-wrap { - position: relative; -} -.ant-dropdown-wrap .ant-btn > .anticon-down { - display: inline-block; - font-size: 10px; -} -.ant-dropdown-wrap .anticon-down::before { - -webkit-transition: -webkit-transform 0.2s; - transition: -webkit-transform 0.2s; - transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s; -} -.ant-dropdown-wrap-open .anticon-down::before { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} -.ant-dropdown-hidden, -.ant-dropdown-menu-hidden { - display: none; -} -.ant-dropdown-show-arrow.ant-dropdown-placement-topCenter, -.ant-dropdown-show-arrow.ant-dropdown-placement-topLeft, -.ant-dropdown-show-arrow.ant-dropdown-placement-topRight { - padding-bottom: 10px; -} -.ant-dropdown-show-arrow.ant-dropdown-placement-bottomCenter, -.ant-dropdown-show-arrow.ant-dropdown-placement-bottomLeft, -.ant-dropdown-show-arrow.ant-dropdown-placement-bottomRight { - padding-top: 10px; -} -.ant-dropdown-arrow { - position: absolute; - z-index: 1; - display: block; - width: 8.48528137px; - height: 8.48528137px; - background: transparent; - border-style: solid; - border-width: 4.24264069px; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); -} -.ant-dropdown-placement-topCenter > .ant-dropdown-arrow, -.ant-dropdown-placement-topLeft > .ant-dropdown-arrow, -.ant-dropdown-placement-topRight > .ant-dropdown-arrow { - bottom: 6.2px; - border-top-color: transparent; - border-right-color: #fff; - border-bottom-color: #fff; - border-left-color: transparent; - -webkit-box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); - box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); -} -.ant-dropdown-placement-topCenter > .ant-dropdown-arrow { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg); -} -.ant-dropdown-placement-topLeft > .ant-dropdown-arrow { - left: 16px; -} -.ant-dropdown-placement-topRight > .ant-dropdown-arrow { - right: 16px; -} -.ant-dropdown-placement-bottomCenter > .ant-dropdown-arrow, -.ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow, -.ant-dropdown-placement-bottomRight > .ant-dropdown-arrow { - top: 6px; - border-top-color: #fff; - border-right-color: transparent; - border-bottom-color: transparent; - border-left-color: #fff; - -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); - box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); -} -.ant-dropdown-placement-bottomCenter > .ant-dropdown-arrow { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg); -} -.ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow { - left: 16px; -} -.ant-dropdown-placement-bottomRight > .ant-dropdown-arrow { - right: 16px; -} -.ant-dropdown-menu { - position: relative; - margin: 0; - padding: 4px 0; - text-align: left; - list-style-type: none; - background-color: #fff; - background-clip: padding-box; - border-radius: 2px; - outline: none; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-dropdown-menu-item-group-title { - padding: 5px 12px; - color: rgba(0, 0, 0, 0.45); - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-dropdown-menu-submenu-popup { - position: absolute; - z-index: 1050; - background: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-dropdown-menu-submenu-popup > .ant-dropdown-menu { - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -.ant-dropdown-menu-submenu-popup ul, -.ant-dropdown-menu-submenu-popup li { - list-style: none; -} -.ant-dropdown-menu-submenu-popup ul { - margin-right: 0.3em; - margin-left: 0.3em; -} -.ant-dropdown-menu-item, -.ant-dropdown-menu-submenu-title { - clear: both; - margin: 0; - padding: 5px 12px; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; - line-height: 22px; - white-space: nowrap; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-dropdown-menu-item > .anticon:first-child, -.ant-dropdown-menu-submenu-title > .anticon:first-child, -.ant-dropdown-menu-item > span > .anticon:first-child, -.ant-dropdown-menu-submenu-title > span > .anticon:first-child { - min-width: 12px; - margin-right: 8px; - font-size: 12px; -} -.ant-dropdown-menu-item > a, -.ant-dropdown-menu-submenu-title > a { - display: block; - margin: -5px -12px; - padding: 5px 12px; - color: rgba(0, 0, 0, 0.65); - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-dropdown-menu-item > a:hover, -.ant-dropdown-menu-submenu-title > a:hover { - color: rgba(0, 0, 0, 0.65); -} -.ant-dropdown-menu-item > .anticon + span > a, -.ant-dropdown-menu-submenu-title > .anticon + span > a { - color: rgba(0, 0, 0, 0.65); - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-dropdown-menu-item > .anticon + span > a:hover, -.ant-dropdown-menu-submenu-title > .anticon + span > a:hover { - color: rgba(0, 0, 0, 0.65); -} -.ant-dropdown-menu-item-selected, -.ant-dropdown-menu-submenu-title-selected, -.ant-dropdown-menu-item-selected > a, -.ant-dropdown-menu-submenu-title-selected > a { - color: #1890ff; - background-color: #e6f7ff; -} -.ant-dropdown-menu-item:hover, -.ant-dropdown-menu-submenu-title:hover { - background-color: #f5f5f5; -} -.ant-dropdown-menu-item-disabled, -.ant-dropdown-menu-submenu-title-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-dropdown-menu-item-disabled:hover, -.ant-dropdown-menu-submenu-title-disabled:hover { - color: rgba(0, 0, 0, 0.25); - background-color: #fff; - cursor: not-allowed; -} -.ant-dropdown-menu-item-divider, -.ant-dropdown-menu-submenu-title-divider { - height: 1px; - margin: 4px 0; - overflow: hidden; - line-height: 0; - background-color: #f0f0f0; -} -.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow, -.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow { - position: absolute; - right: 8px; -} -.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, -.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { - margin-right: 0 !important; - color: rgba(0, 0, 0, 0.45); - font-style: normal; - display: inline-block; - font-size: 10px; -} -.ant-dropdown-menu-item-group-list { - margin: 0 8px; - padding: 0; - list-style: none; -} -.ant-dropdown-menu-submenu-title { - padding-right: 24px; -} -.ant-dropdown-menu-submenu-vertical { - position: relative; -} -.ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu { - position: absolute; - top: 0; - left: 100%; - min-width: 100%; - margin-left: 4px; - -webkit-transform-origin: 0 0; - transform-origin: 0 0; -} -.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, -.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { - color: rgba(0, 0, 0, 0.25); - background-color: #fff; - cursor: not-allowed; -} -.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title { - color: #1890ff; -} -.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft, -.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft, -.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter, -.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter, -.ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight, -.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight { - -webkit-animation-name: antSlideUpIn; - animation-name: antSlideUpIn; -} -.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft, -.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft, -.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter, -.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter, -.ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight, -.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight { - -webkit-animation-name: antSlideDownIn; - animation-name: antSlideDownIn; -} -.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft, -.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter, -.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight { - -webkit-animation-name: antSlideUpOut; - animation-name: antSlideUpOut; -} -.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft, -.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter, -.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight { - -webkit-animation-name: antSlideDownOut; - animation-name: antSlideDownOut; -} -.ant-dropdown-trigger > .anticon.anticon-down, -.ant-dropdown-link > .anticon.anticon-down, -.ant-dropdown-button > .anticon.anticon-down { - vertical-align: baseline; - display: inline-block; - font-size: 10px; -} -.ant-dropdown-button { - white-space: nowrap; -} -.ant-dropdown-button.ant-btn-group > .ant-btn:last-child:not(:first-child):not(.ant-btn-icon-only) { - padding-right: 8px; - padding-left: 8px; -} -.ant-dropdown-menu-dark, -.ant-dropdown-menu-dark .ant-dropdown-menu { - background: #001529; -} -.ant-dropdown-menu-dark .ant-dropdown-menu-item, -.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, -.ant-dropdown-menu-dark .ant-dropdown-menu-item > a, -.ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a { - color: rgba(255, 255, 255, 0.65); -} -.ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow::after, -.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow::after, -.ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow::after, -.ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a .ant-dropdown-menu-submenu-arrow::after { - color: rgba(255, 255, 255, 0.65); -} -.ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, -.ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover, -.ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover, -.ant-dropdown-menu-dark .ant-dropdown-menu-item > .anticon + span > a:hover { - color: #fff; - background: transparent; -} -.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, -.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, -.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a { - color: #fff; - background: #1890ff; -} -.ant-dropdown-rtl { - direction: rtl; -} -.ant-dropdown-rtl.ant-dropdown::before { - right: -7px; - left: 0; -} -.ant-dropdown-menu-rtl { - direction: rtl; - text-align: right; -} -.ant-dropdown-rtl .ant-dropdown-menu-item-group-title { - direction: rtl; - text-align: right; -} -.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup ul, -.ant-dropdown-rtl .ant-dropdown-menu-submenu-popup li { - text-align: right; -} -.ant-dropdown-rtl .ant-dropdown-menu-item, -.ant-dropdown-rtl .ant-dropdown-menu-submenu-title { - text-align: right; -} -.ant-dropdown-rtl .ant-dropdown-menu-item > .anticon:first-child, -.ant-dropdown-rtl .ant-dropdown-menu-submenu-title > .anticon:first-child, -.ant-dropdown-rtl .ant-dropdown-menu-item > span > .anticon:first-child, -.ant-dropdown-rtl .ant-dropdown-menu-submenu-title > span > .anticon:first-child { - margin-right: 0; - margin-left: 8px; -} -.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow, -.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow { - right: auto; - left: 8px; -} -.ant-dropdown-rtl .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, -.ant-dropdown-rtl .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon { - margin-left: 0 !important; - -webkit-transform: scaleX(-1); - transform: scaleX(-1); -} -.ant-dropdown-rtl .ant-dropdown-menu-submenu-title { - padding-right: 12px; - padding-left: 24px; -} -.ant-dropdown-rtl .ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu { - right: 100%; - left: 0; - margin-right: 4px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-btn { - line-height: 1.5715; - position: relative; - display: inline-block; - font-weight: 400; - white-space: nowrap; - text-align: center; - background-image: none; - border: 1px solid transparent; - -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); - box-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); - cursor: pointer; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - -ms-touch-action: manipulation; - touch-action: manipulation; - height: 32px; - padding: 4px 15px; - font-size: 14px; - border-radius: 2px; - color: rgba(0, 0, 0, 0.65); - background: #fff; - border-color: #d9d9d9; -} -.ant-btn > .anticon { - line-height: 1; -} -.ant-btn, -.ant-btn:active, -.ant-btn:focus { - outline: 0; -} -.ant-btn:not([disabled]):hover { - text-decoration: none; -} -.ant-btn:not([disabled]):active { - outline: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn[disabled] { - cursor: not-allowed; -} -.ant-btn[disabled] > * { - pointer-events: none; -} -.ant-btn-lg { - height: 40px; - padding: 6.4px 15px; - font-size: 16px; - border-radius: 2px; -} -.ant-btn-sm { - height: 24px; - padding: 0px 7px; - font-size: 14px; - border-radius: 2px; -} -.ant-btn > a:only-child { - color: currentColor; -} -.ant-btn > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn:hover, -.ant-btn:focus { - color: #40a9ff; - background: #fff; - border-color: #40a9ff; -} -.ant-btn:hover > a:only-child, -.ant-btn:focus > a:only-child { - color: currentColor; -} -.ant-btn:hover > a:only-child::after, -.ant-btn:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn:active { - color: #096dd9; - background: #fff; - border-color: #096dd9; -} -.ant-btn:active > a:only-child { - color: currentColor; -} -.ant-btn:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn[disabled], -.ant-btn[disabled]:hover, -.ant-btn[disabled]:focus, -.ant-btn[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn[disabled] > a:only-child, -.ant-btn[disabled]:hover > a:only-child, -.ant-btn[disabled]:focus > a:only-child, -.ant-btn[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn[disabled] > a:only-child::after, -.ant-btn[disabled]:hover > a:only-child::after, -.ant-btn[disabled]:focus > a:only-child::after, -.ant-btn[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn:hover, -.ant-btn:focus, -.ant-btn:active { - text-decoration: none; - background: #fff; -} -.ant-btn > span { - display: inline-block; -} -.ant-btn-primary { - color: #fff; - background: #1890ff; - border-color: #1890ff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); - -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); - box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); -} -.ant-btn-primary > a:only-child { - color: currentColor; -} -.ant-btn-primary > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-primary:hover, -.ant-btn-primary:focus { - color: #fff; - background: #40a9ff; - border-color: #40a9ff; -} -.ant-btn-primary:hover > a:only-child, -.ant-btn-primary:focus > a:only-child { - color: currentColor; -} -.ant-btn-primary:hover > a:only-child::after, -.ant-btn-primary:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-primary:active { - color: #fff; - background: #096dd9; - border-color: #096dd9; -} -.ant-btn-primary:active > a:only-child { - color: currentColor; -} -.ant-btn-primary:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-primary[disabled], -.ant-btn-primary[disabled]:hover, -.ant-btn-primary[disabled]:focus, -.ant-btn-primary[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-primary[disabled] > a:only-child, -.ant-btn-primary[disabled]:hover > a:only-child, -.ant-btn-primary[disabled]:focus > a:only-child, -.ant-btn-primary[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-primary[disabled] > a:only-child::after, -.ant-btn-primary[disabled]:hover > a:only-child::after, -.ant-btn-primary[disabled]:focus > a:only-child::after, -.ant-btn-primary[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) { - border-right-color: #40a9ff; - border-left-color: #40a9ff; -} -.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled { - border-color: #d9d9d9; -} -.ant-btn-group .ant-btn-primary:first-child:not(:last-child) { - border-right-color: #40a9ff; -} -.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] { - border-right-color: #d9d9d9; -} -.ant-btn-group .ant-btn-primary:last-child:not(:first-child), -.ant-btn-group .ant-btn-primary + .ant-btn-primary { - border-left-color: #40a9ff; -} -.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], -.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] { - border-left-color: #d9d9d9; -} -.ant-btn-ghost { - color: rgba(0, 0, 0, 0.65); - background: transparent; - border-color: #d9d9d9; -} -.ant-btn-ghost > a:only-child { - color: currentColor; -} -.ant-btn-ghost > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-ghost:hover, -.ant-btn-ghost:focus { - color: #40a9ff; - background: transparent; - border-color: #40a9ff; -} -.ant-btn-ghost:hover > a:only-child, -.ant-btn-ghost:focus > a:only-child { - color: currentColor; -} -.ant-btn-ghost:hover > a:only-child::after, -.ant-btn-ghost:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-ghost:active { - color: #096dd9; - background: transparent; - border-color: #096dd9; -} -.ant-btn-ghost:active > a:only-child { - color: currentColor; -} -.ant-btn-ghost:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-ghost[disabled], -.ant-btn-ghost[disabled]:hover, -.ant-btn-ghost[disabled]:focus, -.ant-btn-ghost[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-ghost[disabled] > a:only-child, -.ant-btn-ghost[disabled]:hover > a:only-child, -.ant-btn-ghost[disabled]:focus > a:only-child, -.ant-btn-ghost[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-ghost[disabled] > a:only-child::after, -.ant-btn-ghost[disabled]:hover > a:only-child::after, -.ant-btn-ghost[disabled]:focus > a:only-child::after, -.ant-btn-ghost[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dashed { - color: rgba(0, 0, 0, 0.65); - background: #fff; - border-color: #d9d9d9; - border-style: dashed; -} -.ant-btn-dashed > a:only-child { - color: currentColor; -} -.ant-btn-dashed > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dashed:hover, -.ant-btn-dashed:focus { - color: #40a9ff; - background: #fff; - border-color: #40a9ff; -} -.ant-btn-dashed:hover > a:only-child, -.ant-btn-dashed:focus > a:only-child { - color: currentColor; -} -.ant-btn-dashed:hover > a:only-child::after, -.ant-btn-dashed:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dashed:active { - color: #096dd9; - background: #fff; - border-color: #096dd9; -} -.ant-btn-dashed:active > a:only-child { - color: currentColor; -} -.ant-btn-dashed:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dashed[disabled], -.ant-btn-dashed[disabled]:hover, -.ant-btn-dashed[disabled]:focus, -.ant-btn-dashed[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dashed[disabled] > a:only-child, -.ant-btn-dashed[disabled]:hover > a:only-child, -.ant-btn-dashed[disabled]:focus > a:only-child, -.ant-btn-dashed[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dashed[disabled] > a:only-child::after, -.ant-btn-dashed[disabled]:hover > a:only-child::after, -.ant-btn-dashed[disabled]:focus > a:only-child::after, -.ant-btn-dashed[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-danger { - color: #fff; - background: #ff4d4f; - border-color: #ff4d4f; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); - -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); - box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); -} -.ant-btn-danger > a:only-child { - color: currentColor; -} -.ant-btn-danger > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-danger:hover, -.ant-btn-danger:focus { - color: #fff; - background: #ff7875; - border-color: #ff7875; -} -.ant-btn-danger:hover > a:only-child, -.ant-btn-danger:focus > a:only-child { - color: currentColor; -} -.ant-btn-danger:hover > a:only-child::after, -.ant-btn-danger:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-danger:active { - color: #fff; - background: #d9363e; - border-color: #d9363e; -} -.ant-btn-danger:active > a:only-child { - color: currentColor; -} -.ant-btn-danger:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-danger[disabled], -.ant-btn-danger[disabled]:hover, -.ant-btn-danger[disabled]:focus, -.ant-btn-danger[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-danger[disabled] > a:only-child, -.ant-btn-danger[disabled]:hover > a:only-child, -.ant-btn-danger[disabled]:focus > a:only-child, -.ant-btn-danger[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-danger[disabled] > a:only-child::after, -.ant-btn-danger[disabled]:hover > a:only-child::after, -.ant-btn-danger[disabled]:focus > a:only-child::after, -.ant-btn-danger[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-link { - color: #1890ff; - background: transparent; - border-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-link > a:only-child { - color: currentColor; -} -.ant-btn-link > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-link:hover, -.ant-btn-link:focus { - color: #40a9ff; - background: transparent; - border-color: #40a9ff; -} -.ant-btn-link:hover > a:only-child, -.ant-btn-link:focus > a:only-child { - color: currentColor; -} -.ant-btn-link:hover > a:only-child::after, -.ant-btn-link:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-link:active { - color: #096dd9; - background: transparent; - border-color: #096dd9; -} -.ant-btn-link:active > a:only-child { - color: currentColor; -} -.ant-btn-link:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-link[disabled], -.ant-btn-link[disabled]:hover, -.ant-btn-link[disabled]:focus, -.ant-btn-link[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-link[disabled] > a:only-child, -.ant-btn-link[disabled]:hover > a:only-child, -.ant-btn-link[disabled]:focus > a:only-child, -.ant-btn-link[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-link[disabled] > a:only-child::after, -.ant-btn-link[disabled]:hover > a:only-child::after, -.ant-btn-link[disabled]:focus > a:only-child::after, -.ant-btn-link[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-link:hover { - background: transparent; -} -.ant-btn-link:hover, -.ant-btn-link:focus, -.ant-btn-link:active { - border-color: transparent; -} -.ant-btn-link[disabled], -.ant-btn-link[disabled]:hover, -.ant-btn-link[disabled]:focus, -.ant-btn-link[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: transparent; - border-color: transparent; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-link[disabled] > a:only-child, -.ant-btn-link[disabled]:hover > a:only-child, -.ant-btn-link[disabled]:focus > a:only-child, -.ant-btn-link[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-link[disabled] > a:only-child::after, -.ant-btn-link[disabled]:hover > a:only-child::after, -.ant-btn-link[disabled]:focus > a:only-child::after, -.ant-btn-link[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-text { - color: rgba(0, 0, 0, 0.65); - background: transparent; - border-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-text > a:only-child { - color: currentColor; -} -.ant-btn-text > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-text:hover, -.ant-btn-text:focus { - color: #40a9ff; - background: transparent; - border-color: #40a9ff; -} -.ant-btn-text:hover > a:only-child, -.ant-btn-text:focus > a:only-child { - color: currentColor; -} -.ant-btn-text:hover > a:only-child::after, -.ant-btn-text:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-text:active { - color: #096dd9; - background: transparent; - border-color: #096dd9; -} -.ant-btn-text:active > a:only-child { - color: currentColor; -} -.ant-btn-text:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-text[disabled], -.ant-btn-text[disabled]:hover, -.ant-btn-text[disabled]:focus, -.ant-btn-text[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-text[disabled] > a:only-child, -.ant-btn-text[disabled]:hover > a:only-child, -.ant-btn-text[disabled]:focus > a:only-child, -.ant-btn-text[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-text[disabled] > a:only-child::after, -.ant-btn-text[disabled]:hover > a:only-child::after, -.ant-btn-text[disabled]:focus > a:only-child::after, -.ant-btn-text[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-text:hover, -.ant-btn-text:focus { - color: rgba(0, 0, 0, 0.65); - background: rgba(0, 0, 0, 0.018); - border-color: transparent; -} -.ant-btn-text:active { - color: rgba(0, 0, 0, 0.65); - background: rgba(0, 0, 0, 0.028); - border-color: transparent; -} -.ant-btn-text[disabled], -.ant-btn-text[disabled]:hover, -.ant-btn-text[disabled]:focus, -.ant-btn-text[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: transparent; - border-color: transparent; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-text[disabled] > a:only-child, -.ant-btn-text[disabled]:hover > a:only-child, -.ant-btn-text[disabled]:focus > a:only-child, -.ant-btn-text[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-text[disabled] > a:only-child::after, -.ant-btn-text[disabled]:hover > a:only-child::after, -.ant-btn-text[disabled]:focus > a:only-child::after, -.ant-btn-text[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous { - color: #ff4d4f; - background: #fff; - border-color: #ff4d4f; -} -.ant-btn-dangerous > a:only-child { - color: currentColor; -} -.ant-btn-dangerous > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous:hover, -.ant-btn-dangerous:focus { - color: #ff7875; - background: #fff; - border-color: #ff7875; -} -.ant-btn-dangerous:hover > a:only-child, -.ant-btn-dangerous:focus > a:only-child { - color: currentColor; -} -.ant-btn-dangerous:hover > a:only-child::after, -.ant-btn-dangerous:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous:active { - color: #d9363e; - background: #fff; - border-color: #d9363e; -} -.ant-btn-dangerous:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous[disabled], -.ant-btn-dangerous[disabled]:hover, -.ant-btn-dangerous[disabled]:focus, -.ant-btn-dangerous[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous[disabled] > a:only-child, -.ant-btn-dangerous[disabled]:hover > a:only-child, -.ant-btn-dangerous[disabled]:focus > a:only-child, -.ant-btn-dangerous[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous[disabled] > a:only-child::after, -.ant-btn-dangerous[disabled]:hover > a:only-child::after, -.ant-btn-dangerous[disabled]:focus > a:only-child::after, -.ant-btn-dangerous[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-primary { - color: #fff; - background: #ff4d4f; - border-color: #ff4d4f; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); - -webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); - box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); -} -.ant-btn-dangerous.ant-btn-primary > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-primary > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-primary:hover, -.ant-btn-dangerous.ant-btn-primary:focus { - color: #fff; - background: #ff7875; - border-color: #ff7875; -} -.ant-btn-dangerous.ant-btn-primary:hover > a:only-child, -.ant-btn-dangerous.ant-btn-primary:focus > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-primary:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-primary:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-primary:active { - color: #fff; - background: #d9363e; - border-color: #d9363e; -} -.ant-btn-dangerous.ant-btn-primary:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-primary:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-primary[disabled], -.ant-btn-dangerous.ant-btn-primary[disabled]:hover, -.ant-btn-dangerous.ant-btn-primary[disabled]:focus, -.ant-btn-dangerous.ant-btn-primary[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child, -.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child, -.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child, -.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-primary[disabled] > a:only-child::after, -.ant-btn-dangerous.ant-btn-primary[disabled]:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-primary[disabled]:focus > a:only-child::after, -.ant-btn-dangerous.ant-btn-primary[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link { - color: #ff4d4f; - background: transparent; - border-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-link > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link:hover, -.ant-btn-dangerous.ant-btn-link:focus { - color: #40a9ff; - background: transparent; - border-color: #40a9ff; -} -.ant-btn-dangerous.ant-btn-link:hover > a:only-child, -.ant-btn-dangerous.ant-btn-link:focus > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link:active { - color: #096dd9; - background: transparent; - border-color: #096dd9; -} -.ant-btn-dangerous.ant-btn-link:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link[disabled], -.ant-btn-dangerous.ant-btn-link[disabled]:hover, -.ant-btn-dangerous.ant-btn-link[disabled]:focus, -.ant-btn-dangerous.ant-btn-link[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, -.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, -.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, -.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, -.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, -.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link:hover, -.ant-btn-dangerous.ant-btn-link:focus { - color: #ff7875; - background: transparent; - border-color: transparent; -} -.ant-btn-dangerous.ant-btn-link:hover > a:only-child, -.ant-btn-dangerous.ant-btn-link:focus > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link:active { - color: #d9363e; - background: transparent; - border-color: transparent; -} -.ant-btn-dangerous.ant-btn-link:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-link[disabled], -.ant-btn-dangerous.ant-btn-link[disabled]:hover, -.ant-btn-dangerous.ant-btn-link[disabled]:focus, -.ant-btn-dangerous.ant-btn-link[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: transparent; - border-color: transparent; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, -.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, -.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, -.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, -.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, -.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text { - color: #ff4d4f; - background: transparent; - border-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-text > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text:hover, -.ant-btn-dangerous.ant-btn-text:focus { - color: #40a9ff; - background: transparent; - border-color: #40a9ff; -} -.ant-btn-dangerous.ant-btn-text:hover > a:only-child, -.ant-btn-dangerous.ant-btn-text:focus > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text:active { - color: #096dd9; - background: transparent; - border-color: #096dd9; -} -.ant-btn-dangerous.ant-btn-text:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text[disabled], -.ant-btn-dangerous.ant-btn-text[disabled]:hover, -.ant-btn-dangerous.ant-btn-text[disabled]:focus, -.ant-btn-dangerous.ant-btn-text[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child, -.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child, -.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child, -.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after, -.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after, -.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text:hover, -.ant-btn-dangerous.ant-btn-text:focus { - color: #ff7875; - background: rgba(0, 0, 0, 0.018); - border-color: transparent; -} -.ant-btn-dangerous.ant-btn-text:hover > a:only-child, -.ant-btn-dangerous.ant-btn-text:focus > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-text:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text:active { - color: #d9363e; - background: rgba(0, 0, 0, 0.028); - border-color: transparent; -} -.ant-btn-dangerous.ant-btn-text:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-dangerous.ant-btn-text[disabled], -.ant-btn-dangerous.ant-btn-text[disabled]:hover, -.ant-btn-dangerous.ant-btn-text[disabled]:focus, -.ant-btn-dangerous.ant-btn-text[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: transparent; - border-color: transparent; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child, -.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child, -.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child, -.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-dangerous.ant-btn-text[disabled] > a:only-child::after, -.ant-btn-dangerous.ant-btn-text[disabled]:hover > a:only-child::after, -.ant-btn-dangerous.ant-btn-text[disabled]:focus > a:only-child::after, -.ant-btn-dangerous.ant-btn-text[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-icon-only { - width: 32px; - height: 32px; - padding: 2.4px 0; - font-size: 16px; - border-radius: 2px; - vertical-align: -0.5px; -} -.ant-btn-icon-only > * { - font-size: 16px; -} -.ant-btn-icon-only.ant-btn-lg { - width: 40px; - height: 40px; - padding: 4.9px 0; - font-size: 18px; - border-radius: 2px; -} -.ant-btn-icon-only.ant-btn-lg > * { - font-size: 18px; -} -.ant-btn-icon-only.ant-btn-sm { - width: 24px; - height: 24px; - padding: 0px 0; - font-size: 14px; - border-radius: 2px; -} -.ant-btn-icon-only.ant-btn-sm > * { - font-size: 14px; -} -.ant-btn-round { - height: 32px; - padding: 4px 16px; - font-size: 14px; - border-radius: 32px; -} -.ant-btn-round.ant-btn-lg { - height: 40px; - padding: 6.4px 20px; - font-size: 16px; - border-radius: 40px; -} -.ant-btn-round.ant-btn-sm { - height: 24px; - padding: 0px 12px; - font-size: 14px; - border-radius: 24px; -} -.ant-btn-round.ant-btn-icon-only { - width: auto; -} -.ant-btn-circle, -.ant-btn-circle-outline { - min-width: 32px; - padding-right: 0; - padding-left: 0; - text-align: center; - border-radius: 50%; -} -.ant-btn-circle.ant-btn-lg, -.ant-btn-circle-outline.ant-btn-lg { - min-width: 40px; - border-radius: 50%; -} -.ant-btn-circle.ant-btn-sm, -.ant-btn-circle-outline.ant-btn-sm { - min-width: 24px; - border-radius: 50%; -} -.ant-btn::before { - position: absolute; - top: -1px; - right: -1px; - bottom: -1px; - left: -1px; - z-index: 1; - display: none; - background: #fff; - border-radius: inherit; - opacity: 0.35; - -webkit-transition: opacity 0.2s; - transition: opacity 0.2s; - content: ''; - pointer-events: none; -} -.ant-btn .anticon { - -webkit-transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-btn .anticon.anticon-plus > svg, -.ant-btn .anticon.anticon-minus > svg { - shape-rendering: optimizeSpeed; -} -.ant-btn.ant-btn-loading { - position: relative; -} -.ant-btn.ant-btn-loading:not([disabled]) { - pointer-events: none; -} -.ant-btn.ant-btn-loading::before { - display: block; -} -.ant-btn > .ant-btn-loading-icon { - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-btn > .ant-btn-loading-icon .anticon { - padding-right: 8px; -} -.ant-btn > .ant-btn-loading-icon:only-child .anticon { - padding-right: 0; -} -.ant-btn-group { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} -.ant-btn-group > .ant-btn, -.ant-btn-group > span > .ant-btn { - position: relative; -} -.ant-btn-group > .ant-btn:hover, -.ant-btn-group > span > .ant-btn:hover, -.ant-btn-group > .ant-btn:focus, -.ant-btn-group > span > .ant-btn:focus, -.ant-btn-group > .ant-btn:active, -.ant-btn-group > span > .ant-btn:active { - z-index: 2; -} -.ant-btn-group > .ant-btn[disabled], -.ant-btn-group > span > .ant-btn[disabled] { - z-index: 0; -} -.ant-btn-group .ant-btn-icon-only { - font-size: 14px; -} -.ant-btn-group-lg > .ant-btn, -.ant-btn-group-lg > span > .ant-btn { - height: 40px; - padding: 6.4px 15px; - font-size: 16px; - border-radius: 0; -} -.ant-btn-group-lg .ant-btn.ant-btn-icon-only { - width: 40px; - height: 40px; - padding-right: 0; - padding-left: 0; -} -.ant-btn-group-sm > .ant-btn, -.ant-btn-group-sm > span > .ant-btn { - height: 24px; - padding: 0px 7px; - font-size: 14px; - border-radius: 0; -} -.ant-btn-group-sm > .ant-btn > .anticon, -.ant-btn-group-sm > span > .ant-btn > .anticon { - font-size: 14px; -} -.ant-btn-group-sm .ant-btn.ant-btn-icon-only { - width: 24px; - height: 24px; - padding-right: 0; - padding-left: 0; -} -.ant-btn-group .ant-btn + .ant-btn, -.ant-btn + .ant-btn-group, -.ant-btn-group span + .ant-btn, -.ant-btn-group .ant-btn + span, -.ant-btn-group > span + span, -.ant-btn-group + .ant-btn, -.ant-btn-group + .ant-btn-group { - margin-left: -1px; -} -.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) { - border-left-color: transparent; -} -.ant-btn-group .ant-btn { - border-radius: 0; -} -.ant-btn-group > .ant-btn:first-child, -.ant-btn-group > span:first-child > .ant-btn { - margin-left: 0; -} -.ant-btn-group > .ant-btn:only-child { - border-radius: 2px; -} -.ant-btn-group > span:only-child > .ant-btn { - border-radius: 2px; -} -.ant-btn-group > .ant-btn:first-child:not(:last-child), -.ant-btn-group > span:first-child:not(:last-child) > .ant-btn { - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} -.ant-btn-group > .ant-btn:last-child:not(:first-child), -.ant-btn-group > span:last-child:not(:first-child) > .ant-btn { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} -.ant-btn-group-sm > .ant-btn:only-child { - border-radius: 2px; -} -.ant-btn-group-sm > span:only-child > .ant-btn { - border-radius: 2px; -} -.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), -.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn { - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} -.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), -.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn { - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} -.ant-btn-group > .ant-btn-group { - float: left; -} -.ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn { - border-radius: 0; -} -.ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child { - padding-right: 8px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child { - padding-left: 8px; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.ant-btn-rtl.ant-btn-group .ant-btn + .ant-btn, -.ant-btn-rtl.ant-btn + .ant-btn-group, -.ant-btn-rtl.ant-btn-group span + .ant-btn, -.ant-btn-rtl.ant-btn-group .ant-btn + span, -.ant-btn-rtl.ant-btn-group > span + span, -.ant-btn-rtl.ant-btn-group + .ant-btn, -.ant-btn-rtl.ant-btn-group + .ant-btn-group, -.ant-btn-group-rtl.ant-btn-group .ant-btn + .ant-btn, -.ant-btn-group-rtl.ant-btn + .ant-btn-group, -.ant-btn-group-rtl.ant-btn-group span + .ant-btn, -.ant-btn-group-rtl.ant-btn-group .ant-btn + span, -.ant-btn-group-rtl.ant-btn-group > span + span, -.ant-btn-group-rtl.ant-btn-group + .ant-btn, -.ant-btn-group-rtl.ant-btn-group + .ant-btn-group { - margin-right: -1px; - margin-left: auto; -} -.ant-btn-group.ant-btn-group-rtl { - direction: rtl; -} -.ant-btn-group-rtl.ant-btn-group > .ant-btn:first-child:not(:last-child), -.ant-btn-group-rtl.ant-btn-group > span:first-child:not(:last-child) > .ant-btn { - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.ant-btn-group-rtl.ant-btn-group > .ant-btn:last-child:not(:first-child), -.ant-btn-group-rtl.ant-btn-group > span:last-child:not(:first-child) > .ant-btn { - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), -.ant-btn-group-rtl.ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn { - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.ant-btn-group-rtl.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), -.ant-btn-group-rtl.ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn { - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.ant-btn:focus > span, -.ant-btn:active > span { - position: relative; -} -.ant-btn > .anticon + span, -.ant-btn > span + .anticon { - margin-left: 8px; -} -.ant-btn-background-ghost { - color: #fff; - background: transparent !important; - border-color: #fff; -} -.ant-btn-background-ghost.ant-btn-primary { - color: #1890ff; - background: transparent; - border-color: #1890ff; - text-shadow: none; -} -.ant-btn-background-ghost.ant-btn-primary > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-primary > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-primary:hover, -.ant-btn-background-ghost.ant-btn-primary:focus { - color: #40a9ff; - background: transparent; - border-color: #40a9ff; -} -.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-primary:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-primary:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-primary:active { - color: #096dd9; - background: transparent; - border-color: #096dd9; -} -.ant-btn-background-ghost.ant-btn-primary:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-primary:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-primary[disabled], -.ant-btn-background-ghost.ant-btn-primary[disabled]:hover, -.ant-btn-background-ghost.ant-btn-primary[disabled]:focus, -.ant-btn-background-ghost.ant-btn-primary[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child, -.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, -.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child::after, -.ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child::after, -.ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-danger { - color: #ff4d4f; - background: transparent; - border-color: #ff4d4f; - text-shadow: none; -} -.ant-btn-background-ghost.ant-btn-danger > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-danger > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-danger:hover, -.ant-btn-background-ghost.ant-btn-danger:focus { - color: #ff7875; - background: transparent; - border-color: #ff7875; -} -.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-danger:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-danger:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-danger:active { - color: #d9363e; - background: transparent; - border-color: #d9363e; -} -.ant-btn-background-ghost.ant-btn-danger:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-danger:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-danger[disabled], -.ant-btn-background-ghost.ant-btn-danger[disabled]:hover, -.ant-btn-background-ghost.ant-btn-danger[disabled]:focus, -.ant-btn-background-ghost.ant-btn-danger[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child, -.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, -.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child::after, -.ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child::after, -.ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous { - color: #ff4d4f; - background: transparent; - border-color: #ff4d4f; - text-shadow: none; -} -.ant-btn-background-ghost.ant-btn-dangerous > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous:hover, -.ant-btn-background-ghost.ant-btn-dangerous:focus { - color: #ff7875; - background: transparent; - border-color: #ff7875; -} -.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous:active { - color: #d9363e; - background: transparent; - border-color: #d9363e; -} -.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous[disabled], -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous[disabled] > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:focus > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link { - color: #ff4d4f; - background: transparent; - border-color: transparent; - text-shadow: none; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus { - color: #ff7875; - background: transparent; - border-color: transparent; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:focus > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active { - color: #d9363e; - background: transparent; - border-color: transparent; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled], -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - text-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child { - color: currentColor; -} -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, -.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: transparent; - content: ''; -} -.ant-btn-two-chinese-chars::first-letter { - letter-spacing: 0.34em; -} -.ant-btn-two-chinese-chars > *:not(.anticon) { - margin-right: -0.34em; - letter-spacing: 0.34em; -} -.ant-btn-block { - width: 100%; -} -.ant-btn:empty { - display: inline-block; - width: 0; - visibility: hidden; - content: '\a0'; -} -a.ant-btn { - padding-top: 0.1px; - line-height: 30px; -} -a.ant-btn-lg { - line-height: 38px; -} -a.ant-btn-sm { - line-height: 22px; -} -.ant-btn-rtl { - direction: rtl; -} -.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child), -.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary { - border-right-color: #40a9ff; - border-left-color: #d9d9d9; -} -.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], -.ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] { - border-right-color: #d9d9d9; - border-left-color: #40a9ff; -} -.ant-btn-rtl.ant-btn > .ant-btn-loading-icon .anticon { - padding-right: 0; - padding-left: 8px; -} -.ant-btn > .ant-btn-loading-icon:only-child .anticon { - padding-right: 0; - padding-left: 0; -} -.ant-btn-rtl.ant-btn > .anticon + span, -.ant-btn-rtl.ant-btn > span + .anticon { - margin-right: 8px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-picker-calendar { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - background: #fff; -} -.ant-picker-calendar-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - padding: 12px 0; -} -.ant-picker-calendar-header .ant-picker-calendar-year-select { - min-width: 80px; -} -.ant-picker-calendar-header .ant-picker-calendar-month-select { - min-width: 70px; - margin-left: 8px; -} -.ant-picker-calendar-header .ant-picker-calendar-mode-switch { - margin-left: 8px; -} -.ant-picker-calendar .ant-picker-panel { - background: #fff; - border: 0; - border-top: 1px solid #f0f0f0; - border-radius: 0; -} -.ant-picker-calendar .ant-picker-panel .ant-picker-month-panel, -.ant-picker-calendar .ant-picker-panel .ant-picker-date-panel { - width: auto; -} -.ant-picker-calendar .ant-picker-panel .ant-picker-body { - padding: 8px 0; -} -.ant-picker-calendar .ant-picker-panel .ant-picker-content { - width: 100%; -} -.ant-picker-calendar-mini { - border-radius: 2px; -} -.ant-picker-calendar-mini .ant-picker-calendar-header { - padding-right: 8px; - padding-left: 8px; -} -.ant-picker-calendar-mini .ant-picker-panel { - border-radius: 0 0 2px 2px; -} -.ant-picker-calendar-mini .ant-picker-content { - height: 256px; -} -.ant-picker-calendar-mini .ant-picker-content th { - height: auto; - padding: 0; - line-height: 18px; -} -.ant-picker-calendar-full .ant-picker-panel { - display: block; - width: 100%; - text-align: right; - background: #fff; - border: 0; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-body td { - padding: 0; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th { - height: auto; - padding: 0 12px 5px 0; - line-height: 18px; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell::before { - display: none; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell:hover .ant-picker-calendar-date { - background: #f5f5f5; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell .ant-picker-calendar-date-today::before { - display: none; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date-today, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date-today { - background: #e6f7ff; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date .ant-picker-calendar-date-value, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date .ant-picker-calendar-date-value, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected .ant-picker-calendar-date-today .ant-picker-calendar-date-value, -.ant-picker-calendar-full .ant-picker-panel .ant-picker-cell-selected:hover .ant-picker-calendar-date-today .ant-picker-calendar-date-value { - color: #1890ff; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date { - display: block; - width: auto; - height: auto; - margin: 0 4px; - padding: 4px 8px 0; - border: 0; - border-top: 2px solid #f0f0f0; - border-radius: 0; - -webkit-transition: background 0.3s; - transition: background 0.3s; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-value { - line-height: 24px; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-content { - position: static; - width: auto; - height: 86px; - overflow-y: auto; - color: rgba(0, 0, 0, 0.65); - line-height: 1.5715; - text-align: left; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-today { - border-color: #1890ff; -} -.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-today .ant-picker-calendar-date-value { - color: rgba(0, 0, 0, 0.65); -} -@media only screen and (max-width: 480px) { - .ant-picker-calendar-header { - display: block; - } - .ant-picker-calendar-header .ant-picker-calendar-year-select { - width: 50%; - } - .ant-picker-calendar-header .ant-picker-calendar-month-select { - width: calc(50% - 8px); - } - .ant-picker-calendar-header .ant-picker-calendar-mode-switch { - width: 100%; - margin-top: 8px; - margin-left: 0; - } - .ant-picker-calendar-header .ant-picker-calendar-mode-switch > label { - width: 50%; - text-align: center; - } -} -.ant-picker-calendar-rtl { - direction: rtl; -} -.ant-picker-calendar-rtl .ant-picker-calendar-header .ant-picker-calendar-month-select { - margin-right: 8px; - margin-left: 0; -} -.ant-picker-calendar-rtl .ant-picker-calendar-header .ant-picker-calendar-mode-switch { - margin-right: 8px; - margin-left: 0; -} -.ant-picker-calendar-rtl.ant-picker-calendar-full .ant-picker-panel { - text-align: left; -} -.ant-picker-calendar-rtl.ant-picker-calendar-full .ant-picker-panel .ant-picker-body th { - padding: 0 0 5px 12px; -} -.ant-picker-calendar-rtl.ant-picker-calendar-full .ant-picker-panel .ant-picker-calendar-date-content { - text-align: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-radio-group { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; - font-size: 0; - line-height: unset; -} -.ant-radio-group .ant-badge-count { - z-index: 1; -} -.ant-radio-group > .ant-badge:not(:first-child) > .ant-radio-button-wrapper { - border-left: none; -} -.ant-radio-wrapper { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - margin-right: 8px; - white-space: nowrap; - cursor: pointer; -} -.ant-radio { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - top: 0px; - display: inline-block; - line-height: 1; - white-space: nowrap; - vertical-align: sub; - outline: none; - cursor: pointer; -} -.ant-radio-wrapper:hover .ant-radio, -.ant-radio:hover .ant-radio-inner, -.ant-radio-input:focus + .ant-radio-inner { - border-color: #1890ff; -} -.ant-radio-input:focus + .ant-radio-inner { - -webkit-box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); - box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); -} -.ant-radio-checked::after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 1px solid #1890ff; - border-radius: 50%; - visibility: hidden; - -webkit-animation: antRadioEffect 0.36s ease-in-out; - animation: antRadioEffect 0.36s ease-in-out; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - content: ''; -} -.ant-radio:hover::after, -.ant-radio-wrapper:hover .ant-radio::after { - visibility: visible; -} -.ant-radio-inner { - position: relative; - top: 0; - left: 0; - display: block; - width: 16px; - height: 16px; - background-color: #fff; - border-color: #d9d9d9; - border-style: solid; - border-width: 1px; - border-radius: 100px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-radio-inner::after { - position: absolute; - top: 3px; - left: 3px; - display: table; - width: 8px; - height: 8px; - background-color: #1890ff; - border-top: 0; - border-left: 0; - border-radius: 8px; - -webkit-transform: scale(0); - transform: scale(0); - opacity: 0; - -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - content: ' '; -} -.ant-radio-input { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - cursor: pointer; - opacity: 0; -} -.ant-radio-checked .ant-radio-inner { - border-color: #1890ff; -} -.ant-radio-checked .ant-radio-inner::after { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 1; - -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.ant-radio-disabled .ant-radio-inner { - background-color: #f5f5f5; - border-color: #d9d9d9 !important; - cursor: not-allowed; -} -.ant-radio-disabled .ant-radio-inner::after { - background-color: rgba(0, 0, 0, 0.2); -} -.ant-radio-disabled .ant-radio-input { - cursor: not-allowed; -} -.ant-radio-disabled + span { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -span.ant-radio + * { - padding-right: 8px; - padding-left: 8px; -} -.ant-radio-button-wrapper { - position: relative; - display: inline-block; - height: 32px; - margin: 0; - padding: 0 15px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 30px; - background: #fff; - border: 1px solid #d9d9d9; - border-top-width: 1.02px; - border-left-width: 0; - cursor: pointer; - -webkit-transition: color 0.3s, background 0.3s, border-color 0.3s, -webkit-box-shadow 0.3s; - transition: color 0.3s, background 0.3s, border-color 0.3s, -webkit-box-shadow 0.3s; - transition: color 0.3s, background 0.3s, border-color 0.3s, box-shadow 0.3s; - transition: color 0.3s, background 0.3s, border-color 0.3s, box-shadow 0.3s, -webkit-box-shadow 0.3s; -} -.ant-radio-button-wrapper a { - color: rgba(0, 0, 0, 0.65); -} -.ant-radio-button-wrapper > .ant-radio-button { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ant-radio-group-large .ant-radio-button-wrapper { - height: 40px; - font-size: 16px; - line-height: 38px; -} -.ant-radio-group-small .ant-radio-button-wrapper { - height: 24px; - padding: 0 7px; - line-height: 22px; -} -.ant-radio-button-wrapper:not(:first-child)::before { - position: absolute; - top: -1px; - left: -1px; - display: block; - -webkit-box-sizing: content-box; - box-sizing: content-box; - width: 1px; - height: 100%; - padding: 1px 0; - background-color: #d9d9d9; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; - content: ''; -} -.ant-radio-button-wrapper:first-child { - border-left: 1px solid #d9d9d9; - border-radius: 2px 0 0 2px; -} -.ant-radio-button-wrapper:last-child { - border-radius: 0 2px 2px 0; -} -.ant-radio-button-wrapper:first-child:last-child { - border-radius: 2px; -} -.ant-radio-button-wrapper:hover { - position: relative; - color: #1890ff; -} -.ant-radio-button-wrapper:focus-within { - -webkit-box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); - box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); -} -.ant-radio-button-wrapper .ant-radio-inner, -.ant-radio-button-wrapper input[type='checkbox'], -.ant-radio-button-wrapper input[type='radio'] { - width: 0; - height: 0; - opacity: 0; - pointer-events: none; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { - z-index: 1; - color: #1890ff; - background: #fff; - border-color: #1890ff; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before { - background-color: #1890ff; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child { - border-color: #1890ff; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { - color: #40a9ff; - border-color: #40a9ff; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before { - background-color: #40a9ff; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active { - color: #096dd9; - border-color: #096dd9; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before { - background-color: #096dd9; -} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within { - -webkit-box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); - box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); -} -.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { - color: #fff; - background: #1890ff; - border-color: #1890ff; -} -.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { - color: #fff; - background: #40a9ff; - border-color: #40a9ff; -} -.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active { - color: #fff; - background: #096dd9; - border-color: #096dd9; -} -.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within { - -webkit-box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); - box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.08); -} -.ant-radio-button-wrapper-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - border-color: #d9d9d9; - cursor: not-allowed; -} -.ant-radio-button-wrapper-disabled:first-child, -.ant-radio-button-wrapper-disabled:hover { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - border-color: #d9d9d9; -} -.ant-radio-button-wrapper-disabled:first-child { - border-left-color: #d9d9d9; -} -.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked { - color: #fff; - background-color: #e6e6e6; - border-color: #d9d9d9; - -webkit-box-shadow: none; - box-shadow: none; -} -@-webkit-keyframes antRadioEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -@keyframes antRadioEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -@supports (-moz-appearance: meterbar) and (background-blend-mode: difference, normal) { - .ant-radio { - vertical-align: text-bottom; - } -} -.ant-radio-group.ant-radio-group-rtl { - direction: rtl; -} -.ant-radio-wrapper.ant-radio-wrapper-rtl { - margin-right: 0; - margin-left: 8px; - direction: rtl; -} -.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl { - border-right-width: 0; - border-left-width: 1px; -} -.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:not(:first-child)::before { - right: -1px; - left: 0; -} -.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:first-child { - border-right: 1px solid #d9d9d9; - border-radius: 0 2px 2px 0; -} -.ant-radio-button-wrapper-checked:not([class*=' ant-radio-button-wrapper-disabled']).ant-radio-button-wrapper:first-child { - border-right-color: #40a9ff; -} -.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper:last-child { - border-radius: 2px 0 0 2px; -} -.ant-radio-button-wrapper.ant-radio-button-wrapper-rtl.ant-radio-button-wrapper-disabled:first-child { - border-right-color: #d9d9d9; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-picker-panel { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - text-align: center; - background: #fff; - border: 1px solid #f0f0f0; - border-radius: 2px; - outline: none; -} -.ant-picker-panel-focused { - border-color: #1890ff; -} -.ant-picker-decade-panel, -.ant-picker-year-panel, -.ant-picker-quarter-panel, -.ant-picker-month-panel, -.ant-picker-week-panel, -.ant-picker-date-panel, -.ant-picker-time-panel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 280px; -} -.ant-picker-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0 8px; - color: rgba(0, 0, 0, 0.85); - border-bottom: 1px solid #f0f0f0; -} -.ant-picker-header > * { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-picker-header button { - padding: 0; - color: rgba(0, 0, 0, 0.25); - line-height: 40px; - background: transparent; - border: 0; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-picker-header > button { - min-width: 1.6em; - font-size: 14px; -} -.ant-picker-header > button:hover { - color: rgba(0, 0, 0, 0.65); -} -.ant-picker-header-view { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - font-weight: 500; - line-height: 40px; -} -.ant-picker-header-view button { - color: inherit; - font-weight: inherit; -} -.ant-picker-header-view button:not(:first-child) { - margin-left: 8px; -} -.ant-picker-header-view button:hover { - color: #1890ff; -} -.ant-picker-prev-icon, -.ant-picker-next-icon, -.ant-picker-super-prev-icon, -.ant-picker-super-next-icon { - position: relative; - display: inline-block; - width: 7px; - height: 7px; -} -.ant-picker-prev-icon::before, -.ant-picker-next-icon::before, -.ant-picker-super-prev-icon::before, -.ant-picker-super-next-icon::before { - position: absolute; - top: 0; - left: 0; - display: inline-block; - width: 7px; - height: 7px; - border: 0 solid currentColor; - border-width: 1.5px 0 0 1.5px; - content: ''; -} -.ant-picker-super-prev-icon::after, -.ant-picker-super-next-icon::after { - position: absolute; - top: 4px; - left: 4px; - display: inline-block; - width: 7px; - height: 7px; - border: 0 solid currentColor; - border-width: 1.5px 0 0 1.5px; - content: ''; -} -.ant-picker-prev-icon, -.ant-picker-super-prev-icon { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.ant-picker-next-icon, -.ant-picker-super-next-icon { - -webkit-transform: rotate(135deg); - transform: rotate(135deg); -} -.ant-picker-content { - width: 100%; - table-layout: fixed; - border-collapse: collapse; -} -.ant-picker-content th, -.ant-picker-content td { - position: relative; - min-width: 24px; - font-weight: 400; -} -.ant-picker-content th { - height: 30px; - color: rgba(0, 0, 0, 0.65); - line-height: 30px; -} -.ant-picker-cell { - padding: 3px 0; - color: rgba(0, 0, 0, 0.25); - cursor: pointer; -} -.ant-picker-cell-in-view { - color: rgba(0, 0, 0, 0.65); -} -.ant-picker-cell-disabled { - cursor: not-allowed; -} -.ant-picker-cell::before { - position: absolute; - top: 50%; - right: 0; - left: 0; - z-index: 1; - height: 24px; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - content: ''; -} -.ant-picker-cell .ant-picker-cell-inner { - position: relative; - z-index: 2; - display: inline-block; - min-width: 24px; - height: 24px; - line-height: 24px; - border-radius: 2px; - -webkit-transition: background 0.3s, border 0.3s; - transition: background 0.3s, border 0.3s; -} -.ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner, -.ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner { - background: #f5f5f5; -} -.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - border: 1px solid #1890ff; - border-radius: 2px; - content: ''; -} -.ant-picker-cell-in-view.ant-picker-cell-in-range { - position: relative; -} -.ant-picker-cell-in-view.ant-picker-cell-in-range::before { - background: #e6f7ff; -} -.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner, -.ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner, -.ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner { - color: #fff; - background: #1890ff; -} -.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single)::before, -.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single)::before { - background: #e6f7ff; -} -.ant-picker-cell-in-view.ant-picker-cell-range-start::before { - left: 50%; -} -.ant-picker-cell-in-view.ant-picker-cell-range-end::before { - right: 50%; -} -.ant-picker-cell-in-view.ant-picker-cell-range-hover-start:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-end:not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end)::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-range-start-single::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-end.ant-picker-cell-range-end-single::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover:not(.ant-picker-cell-in-range)::after { - position: absolute; - top: 50%; - z-index: 0; - height: 24px; - border-top: 1px dashed #7ec1ff; - border-bottom: 1px dashed #7ec1ff; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - content: ''; -} -.ant-picker-cell-range-hover-start::after, -.ant-picker-cell-range-hover-end::after, -.ant-picker-cell-range-hover::after { - right: 0; - left: 2px; -} -.ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover::before, -.ant-picker-cell-in-view.ant-picker-cell-range-start.ant-picker-cell-range-hover::before, -.ant-picker-cell-in-view.ant-picker-cell-range-end.ant-picker-cell-range-hover::before, -.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single).ant-picker-cell-range-hover-start::before, -.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single).ant-picker-cell-range-hover-end::before, -.ant-picker-panel > :not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start::before, -.ant-picker-panel > :not(.ant-picker-date-panel) .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end::before { - background: #cbe6ff; -} -.ant-picker-cell-in-view.ant-picker-cell-range-start:not(.ant-picker-cell-range-start-single):not(.ant-picker-cell-range-end) .ant-picker-cell-inner { - border-radius: 2px 0 0 2px; -} -.ant-picker-cell-in-view.ant-picker-cell-range-end:not(.ant-picker-cell-range-end-single):not(.ant-picker-cell-range-start) .ant-picker-cell-inner { - border-radius: 0 2px 2px 0; -} -.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after, -.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after { - position: absolute; - top: 0; - bottom: 0; - z-index: -1; - background: #cbe6ff; - content: ''; -} -.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after { - right: -7px; - left: 0; -} -.ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after { - right: 0; - left: -7px; -} -.ant-picker-cell-range-hover.ant-picker-cell-range-start::after { - right: 50%; -} -.ant-picker-cell-range-hover.ant-picker-cell-range-end::after { - left: 50%; -} -tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after, -tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after { - left: 6px; - border-left: 1px dashed #7ec1ff; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} -tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after, -tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after, -.ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after { - right: 6px; - border-right: 1px dashed #7ec1ff; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} -.ant-picker-cell-disabled { - pointer-events: none; -} -.ant-picker-cell-disabled .ant-picker-cell-inner { - color: rgba(0, 0, 0, 0.25); - background: transparent; -} -.ant-picker-cell-disabled::before { - background: #f5f5f5; -} -.ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before { - border-color: rgba(0, 0, 0, 0.25); -} -.ant-picker-decade-panel .ant-picker-content, -.ant-picker-year-panel .ant-picker-content, -.ant-picker-quarter-panel .ant-picker-content, -.ant-picker-month-panel .ant-picker-content { - height: 264px; -} -.ant-picker-decade-panel .ant-picker-cell-inner, -.ant-picker-year-panel .ant-picker-cell-inner, -.ant-picker-quarter-panel .ant-picker-cell-inner, -.ant-picker-month-panel .ant-picker-cell-inner { - padding: 0 8px; -} -.ant-picker-decade-panel .ant-picker-cell-disabled .ant-picker-cell-inner, -.ant-picker-year-panel .ant-picker-cell-disabled .ant-picker-cell-inner, -.ant-picker-quarter-panel .ant-picker-cell-disabled .ant-picker-cell-inner, -.ant-picker-month-panel .ant-picker-cell-disabled .ant-picker-cell-inner { - background: #f5f5f5; -} -.ant-picker-quarter-panel .ant-picker-content { - height: 56px; -} -.ant-picker-footer { - width: -webkit-min-content; - width: -moz-min-content; - width: min-content; - min-width: 100%; - line-height: 38px; - text-align: center; - border-bottom: 1px solid transparent; -} -.ant-picker-panel .ant-picker-footer { - border-top: 1px solid #f0f0f0; -} -.ant-picker-footer-extra { - padding: 0 12px; - line-height: 38px; - text-align: left; -} -.ant-picker-footer-extra:not(:last-child) { - border-bottom: 1px solid #f0f0f0; -} -.ant-picker-now { - text-align: left; -} -.ant-picker-today-btn { - color: #1890ff; -} -.ant-picker-today-btn:hover { - color: #40a9ff; -} -.ant-picker-today-btn:active { - color: #096dd9; -} -.ant-picker-today-btn.ant-picker-today-btn-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-picker-decade-panel .ant-picker-cell-inner { - padding: 0 4px; -} -.ant-picker-decade-panel .ant-picker-cell::before { - display: none; -} -.ant-picker-year-panel .ant-picker-body, -.ant-picker-quarter-panel .ant-picker-body, -.ant-picker-month-panel .ant-picker-body { - padding: 0 8px; -} -.ant-picker-year-panel .ant-picker-cell-inner, -.ant-picker-quarter-panel .ant-picker-cell-inner, -.ant-picker-month-panel .ant-picker-cell-inner { - width: 60px; -} -.ant-picker-year-panel .ant-picker-cell-range-hover-start::after, -.ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after, -.ant-picker-month-panel .ant-picker-cell-range-hover-start::after { - left: 14px; - border-left: 1px dashed #7ec1ff; - border-radius: 2px 0 0 2px; -} -.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-start::after, -.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-start::after, -.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-start::after { - right: 14px; - border-right: 1px dashed #7ec1ff; - border-radius: 0 2px 2px 0; -} -.ant-picker-year-panel .ant-picker-cell-range-hover-end::after, -.ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after, -.ant-picker-month-panel .ant-picker-cell-range-hover-end::after { - right: 14px; - border-right: 1px dashed #7ec1ff; - border-radius: 0 2px 2px 0; -} -.ant-picker-panel-rtl .ant-picker-year-panel .ant-picker-cell-range-hover-end::after, -.ant-picker-panel-rtl .ant-picker-quarter-panel .ant-picker-cell-range-hover-end::after, -.ant-picker-panel-rtl .ant-picker-month-panel .ant-picker-cell-range-hover-end::after { - left: 14px; - border-left: 1px dashed #7ec1ff; - border-radius: 2px 0 0 2px; -} -.ant-picker-week-panel .ant-picker-body { - padding: 8px 12px; -} -.ant-picker-week-panel .ant-picker-cell:hover .ant-picker-cell-inner, -.ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner, -.ant-picker-week-panel .ant-picker-cell .ant-picker-cell-inner { - background: transparent !important; -} -.ant-picker-week-panel-row td { - -webkit-transition: background 0.3s; - transition: background 0.3s; -} -.ant-picker-week-panel-row:hover td { - background: #f5f5f5; -} -.ant-picker-week-panel-row-selected td, -.ant-picker-week-panel-row-selected:hover td { - background: #1890ff; -} -.ant-picker-week-panel-row-selected td.ant-picker-cell-week, -.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-week { - color: rgba(255, 255, 255, 0.5); -} -.ant-picker-week-panel-row-selected td.ant-picker-cell-today .ant-picker-cell-inner::before, -.ant-picker-week-panel-row-selected:hover td.ant-picker-cell-today .ant-picker-cell-inner::before { - border-color: #fff; -} -.ant-picker-week-panel-row-selected td .ant-picker-cell-inner, -.ant-picker-week-panel-row-selected:hover td .ant-picker-cell-inner { - color: #fff; -} -.ant-picker-date-panel .ant-picker-body { - padding: 8px 12px; -} -.ant-picker-date-panel .ant-picker-content { - width: 252px; -} -.ant-picker-date-panel .ant-picker-content th { - width: 36px; -} -.ant-picker-datetime-panel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.ant-picker-datetime-panel .ant-picker-time-panel { - border-left: 1px solid #f0f0f0; -} -.ant-picker-datetime-panel .ant-picker-date-panel, -.ant-picker-datetime-panel .ant-picker-time-panel { - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; -} -.ant-picker-datetime-panel-active .ant-picker-date-panel, -.ant-picker-datetime-panel-active .ant-picker-time-panel { - opacity: 0.3; -} -.ant-picker-datetime-panel-active .ant-picker-date-panel-active, -.ant-picker-datetime-panel-active .ant-picker-time-panel-active { - opacity: 1; -} -.ant-picker-time-panel { - width: auto; - min-width: auto; -} -.ant-picker-time-panel .ant-picker-content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - height: 224px; -} -.ant-picker-time-panel-column { - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - width: 56px; - margin: 0; - padding: 0; - overflow-y: hidden; - text-align: left; - list-style: none; - -webkit-transition: background 0.3s; - transition: background 0.3s; -} -.ant-picker-time-panel-column::after { - display: block; - height: 196px; - content: ''; -} -.ant-picker-datetime-panel .ant-picker-time-panel-column::after { - height: 198px; -} -.ant-picker-time-panel-column:not(:first-child) { - border-left: 1px solid #f0f0f0; -} -.ant-picker-time-panel-column-active { - background: rgba(230, 247, 255, 0.2); -} -.ant-picker-time-panel-column:hover { - overflow-y: auto; -} -.ant-picker-time-panel-column > li { - margin: 0; - padding: 0; -} -.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner { - display: block; - width: 100%; - height: 28px; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - line-height: 28px; - text-align: center; - border-radius: 0; - cursor: pointer; - -webkit-transition: background 0.3s; - transition: background 0.3s; -} -.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover { - background: #f5f5f5; -} -.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner { - background: #e6f7ff; -} -.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-disabled .ant-picker-time-panel-cell-inner { - color: rgba(0, 0, 0, 0.25); - background: transparent; - cursor: not-allowed; -} -/* stylelint-disable-next-line */ -_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell, -:root .ant-picker-range-wrapper .ant-picker-month-panel .ant-picker-cell, -_:-ms-fullscreen .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell, -:root .ant-picker-range-wrapper .ant-picker-year-panel .ant-picker-cell { - padding: 21px 0; -} -.ant-picker { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - padding: 4px 11px 4px; - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - background: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: border 0.3s, -webkit-box-shadow 0.3s; - transition: border 0.3s, -webkit-box-shadow 0.3s; - transition: border 0.3s, box-shadow 0.3s; - transition: border 0.3s, box-shadow 0.3s, -webkit-box-shadow 0.3s; -} -.ant-picker:hover, -.ant-picker-focused { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-picker-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-picker.ant-picker-disabled { - background: #f5f5f5; - border-color: #d9d9d9; - cursor: not-allowed; -} -.ant-picker.ant-picker-disabled .ant-picker-suffix { - color: rgba(0, 0, 0, 0.25); -} -.ant-picker.ant-picker-borderless { - background-color: transparent !important; - border-color: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.ant-picker-input { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; -} -.ant-picker-input > input { - position: relative; - display: inline-block; - width: 100%; - min-width: 0; - padding: 4px 11px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; - background-color: #fff; - background-image: none; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s; - transition: all 0.3s; - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - min-width: 1px; - height: auto; - padding: 0; - background: transparent; - border: 0; -} -.ant-picker-input > input::-moz-placeholder { - opacity: 1; -} -.ant-picker-input > input::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-picker-input > input:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-picker-input > input::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-picker-input > input::placeholder { - color: #bfbfbf; -} -.ant-picker-input > input:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-picker-input > input:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-picker-input > input:placeholder-shown { - text-overflow: ellipsis; -} -.ant-picker-input > input:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-picker-input > input:focus, -.ant-picker-input > input-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-picker-input > input-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-picker-input > input-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-picker-input > input[disabled] { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-picker-input > input[disabled]:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -textarea.ant-picker-input > input { - max-width: 100%; - height: auto; - min-height: 32px; - line-height: 1.5715; - vertical-align: bottom; - -webkit-transition: all 0.3s, height 0s; - transition: all 0.3s, height 0s; -} -.ant-picker-input > input-lg { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-picker-input > input-sm { - padding: 0px 7px; -} -.ant-picker-input > input:focus { - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-picker-input > input[disabled] { - background: transparent; -} -.ant-picker-input:hover .ant-picker-clear { - opacity: 1; -} -.ant-picker-large { - padding: 6.5px 11px 6.5px; -} -.ant-picker-large .ant-picker-input > input { - font-size: 16px; -} -.ant-picker-small { - padding: 0px 7px 0px; -} -.ant-picker-suffix { - -ms-flex-item-align: center; - align-self: center; - margin-left: 4px; - color: rgba(0, 0, 0, 0.25); - line-height: 1; - pointer-events: none; -} -.ant-picker-suffix > * { - vertical-align: top; -} -.ant-picker-clear { - position: absolute; - top: 50%; - right: 0; - color: rgba(0, 0, 0, 0.25); - line-height: 1; - background: #fff; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - cursor: pointer; - opacity: 0; - -webkit-transition: opacity 0.3s, color 0.3s; - transition: opacity 0.3s, color 0.3s; -} -.ant-picker-clear > * { - vertical-align: top; -} -.ant-picker-clear:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-picker-separator { - position: relative; - display: inline-block; - width: 1em; - height: 16px; - color: rgba(0, 0, 0, 0.25); - font-size: 16px; - vertical-align: top; - cursor: default; -} -.ant-picker-focused .ant-picker-separator { - color: rgba(0, 0, 0, 0.45); -} -.ant-picker-disabled .ant-picker-range-separator .ant-picker-separator { - cursor: not-allowed; -} -.ant-picker-range { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} -.ant-picker-range .ant-picker-clear { - right: 11px; -} -.ant-picker-range:hover .ant-picker-clear { - opacity: 1; -} -.ant-picker-range .ant-picker-active-bar { - bottom: -1px; - height: 2px; - margin-left: 11px; - background: #1890ff; - opacity: 0; - -webkit-transition: all 0.3s ease-out; - transition: all 0.3s ease-out; - pointer-events: none; -} -.ant-picker-range.ant-picker-focused .ant-picker-active-bar { - opacity: 1; -} -.ant-picker-range-separator { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 0 8px; - line-height: 1; -} -.ant-picker-range.ant-picker-small .ant-picker-clear { - right: 7px; -} -.ant-picker-dropdown { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - z-index: 1050; -} -.ant-picker-dropdown-hidden { - display: none; -} -.ant-picker-dropdown-placement-bottomLeft .ant-picker-range-arrow { - top: 1.66666667px; - display: block; - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.ant-picker-dropdown-placement-topLeft .ant-picker-range-arrow { - bottom: 1.66666667px; - display: block; - -webkit-transform: rotate(135deg); - transform: rotate(135deg); -} -.ant-picker-dropdown-range { - padding: 6.66666667px 0; -} -.ant-picker-dropdown-range-hidden { - display: none; -} -.ant-picker-dropdown .ant-picker-panel > .ant-picker-time-panel { - padding-top: 4px; -} -.ant-picker-ranges { - margin-bottom: 0; - padding: 4px 12px; - overflow: hidden; - line-height: 34px; - text-align: left; - list-style: none; -} -.ant-picker-ranges > li { - display: inline-block; -} -.ant-picker-ranges .ant-picker-preset > .ant-tag-blue { - color: #1890ff; - background: #e6f7ff; - border-color: #91d5ff; - cursor: pointer; -} -.ant-picker-ranges .ant-picker-ok { - float: right; - margin-left: 8px; -} -.ant-picker-range-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.ant-picker-range-arrow { - position: absolute; - z-index: 1; - display: none; - width: 10px; - height: 10px; - margin-left: 16.5px; - -webkit-box-shadow: 2px -2px 6px rgba(0, 0, 0, 0.06); - box-shadow: 2px -2px 6px rgba(0, 0, 0, 0.06); - -webkit-transition: left 0.3s ease-out; - transition: left 0.3s ease-out; -} -.ant-picker-range-arrow::after { - position: absolute; - top: 1px; - right: 1px; - width: 10px; - height: 10px; - border: 5px solid #f0f0f0; - border-color: #fff #fff transparent transparent; - content: ''; -} -.ant-picker-panel-container { - overflow: hidden; - vertical-align: top; - background: #fff; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - -webkit-transition: margin 0.3s; - transition: margin 0.3s; -} -.ant-picker-panel-container .ant-picker-panels { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - direction: ltr; -} -.ant-picker-panel-container .ant-picker-panel { - vertical-align: top; - background: transparent; - border-width: 0 0 1px 0; - border-radius: 0; -} -.ant-picker-panel-container .ant-picker-panel-focused { - border-color: #f0f0f0; -} -.ant-picker-rtl { - direction: rtl; -} -.ant-picker-rtl .ant-picker-suffix { - margin-right: 4px; - margin-left: 0; -} -.ant-picker-rtl .ant-picker-clear { - right: auto; - left: 0; -} -.ant-picker-rtl .ant-picker-separator { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} -.ant-picker-panel-rtl .ant-picker-header-view button:not(:first-child) { - margin-right: 8px; - margin-left: 0; -} -.ant-picker-rtl.ant-picker-range .ant-picker-clear { - right: auto; - left: 11px; -} -.ant-picker-rtl.ant-picker-range .ant-picker-active-bar { - margin-right: 11px; - margin-left: 0; -} -.ant-picker-dropdown-rtl .ant-picker-ranges { - text-align: right; -} -.ant-picker-dropdown-rtl .ant-picker-ranges .ant-picker-ok { - float: left; - margin-right: 8px; - margin-left: 0; -} -.ant-picker-panel-rtl { - direction: rtl; -} -.ant-picker-panel-rtl .ant-picker-prev-icon, -.ant-picker-panel-rtl .ant-picker-super-prev-icon { - -webkit-transform: rotate(135deg); - transform: rotate(135deg); -} -.ant-picker-panel-rtl .ant-picker-next-icon, -.ant-picker-panel-rtl .ant-picker-super-next-icon { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); -} -.ant-picker-cell .ant-picker-cell-inner { - position: relative; - z-index: 2; - display: inline-block; - min-width: 24px; - height: 24px; - line-height: 24px; - border-radius: 2px; - -webkit-transition: background 0.3s, border 0.3s; - transition: background 0.3s, border 0.3s; -} -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-start::before { - right: 50%; - left: 0; -} -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-end::before { - right: 0; - left: 50%; -} -.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-start .ant-picker-cell-inner::after { - right: 0; - left: -7px; -} -.ant-picker-panel-rtl .ant-picker-date-panel .ant-picker-cell-in-view.ant-picker-cell-in-range.ant-picker-cell-range-hover-end .ant-picker-cell-inner::after { - right: -7px; - left: 0; -} -.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-start::after { - right: 0; - left: 50%; -} -.ant-picker-panel-rtl .ant-picker-cell-range-hover.ant-picker-cell-range-end::after { - right: 50%; - left: 0; -} -.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:first-child::after, -.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after, -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-start:not(.ant-picker-cell-range-hover-edge-start-near-range)::after, -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-start::after { - right: 6px; - left: 0; - border-right: 1px dashed #7ec1ff; - border-left: none; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} -.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover:last-child::after, -.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after, -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-edge-end:not(.ant-picker-cell-range-hover-edge-end-near-range)::after, -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after { - right: 0; - left: 6px; - border-right: none; - border-left: 1px dashed #7ec1ff; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} -.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::after, -.ant-picker-panel-rtl .ant-picker-cell-in-view.ant-picker-cell-range-hover-start.ant-picker-cell-in-view.ant-picker-cell-range-hover-end::after { - right: 6px; - border-right: 1px dashed #7ec1ff; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} -.ant-picker-panel-rtl tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-end:first-child::after { - left: 6px; - border-left: 1px dashed #7ec1ff; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} -.ant-picker-panel-rtl .ant-picker-time-panel { - direction: ltr; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-tag { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; - height: auto; - margin-right: 8px; - padding: 0 7px; - font-size: 12px; - line-height: 20px; - white-space: nowrap; - background: #fafafa; - border: 1px solid #d9d9d9; - border-radius: 2px; - cursor: default; - opacity: 1; - -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.ant-tag:hover { - opacity: 0.85; -} -.ant-tag, -.ant-tag a, -.ant-tag a:hover { - color: rgba(0, 0, 0, 0.65); -} -.ant-tag > a:first-child:last-child { - display: inline-block; - margin: 0 -8px; - padding: 0 8px; -} -.ant-tag-close-icon { - display: inline-block; - font-size: 10px; - margin-left: 3px; - color: rgba(0, 0, 0, 0.45); - cursor: pointer; - -webkit-transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: all 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.ant-tag-close-icon:hover { - color: rgba(0, 0, 0, 0.85); -} -.ant-tag-has-color { - border-color: transparent; -} -.ant-tag-has-color, -.ant-tag-has-color a, -.ant-tag-has-color a:hover, -.ant-tag-has-color .anticon-close, -.ant-tag-has-color .anticon-close:hover { - color: #fff; -} -.ant-tag-checkable { - background-color: transparent; - border-color: transparent; - cursor: pointer; -} -.ant-tag-checkable:not(.ant-tag-checkable-checked):hover { - color: #1890ff; -} -.ant-tag-checkable:active, -.ant-tag-checkable-checked { - color: #fff; -} -.ant-tag-checkable-checked { - background-color: #1890ff; -} -.ant-tag-checkable:active { - background-color: #096dd9; -} -.ant-tag-hidden { - display: none; -} -.ant-tag-pink { - color: #eb2f96; - background: #fff0f6; - border-color: #ffadd2; -} -.ant-tag-pink-inverse { - color: #fff; - background: #eb2f96; - border-color: #eb2f96; -} -.ant-tag-magenta { - color: #eb2f96; - background: #fff0f6; - border-color: #ffadd2; -} -.ant-tag-magenta-inverse { - color: #fff; - background: #eb2f96; - border-color: #eb2f96; -} -.ant-tag-red { - color: #f5222d; - background: #fff1f0; - border-color: #ffa39e; -} -.ant-tag-red-inverse { - color: #fff; - background: #f5222d; - border-color: #f5222d; -} -.ant-tag-volcano { - color: #fa541c; - background: #fff2e8; - border-color: #ffbb96; -} -.ant-tag-volcano-inverse { - color: #fff; - background: #fa541c; - border-color: #fa541c; -} -.ant-tag-orange { - color: #fa8c16; - background: #fff7e6; - border-color: #ffd591; -} -.ant-tag-orange-inverse { - color: #fff; - background: #fa8c16; - border-color: #fa8c16; -} -.ant-tag-yellow { - color: #fadb14; - background: #feffe6; - border-color: #fffb8f; -} -.ant-tag-yellow-inverse { - color: #fff; - background: #fadb14; - border-color: #fadb14; -} -.ant-tag-gold { - color: #faad14; - background: #fffbe6; - border-color: #ffe58f; -} -.ant-tag-gold-inverse { - color: #fff; - background: #faad14; - border-color: #faad14; -} -.ant-tag-cyan { - color: #13c2c2; - background: #e6fffb; - border-color: #87e8de; -} -.ant-tag-cyan-inverse { - color: #fff; - background: #13c2c2; - border-color: #13c2c2; -} -.ant-tag-lime { - color: #a0d911; - background: #fcffe6; - border-color: #eaff8f; -} -.ant-tag-lime-inverse { - color: #fff; - background: #a0d911; - border-color: #a0d911; -} -.ant-tag-green { - color: #52c41a; - background: #f6ffed; - border-color: #b7eb8f; -} -.ant-tag-green-inverse { - color: #fff; - background: #52c41a; - border-color: #52c41a; -} -.ant-tag-blue { - color: #1890ff; - background: #e6f7ff; - border-color: #91d5ff; -} -.ant-tag-blue-inverse { - color: #fff; - background: #1890ff; - border-color: #1890ff; -} -.ant-tag-geekblue { - color: #2f54eb; - background: #f0f5ff; - border-color: #adc6ff; -} -.ant-tag-geekblue-inverse { - color: #fff; - background: #2f54eb; - border-color: #2f54eb; -} -.ant-tag-purple { - color: #722ed1; - background: #f9f0ff; - border-color: #d3adf7; -} -.ant-tag-purple-inverse { - color: #fff; - background: #722ed1; - border-color: #722ed1; -} -.ant-tag-success { - color: #52c41a; - background: #f6ffed; - border-color: #b7eb8f; -} -.ant-tag-processing { - color: #1890ff; - background: #e6f7ff; - border-color: #91d5ff; -} -.ant-tag-error { - color: #f5222d; - background: #fff1f0; - border-color: #ffa39e; -} -.ant-tag-warning { - color: #fa8c16; - background: #fff7e6; - border-color: #ffd591; -} -.ant-tag > .anticon + span, -.ant-tag > span + .anticon { - margin-left: 7px; -} -.ant-tag-rtl { - margin-right: 0; - margin-left: 8px; - direction: rtl; - text-align: right; -} -.ant-tag-rtl .ant-tag-close-icon { - margin-right: 3px; - margin-left: 0; -} -.ant-tag-rtl.ant-tag > .anticon + span, -.ant-tag-rtl.ant-tag > span + .anticon { - margin-right: 7px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-card { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - background: #fff; - border-radius: 2px; -} -.ant-card-rtl { - direction: rtl; -} -.ant-card-hoverable { - cursor: pointer; - -webkit-transition: border-color 0.3s, -webkit-box-shadow 0.3s; - transition: border-color 0.3s, -webkit-box-shadow 0.3s; - transition: box-shadow 0.3s, border-color 0.3s; - transition: box-shadow 0.3s, border-color 0.3s, -webkit-box-shadow 0.3s; -} -.ant-card-hoverable:hover { - border-color: transparent; - -webkit-box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); - box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); -} -.ant-card-bordered { - border: 1px solid #f0f0f0; -} -.ant-card-head { - min-height: 48px; - margin-bottom: -1px; - padding: 0 24px; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - font-size: 16px; - background: transparent; - border-bottom: 1px solid #f0f0f0; - border-radius: 2px 2px 0 0; -} -.ant-card-head::before { - display: table; - content: ''; -} -.ant-card-head::after { - display: table; - clear: both; - content: ''; -} -.ant-card-head-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-card-head-title { - display: inline-block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - padding: 16px 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-card-head .ant-tabs { - clear: both; - margin-bottom: -17px; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; -} -.ant-card-head .ant-tabs-bar { - border-bottom: 1px solid #f0f0f0; -} -.ant-card-extra { - float: right; - margin-left: auto; - padding: 16px 0; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; -} -.ant-card-rtl .ant-card-extra { - margin-right: auto; - margin-left: 0; -} -.ant-card-body { - padding: 24px; -} -.ant-card-body::before { - display: table; - content: ''; -} -.ant-card-body::after { - display: table; - clear: both; - content: ''; -} -.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body { - margin: -1px 0 0 -1px; - padding: 0; -} -.ant-card-grid { - float: left; - width: 33.33%; - padding: 24px; - border: 0; - border-radius: 0; - -webkit-box-shadow: 1px 0 0 0 #f0f0f0, 0 1px 0 0 #f0f0f0, 1px 1px 0 0 #f0f0f0, 1px 0 0 0 #f0f0f0 inset, 0 1px 0 0 #f0f0f0 inset; - box-shadow: 1px 0 0 0 #f0f0f0, 0 1px 0 0 #f0f0f0, 1px 1px 0 0 #f0f0f0, 1px 0 0 0 #f0f0f0 inset, 0 1px 0 0 #f0f0f0 inset; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-card-rtl .ant-card-grid { - float: right; -} -.ant-card-grid-hoverable:hover { - position: relative; - z-index: 1; - -webkit-box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); - box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); -} -.ant-card-contain-tabs > .ant-card-head .ant-card-head-title { - min-height: 32px; - padding-bottom: 0; -} -.ant-card-contain-tabs > .ant-card-head .ant-card-extra { - padding-bottom: 0; -} -.ant-card-bordered .ant-card-cover { - margin-right: -1px; - margin-left: -1px; -} -.ant-card-cover > * { - display: block; - width: 100%; -} -.ant-card-cover img { - border-radius: 2px 2px 0 0; -} -.ant-card-actions { - margin: 0; - padding: 0; - list-style: none; - background: #fafafa; - border-top: 1px solid #f0f0f0; -} -.ant-card-actions::before { - display: table; - content: ''; -} -.ant-card-actions::after { - display: table; - clear: both; - content: ''; -} -.ant-card-actions > li { - float: left; - margin: 12px 0; - color: rgba(0, 0, 0, 0.45); - text-align: center; -} -.ant-card-rtl .ant-card-actions > li { - float: right; -} -.ant-card-actions > li > span { - position: relative; - display: block; - min-width: 32px; - font-size: 14px; - line-height: 1.5715; - cursor: pointer; -} -.ant-card-actions > li > span:hover { - color: #1890ff; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-card-actions > li > span a:not(.ant-btn), -.ant-card-actions > li > span > .anticon { - display: inline-block; - width: 100%; - color: rgba(0, 0, 0, 0.45); - line-height: 22px; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-card-actions > li > span a:not(.ant-btn):hover, -.ant-card-actions > li > span > .anticon:hover { - color: #1890ff; -} -.ant-card-actions > li > span > .anticon { - font-size: 16px; - line-height: 22px; -} -.ant-card-actions > li:not(:last-child) { - border-right: 1px solid #f0f0f0; -} -.ant-card-type-inner .ant-card-head { - padding: 0 24px; - background: #fafafa; -} -.ant-card-type-inner .ant-card-head-title { - padding: 12px 0; - font-size: 14px; -} -.ant-card-type-inner .ant-card-body { - padding: 16px 24px; -} -.ant-card-type-inner .ant-card-extra { - padding: 13.5px 0; -} -.ant-card-meta { - margin: -4px 0; -} -.ant-card-meta::before { - display: table; - content: ''; -} -.ant-card-meta::after { - display: table; - clear: both; - content: ''; -} -.ant-card-meta-avatar { - float: left; - padding-right: 16px; -} -.ant-card-rtl .ant-card-meta-avatar { - float: right; - padding-right: 0; - padding-left: 16px; -} -.ant-card-meta-detail { - overflow: hidden; -} -.ant-card-meta-detail > div:not(:last-child) { - margin-bottom: 8px; -} -.ant-card-meta-title { - overflow: hidden; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - font-size: 16px; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-card-meta-description { - color: rgba(0, 0, 0, 0.45); -} -.ant-card-loading { - overflow: hidden; -} -.ant-card-loading .ant-card-body { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-card-loading-content p { - margin: 0; -} -.ant-card-loading-block { - height: 14px; - margin: 4px 0; - background: -webkit-gradient(linear, left top, right top, from(rgba(207, 216, 220, 0.2)), color-stop(rgba(207, 216, 220, 0.4)), to(rgba(207, 216, 220, 0.2))); - background: linear-gradient(90deg, rgba(207, 216, 220, 0.2), rgba(207, 216, 220, 0.4), rgba(207, 216, 220, 0.2)); - background-size: 600% 600%; - border-radius: 2px; - -webkit-animation: card-loading 1.4s ease infinite; - animation: card-loading 1.4s ease infinite; -} -@-webkit-keyframes card-loading { - 0%, - 100% { - background-position: 0 50%; - } - 50% { - background-position: 100% 50%; - } -} -@keyframes card-loading { - 0%, - 100% { - background-position: 0 50%; - } - 50% { - background-position: 100% 50%; - } -} -.ant-card-small > .ant-card-head { - min-height: 36px; - padding: 0 12px; - font-size: 14px; -} -.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title { - padding: 8px 0; -} -.ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra { - padding: 8px 0; - font-size: 14px; -} -.ant-card-small > .ant-card-body { - padding: 12px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-tabs-small > .ant-tabs-nav .ant-tabs-tab { - padding: 8px 0; - font-size: 14px; -} -.ant-tabs-large > .ant-tabs-nav .ant-tabs-tab { - padding: 16px 0; - font-size: 16px; -} -.ant-tabs-card.ant-tabs-small > .ant-tabs-nav .ant-tabs-tab { - padding: 6px 16px; -} -.ant-tabs-card.ant-tabs-large > .ant-tabs-nav .ant-tabs-tab { - padding: 7px 16px 6px; -} -.ant-tabs-rtl { - direction: rtl; -} -.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab { - margin: 0 0 0 32px; -} -.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab:last-of-type { - margin-left: 0; -} -.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .anticon { - margin-right: 0; - margin-left: 12px; -} -.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove { - margin-right: 8px; - margin-left: -4px; -} -.ant-tabs-rtl .ant-tabs-nav .ant-tabs-tab .ant-tabs-tab-remove .anticon { - margin: 0; -} -.ant-tabs-rtl.ant-tabs-left > .ant-tabs-nav { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; -} -.ant-tabs-rtl.ant-tabs-left > .ant-tabs-content-holder { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; -} -.ant-tabs-rtl.ant-tabs-right > .ant-tabs-nav { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; -} -.ant-tabs-rtl.ant-tabs-right > .ant-tabs-content-holder { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; -} -.ant-tabs-rtl.ant-tabs-card.ant-tabs-top > .ant-tabs-nav button.ant-tabs-tab:not(:last-of-type), -.ant-tabs-rtl.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav button.ant-tabs-tab:not(:last-of-type) { - margin: 0 0 0 2px; -} -.ant-tabs-dropdown-rtl { - direction: rtl; -} -.ant-tabs-dropdown-rtl .ant-tabs-dropdown-menu-item { - text-align: right; -} -.ant-tabs-top, -.ant-tabs-bottom { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.ant-tabs-top > .ant-tabs-nav, -.ant-tabs-bottom > .ant-tabs-nav, -.ant-tabs-top > div > .ant-tabs-nav, -.ant-tabs-bottom > div > .ant-tabs-nav { - margin: 0 0 16px 0; -} -.ant-tabs-top > .ant-tabs-nav::before, -.ant-tabs-bottom > .ant-tabs-nav::before, -.ant-tabs-top > div > .ant-tabs-nav::before, -.ant-tabs-bottom > div > .ant-tabs-nav::before { - position: absolute; - right: 0; - left: 0; - border-bottom: 1px solid #f0f0f0; - content: ''; -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-ink-bar { - height: 2px; -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar-animated, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-ink-bar-animated, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar-animated, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-ink-bar-animated { - -webkit-transition: width 0.3s, left 0.3s, right 0.3s; - transition: width 0.3s, left 0.3s, right 0.3s; -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::after { - top: 0; - bottom: 0; - width: 30px; -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::before { - left: 0; - -webkit-box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.08); - box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.08); -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap::after { - right: 0; - -webkit-box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.08); - box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.08); -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-left::before { - opacity: 1; -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after, -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-right::after { - opacity: 1; -} -.ant-tabs-top > .ant-tabs-nav::before, -.ant-tabs-top > div > .ant-tabs-nav::before { - bottom: 0; -} -.ant-tabs-top > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-ink-bar { - bottom: 0; -} -.ant-tabs-bottom > .ant-tabs-nav, -.ant-tabs-bottom > div > .ant-tabs-nav { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - margin-top: 16px; - margin-bottom: 0; -} -.ant-tabs-bottom > .ant-tabs-nav::before, -.ant-tabs-bottom > div > .ant-tabs-nav::before { - top: 0; -} -.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-ink-bar { - top: 0; -} -.ant-tabs-bottom > .ant-tabs-content-holder, -.ant-tabs-bottom > div > .ant-tabs-content-holder { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; -} -.ant-tabs-left > .ant-tabs-nav, -.ant-tabs-right > .ant-tabs-nav, -.ant-tabs-left > div > .ant-tabs-nav, -.ant-tabs-right > div > .ant-tabs-nav { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - min-width: 50px; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab { - margin: 0 0 16px 0; - padding: 8px 24px; - text-align: center; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab:last-of-type, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab:last-of-type, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab:last-of-type, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab:last-of-type { - margin-bottom: 0; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::after { - right: 0; - left: 0; - height: 30px; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::before { - top: 0; - -webkit-box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, 0.08); - box-shadow: inset 0 10px 8px -8px rgba(0, 0, 0, 0.08); -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap::after { - bottom: 0; - -webkit-box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08); - box-shadow: inset 0 -10px 8px -8px rgba(0, 0, 0, 0.08); -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-top::before { - opacity: 1; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-wrap.ant-tabs-nav-wrap-ping-bottom::after { - opacity: 1; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-ink-bar { - width: 2px; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar-animated, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-ink-bar-animated, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-ink-bar-animated, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-ink-bar-animated { - -webkit-transition: height 0.3s, top 0.3s; - transition: height 0.3s, top 0.3s; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-list, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-list, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-list, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-list, -.ant-tabs-left > .ant-tabs-nav .ant-tabs-nav-operations, -.ant-tabs-right > .ant-tabs-nav .ant-tabs-nav-operations, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-nav-operations, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-nav-operations { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.ant-tabs-left > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-ink-bar { - right: 0; -} -.ant-tabs-left > .ant-tabs-content-holder, -.ant-tabs-left > div > .ant-tabs-content-holder { - margin-left: -1px; - border-left: 1px solid #f0f0f0; -} -.ant-tabs-left > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane, -.ant-tabs-left > div > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane { - padding-left: 24px; -} -.ant-tabs-right > .ant-tabs-nav, -.ant-tabs-right > div > .ant-tabs-nav { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; -} -.ant-tabs-right > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-ink-bar { - left: 0; -} -.ant-tabs-right > .ant-tabs-content-holder, -.ant-tabs-right > div > .ant-tabs-content-holder { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - margin-right: -1px; - border-right: 1px solid #f0f0f0; -} -.ant-tabs-right > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane, -.ant-tabs-right > div > .ant-tabs-content-holder > .ant-tabs-content > .ant-tabs-tabpane { - padding-right: 24px; -} -.ant-tabs-dropdown { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - top: -9999px; - left: -9999px; - z-index: 1050; - display: block; -} -.ant-tabs-dropdown-hidden { - display: none; -} -.ant-tabs-dropdown-menu { - max-height: 200px; - margin: 0; - padding: 4px 0; - overflow-x: hidden; - overflow-y: auto; - text-align: left; - list-style-type: none; - background-color: #fff; - background-clip: padding-box; - border-radius: 2px; - outline: none; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-tabs-dropdown-menu-item { - min-width: 120px; - margin: 0; - padding: 5px 12px; - overflow: hidden; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; - line-height: 22px; - white-space: nowrap; - text-overflow: ellipsis; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-tabs-dropdown-menu-item:hover { - background: #f5f5f5; -} -.ant-tabs-dropdown-menu-item-disabled, -.ant-tabs-dropdown-menu-item-disabled:hover { - color: rgba(0, 0, 0, 0.25); - background: transparent; - cursor: not-allowed; -} -.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab { - margin: 0; - padding: 8px 16px; - background: #fafafa; - border: 1px solid #f0f0f0; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab-active, -.ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab-active { - color: #1890ff; - background: #fff; -} -.ant-tabs-card > .ant-tabs-nav .ant-tabs-ink-bar, -.ant-tabs-card > div > .ant-tabs-nav .ant-tabs-ink-bar { - visibility: hidden; -} -.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type), -.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type), -.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type), -.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type) { - margin-right: 2px; -} -.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab { - border-radius: 2px 2px 0 0; -} -.ant-tabs-card.ant-tabs-top > .ant-tabs-nav .ant-tabs-tab-active, -.ant-tabs-card.ant-tabs-top > div > .ant-tabs-nav .ant-tabs-tab-active { - border-bottom-color: #fff; -} -.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab { - border-radius: 0 0 2px 2px; -} -.ant-tabs-card.ant-tabs-bottom > .ant-tabs-nav .ant-tabs-tab-active, -.ant-tabs-card.ant-tabs-bottom > div > .ant-tabs-nav .ant-tabs-tab-active { - border-top-color: #fff; -} -.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type), -.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type), -.ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type), -.ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab:not(:last-of-type) { - margin-bottom: 2px; -} -.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab { - border-radius: 2px 0 0 2px; -} -.ant-tabs-card.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab-active, -.ant-tabs-card.ant-tabs-left > div > .ant-tabs-nav .ant-tabs-tab-active { - border-right-color: #fff; -} -.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab, -.ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab { - border-radius: 0 2px 2px 0; -} -.ant-tabs-card.ant-tabs-right > .ant-tabs-nav .ant-tabs-tab-active, -.ant-tabs-card.ant-tabs-right > div > .ant-tabs-nav .ant-tabs-tab-active { - border-left-color: #fff; -} -.ant-tabs { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - overflow: hidden; -} -.ant-tabs > .ant-tabs-nav, -.ant-tabs > div > .ant-tabs-nav { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-wrap, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap { - position: relative; - display: inline-block; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - -ms-flex-item-align: stretch; - align-self: stretch; - overflow: hidden; - white-space: nowrap; - -webkit-transform: translate(0); - transform: translate(0); -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap::before, -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-wrap::after, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-wrap::after { - position: absolute; - z-index: 1; - opacity: 0; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; - content: ''; - pointer-events: none; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-list { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-operations, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-operations { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-item-align: stretch; - align-self: stretch; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-operations-hidden, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-operations-hidden { - position: absolute; - visibility: hidden; - pointer-events: none; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-more, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-more { - position: relative; - padding: 8px 16px; - background: transparent; - border: 0; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-more::after, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-more::after { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; - -webkit-transform: translateY(100%); - transform: translateY(100%); - content: ''; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add { - min-width: 40px; - padding: 0 8px; - background: #fafafa; - border: 1px solid #f0f0f0; - border-radius: 2px 2px 0 0; - outline: none; - cursor: pointer; - -webkit-transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); - transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:hover, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:hover { - color: #40a9ff; -} -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:active, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:active, -.ant-tabs > .ant-tabs-nav .ant-tabs-nav-add:focus, -.ant-tabs > div > .ant-tabs-nav .ant-tabs-nav-add:focus { - color: #096dd9; -} -.ant-tabs-extra-content { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-tabs-centered > .ant-tabs-nav .ant-tabs-nav-wrap:not([class*='ant-tabs-nav-wrap-ping']), -.ant-tabs-centered > div > .ant-tabs-nav .ant-tabs-nav-wrap:not([class*='ant-tabs-nav-wrap-ping']) { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.ant-tabs-ink-bar { - position: absolute; - background: #1890ff; - pointer-events: none; -} -.ant-tabs-tab { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: 0 32px 0 0; - padding: 12px 0; - font-size: 14px; - background: transparent; - border: 0; - outline: none; - cursor: pointer; -} -.ant-tabs-tab:last-of-type { - margin-right: 0; - margin-left: 0; -} -.ant-tabs-tab-btn:focus, -.ant-tabs-tab-remove:focus, -.ant-tabs-tab-btn:active, -.ant-tabs-tab-remove:active { - color: #096dd9; -} -.ant-tabs-tab-btn { - outline: none; -} -.ant-tabs-tab-remove { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - margin-right: -4px; - margin-left: 8px; - color: rgba(0, 0, 0, 0.45); - font-size: 12px; - background: transparent; - border: none; - outline: none; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-tabs-tab-remove:hover { - color: rgba(0, 0, 0, 0.85); -} -.ant-tabs-tab:hover { - color: #40a9ff; -} -.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { - color: #1890ff; - font-weight: 500; -} -.ant-tabs-tab.ant-tabs-tab-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-tabs-tab .ant-tabs-tab-remove .anticon { - margin: 0; -} -.ant-tabs-tab .anticon { - margin-right: 12px; -} -.ant-tabs-content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; -} -.ant-tabs-content-holder { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - min-width: 0; - min-height: 0; -} -.ant-tabs-content-animated { - -webkit-transition: margin 0.3s; - transition: margin 0.3s; -} -.ant-tabs-tabpane { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - width: 100%; - outline: none; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; -} -.ant-row::before, -.ant-row::after { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.ant-row-start { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; -} -.ant-row-center { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.ant-row-end { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; -} -.ant-row-space-between { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} -.ant-row-space-around { - -ms-flex-pack: distribute; - justify-content: space-around; -} -.ant-row-top { - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} -.ant-row-middle { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-row-bottom { - -webkit-box-align: end; - -ms-flex-align: end; - align-items: flex-end; -} -.ant-col { - position: relative; - max-width: 100%; - min-height: 1px; -} -.ant-col-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; -} -.ant-col-push-24 { - left: 100%; -} -.ant-col-pull-24 { - right: 100%; -} -.ant-col-offset-24 { - margin-left: 100%; -} -.ant-col-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; -} -.ant-col-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; -} -.ant-col-push-23 { - left: 95.83333333%; -} -.ant-col-pull-23 { - right: 95.83333333%; -} -.ant-col-offset-23 { - margin-left: 95.83333333%; -} -.ant-col-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; -} -.ant-col-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; -} -.ant-col-push-22 { - left: 91.66666667%; -} -.ant-col-pull-22 { - right: 91.66666667%; -} -.ant-col-offset-22 { - margin-left: 91.66666667%; -} -.ant-col-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; -} -.ant-col-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; -} -.ant-col-push-21 { - left: 87.5%; -} -.ant-col-pull-21 { - right: 87.5%; -} -.ant-col-offset-21 { - margin-left: 87.5%; -} -.ant-col-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; -} -.ant-col-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; -} -.ant-col-push-20 { - left: 83.33333333%; -} -.ant-col-pull-20 { - right: 83.33333333%; -} -.ant-col-offset-20 { - margin-left: 83.33333333%; -} -.ant-col-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; -} -.ant-col-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; -} -.ant-col-push-19 { - left: 79.16666667%; -} -.ant-col-pull-19 { - right: 79.16666667%; -} -.ant-col-offset-19 { - margin-left: 79.16666667%; -} -.ant-col-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; -} -.ant-col-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; -} -.ant-col-push-18 { - left: 75%; -} -.ant-col-pull-18 { - right: 75%; -} -.ant-col-offset-18 { - margin-left: 75%; -} -.ant-col-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; -} -.ant-col-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; -} -.ant-col-push-17 { - left: 70.83333333%; -} -.ant-col-pull-17 { - right: 70.83333333%; -} -.ant-col-offset-17 { - margin-left: 70.83333333%; -} -.ant-col-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; -} -.ant-col-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; -} -.ant-col-push-16 { - left: 66.66666667%; -} -.ant-col-pull-16 { - right: 66.66666667%; -} -.ant-col-offset-16 { - margin-left: 66.66666667%; -} -.ant-col-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; -} -.ant-col-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; -} -.ant-col-push-15 { - left: 62.5%; -} -.ant-col-pull-15 { - right: 62.5%; -} -.ant-col-offset-15 { - margin-left: 62.5%; -} -.ant-col-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; -} -.ant-col-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; -} -.ant-col-push-14 { - left: 58.33333333%; -} -.ant-col-pull-14 { - right: 58.33333333%; -} -.ant-col-offset-14 { - margin-left: 58.33333333%; -} -.ant-col-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; -} -.ant-col-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; -} -.ant-col-push-13 { - left: 54.16666667%; -} -.ant-col-pull-13 { - right: 54.16666667%; -} -.ant-col-offset-13 { - margin-left: 54.16666667%; -} -.ant-col-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; -} -.ant-col-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; -} -.ant-col-push-12 { - left: 50%; -} -.ant-col-pull-12 { - right: 50%; -} -.ant-col-offset-12 { - margin-left: 50%; -} -.ant-col-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; -} -.ant-col-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; -} -.ant-col-push-11 { - left: 45.83333333%; -} -.ant-col-pull-11 { - right: 45.83333333%; -} -.ant-col-offset-11 { - margin-left: 45.83333333%; -} -.ant-col-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; -} -.ant-col-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; -} -.ant-col-push-10 { - left: 41.66666667%; -} -.ant-col-pull-10 { - right: 41.66666667%; -} -.ant-col-offset-10 { - margin-left: 41.66666667%; -} -.ant-col-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; -} -.ant-col-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; -} -.ant-col-push-9 { - left: 37.5%; -} -.ant-col-pull-9 { - right: 37.5%; -} -.ant-col-offset-9 { - margin-left: 37.5%; -} -.ant-col-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; -} -.ant-col-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; -} -.ant-col-push-8 { - left: 33.33333333%; -} -.ant-col-pull-8 { - right: 33.33333333%; -} -.ant-col-offset-8 { - margin-left: 33.33333333%; -} -.ant-col-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; -} -.ant-col-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; -} -.ant-col-push-7 { - left: 29.16666667%; -} -.ant-col-pull-7 { - right: 29.16666667%; -} -.ant-col-offset-7 { - margin-left: 29.16666667%; -} -.ant-col-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; -} -.ant-col-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; -} -.ant-col-push-6 { - left: 25%; -} -.ant-col-pull-6 { - right: 25%; -} -.ant-col-offset-6 { - margin-left: 25%; -} -.ant-col-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; -} -.ant-col-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; -} -.ant-col-push-5 { - left: 20.83333333%; -} -.ant-col-pull-5 { - right: 20.83333333%; -} -.ant-col-offset-5 { - margin-left: 20.83333333%; -} -.ant-col-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; -} -.ant-col-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; -} -.ant-col-push-4 { - left: 16.66666667%; -} -.ant-col-pull-4 { - right: 16.66666667%; -} -.ant-col-offset-4 { - margin-left: 16.66666667%; -} -.ant-col-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; -} -.ant-col-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; -} -.ant-col-push-3 { - left: 12.5%; -} -.ant-col-pull-3 { - right: 12.5%; -} -.ant-col-offset-3 { - margin-left: 12.5%; -} -.ant-col-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; -} -.ant-col-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; -} -.ant-col-push-2 { - left: 8.33333333%; -} -.ant-col-pull-2 { - right: 8.33333333%; -} -.ant-col-offset-2 { - margin-left: 8.33333333%; -} -.ant-col-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; -} -.ant-col-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; -} -.ant-col-push-1 { - left: 4.16666667%; -} -.ant-col-pull-1 { - right: 4.16666667%; -} -.ant-col-offset-1 { - margin-left: 4.16666667%; -} -.ant-col-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; -} -.ant-col-0 { - display: none; -} -.ant-col-push-0 { - left: auto; -} -.ant-col-pull-0 { - right: auto; -} -.ant-col-push-0 { - left: auto; -} -.ant-col-pull-0 { - right: auto; -} -.ant-col-offset-0 { - margin-left: 0; -} -.ant-col-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; -} -.ant-col-push-0.ant-col-rtl { - right: auto; -} -.ant-col-pull-0.ant-col-rtl { - left: auto; -} -.ant-col-push-0.ant-col-rtl { - right: auto; -} -.ant-col-pull-0.ant-col-rtl { - left: auto; -} -.ant-col-offset-0.ant-col-rtl { - margin-right: 0; -} -.ant-col-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; -} -.ant-col-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; -} -.ant-col-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; -} -.ant-col-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; -} -.ant-col-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; -} -.ant-col-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; -} -.ant-col-push-3.ant-col-rtl { - right: 12.5%; - left: auto; -} -.ant-col-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; -} -.ant-col-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; -} -.ant-col-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; -} -.ant-col-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; -} -.ant-col-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; -} -.ant-col-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; -} -.ant-col-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; -} -.ant-col-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; -} -.ant-col-push-6.ant-col-rtl { - right: 25%; - left: auto; -} -.ant-col-pull-6.ant-col-rtl { - right: auto; - left: 25%; -} -.ant-col-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; -} -.ant-col-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; -} -.ant-col-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; -} -.ant-col-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; -} -.ant-col-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; -} -.ant-col-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; -} -.ant-col-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; -} -.ant-col-push-9.ant-col-rtl { - right: 37.5%; - left: auto; -} -.ant-col-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; -} -.ant-col-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; -} -.ant-col-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; -} -.ant-col-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; -} -.ant-col-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; -} -.ant-col-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; -} -.ant-col-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; -} -.ant-col-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; -} -.ant-col-push-12.ant-col-rtl { - right: 50%; - left: auto; -} -.ant-col-pull-12.ant-col-rtl { - right: auto; - left: 50%; -} -.ant-col-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; -} -.ant-col-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; -} -.ant-col-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; -} -.ant-col-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; -} -.ant-col-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; -} -.ant-col-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; -} -.ant-col-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; -} -.ant-col-push-15.ant-col-rtl { - right: 62.5%; - left: auto; -} -.ant-col-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; -} -.ant-col-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; -} -.ant-col-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; -} -.ant-col-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; -} -.ant-col-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; -} -.ant-col-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; -} -.ant-col-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; -} -.ant-col-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; -} -.ant-col-push-18.ant-col-rtl { - right: 75%; - left: auto; -} -.ant-col-pull-18.ant-col-rtl { - right: auto; - left: 75%; -} -.ant-col-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; -} -.ant-col-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; -} -.ant-col-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; -} -.ant-col-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; -} -.ant-col-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; -} -.ant-col-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; -} -.ant-col-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; -} -.ant-col-push-21.ant-col-rtl { - right: 87.5%; - left: auto; -} -.ant-col-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; -} -.ant-col-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; -} -.ant-col-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; -} -.ant-col-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; -} -.ant-col-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; -} -.ant-col-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; -} -.ant-col-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; -} -.ant-col-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; -} -.ant-col-push-24.ant-col-rtl { - right: 100%; - left: auto; -} -.ant-col-pull-24.ant-col-rtl { - right: auto; - left: 100%; -} -.ant-col-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; -} -.ant-col-xs-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; -} -.ant-col-xs-push-24 { - left: 100%; -} -.ant-col-xs-pull-24 { - right: 100%; -} -.ant-col-xs-offset-24 { - margin-left: 100%; -} -.ant-col-xs-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; -} -.ant-col-xs-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; -} -.ant-col-xs-push-23 { - left: 95.83333333%; -} -.ant-col-xs-pull-23 { - right: 95.83333333%; -} -.ant-col-xs-offset-23 { - margin-left: 95.83333333%; -} -.ant-col-xs-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; -} -.ant-col-xs-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; -} -.ant-col-xs-push-22 { - left: 91.66666667%; -} -.ant-col-xs-pull-22 { - right: 91.66666667%; -} -.ant-col-xs-offset-22 { - margin-left: 91.66666667%; -} -.ant-col-xs-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; -} -.ant-col-xs-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; -} -.ant-col-xs-push-21 { - left: 87.5%; -} -.ant-col-xs-pull-21 { - right: 87.5%; -} -.ant-col-xs-offset-21 { - margin-left: 87.5%; -} -.ant-col-xs-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; -} -.ant-col-xs-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; -} -.ant-col-xs-push-20 { - left: 83.33333333%; -} -.ant-col-xs-pull-20 { - right: 83.33333333%; -} -.ant-col-xs-offset-20 { - margin-left: 83.33333333%; -} -.ant-col-xs-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; -} -.ant-col-xs-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; -} -.ant-col-xs-push-19 { - left: 79.16666667%; -} -.ant-col-xs-pull-19 { - right: 79.16666667%; -} -.ant-col-xs-offset-19 { - margin-left: 79.16666667%; -} -.ant-col-xs-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; -} -.ant-col-xs-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; -} -.ant-col-xs-push-18 { - left: 75%; -} -.ant-col-xs-pull-18 { - right: 75%; -} -.ant-col-xs-offset-18 { - margin-left: 75%; -} -.ant-col-xs-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; -} -.ant-col-xs-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; -} -.ant-col-xs-push-17 { - left: 70.83333333%; -} -.ant-col-xs-pull-17 { - right: 70.83333333%; -} -.ant-col-xs-offset-17 { - margin-left: 70.83333333%; -} -.ant-col-xs-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; -} -.ant-col-xs-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; -} -.ant-col-xs-push-16 { - left: 66.66666667%; -} -.ant-col-xs-pull-16 { - right: 66.66666667%; -} -.ant-col-xs-offset-16 { - margin-left: 66.66666667%; -} -.ant-col-xs-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; -} -.ant-col-xs-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; -} -.ant-col-xs-push-15 { - left: 62.5%; -} -.ant-col-xs-pull-15 { - right: 62.5%; -} -.ant-col-xs-offset-15 { - margin-left: 62.5%; -} -.ant-col-xs-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; -} -.ant-col-xs-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; -} -.ant-col-xs-push-14 { - left: 58.33333333%; -} -.ant-col-xs-pull-14 { - right: 58.33333333%; -} -.ant-col-xs-offset-14 { - margin-left: 58.33333333%; -} -.ant-col-xs-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; -} -.ant-col-xs-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; -} -.ant-col-xs-push-13 { - left: 54.16666667%; -} -.ant-col-xs-pull-13 { - right: 54.16666667%; -} -.ant-col-xs-offset-13 { - margin-left: 54.16666667%; -} -.ant-col-xs-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; -} -.ant-col-xs-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; -} -.ant-col-xs-push-12 { - left: 50%; -} -.ant-col-xs-pull-12 { - right: 50%; -} -.ant-col-xs-offset-12 { - margin-left: 50%; -} -.ant-col-xs-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; -} -.ant-col-xs-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; -} -.ant-col-xs-push-11 { - left: 45.83333333%; -} -.ant-col-xs-pull-11 { - right: 45.83333333%; -} -.ant-col-xs-offset-11 { - margin-left: 45.83333333%; -} -.ant-col-xs-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; -} -.ant-col-xs-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; -} -.ant-col-xs-push-10 { - left: 41.66666667%; -} -.ant-col-xs-pull-10 { - right: 41.66666667%; -} -.ant-col-xs-offset-10 { - margin-left: 41.66666667%; -} -.ant-col-xs-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; -} -.ant-col-xs-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; -} -.ant-col-xs-push-9 { - left: 37.5%; -} -.ant-col-xs-pull-9 { - right: 37.5%; -} -.ant-col-xs-offset-9 { - margin-left: 37.5%; -} -.ant-col-xs-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; -} -.ant-col-xs-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; -} -.ant-col-xs-push-8 { - left: 33.33333333%; -} -.ant-col-xs-pull-8 { - right: 33.33333333%; -} -.ant-col-xs-offset-8 { - margin-left: 33.33333333%; -} -.ant-col-xs-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; -} -.ant-col-xs-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; -} -.ant-col-xs-push-7 { - left: 29.16666667%; -} -.ant-col-xs-pull-7 { - right: 29.16666667%; -} -.ant-col-xs-offset-7 { - margin-left: 29.16666667%; -} -.ant-col-xs-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; -} -.ant-col-xs-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; -} -.ant-col-xs-push-6 { - left: 25%; -} -.ant-col-xs-pull-6 { - right: 25%; -} -.ant-col-xs-offset-6 { - margin-left: 25%; -} -.ant-col-xs-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; -} -.ant-col-xs-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; -} -.ant-col-xs-push-5 { - left: 20.83333333%; -} -.ant-col-xs-pull-5 { - right: 20.83333333%; -} -.ant-col-xs-offset-5 { - margin-left: 20.83333333%; -} -.ant-col-xs-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; -} -.ant-col-xs-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; -} -.ant-col-xs-push-4 { - left: 16.66666667%; -} -.ant-col-xs-pull-4 { - right: 16.66666667%; -} -.ant-col-xs-offset-4 { - margin-left: 16.66666667%; -} -.ant-col-xs-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; -} -.ant-col-xs-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; -} -.ant-col-xs-push-3 { - left: 12.5%; -} -.ant-col-xs-pull-3 { - right: 12.5%; -} -.ant-col-xs-offset-3 { - margin-left: 12.5%; -} -.ant-col-xs-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; -} -.ant-col-xs-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; -} -.ant-col-xs-push-2 { - left: 8.33333333%; -} -.ant-col-xs-pull-2 { - right: 8.33333333%; -} -.ant-col-xs-offset-2 { - margin-left: 8.33333333%; -} -.ant-col-xs-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; -} -.ant-col-xs-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; -} -.ant-col-xs-push-1 { - left: 4.16666667%; -} -.ant-col-xs-pull-1 { - right: 4.16666667%; -} -.ant-col-xs-offset-1 { - margin-left: 4.16666667%; -} -.ant-col-xs-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; -} -.ant-col-xs-0 { - display: none; -} -.ant-col-push-0 { - left: auto; -} -.ant-col-pull-0 { - right: auto; -} -.ant-col-xs-push-0 { - left: auto; -} -.ant-col-xs-pull-0 { - right: auto; -} -.ant-col-xs-offset-0 { - margin-left: 0; -} -.ant-col-xs-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; -} -.ant-col-push-0.ant-col-rtl { - right: auto; -} -.ant-col-pull-0.ant-col-rtl { - left: auto; -} -.ant-col-xs-push-0.ant-col-rtl { - right: auto; -} -.ant-col-xs-pull-0.ant-col-rtl { - left: auto; -} -.ant-col-xs-offset-0.ant-col-rtl { - margin-right: 0; -} -.ant-col-xs-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; -} -.ant-col-xs-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; -} -.ant-col-xs-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; -} -.ant-col-xs-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; -} -.ant-col-xs-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; -} -.ant-col-xs-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; -} -.ant-col-xs-push-3.ant-col-rtl { - right: 12.5%; - left: auto; -} -.ant-col-xs-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; -} -.ant-col-xs-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; -} -.ant-col-xs-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; -} -.ant-col-xs-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; -} -.ant-col-xs-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; -} -.ant-col-xs-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; -} -.ant-col-xs-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; -} -.ant-col-xs-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; -} -.ant-col-xs-push-6.ant-col-rtl { - right: 25%; - left: auto; -} -.ant-col-xs-pull-6.ant-col-rtl { - right: auto; - left: 25%; -} -.ant-col-xs-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; -} -.ant-col-xs-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; -} -.ant-col-xs-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; -} -.ant-col-xs-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; -} -.ant-col-xs-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; -} -.ant-col-xs-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; -} -.ant-col-xs-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; -} -.ant-col-xs-push-9.ant-col-rtl { - right: 37.5%; - left: auto; -} -.ant-col-xs-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; -} -.ant-col-xs-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; -} -.ant-col-xs-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; -} -.ant-col-xs-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; -} -.ant-col-xs-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; -} -.ant-col-xs-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; -} -.ant-col-xs-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; -} -.ant-col-xs-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; -} -.ant-col-xs-push-12.ant-col-rtl { - right: 50%; - left: auto; -} -.ant-col-xs-pull-12.ant-col-rtl { - right: auto; - left: 50%; -} -.ant-col-xs-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; -} -.ant-col-xs-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; -} -.ant-col-xs-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; -} -.ant-col-xs-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; -} -.ant-col-xs-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; -} -.ant-col-xs-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; -} -.ant-col-xs-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; -} -.ant-col-xs-push-15.ant-col-rtl { - right: 62.5%; - left: auto; -} -.ant-col-xs-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; -} -.ant-col-xs-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; -} -.ant-col-xs-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; -} -.ant-col-xs-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; -} -.ant-col-xs-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; -} -.ant-col-xs-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; -} -.ant-col-xs-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; -} -.ant-col-xs-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; -} -.ant-col-xs-push-18.ant-col-rtl { - right: 75%; - left: auto; -} -.ant-col-xs-pull-18.ant-col-rtl { - right: auto; - left: 75%; -} -.ant-col-xs-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; -} -.ant-col-xs-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; -} -.ant-col-xs-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; -} -.ant-col-xs-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; -} -.ant-col-xs-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; -} -.ant-col-xs-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; -} -.ant-col-xs-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; -} -.ant-col-xs-push-21.ant-col-rtl { - right: 87.5%; - left: auto; -} -.ant-col-xs-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; -} -.ant-col-xs-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; -} -.ant-col-xs-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; -} -.ant-col-xs-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; -} -.ant-col-xs-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; -} -.ant-col-xs-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; -} -.ant-col-xs-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; -} -.ant-col-xs-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; -} -.ant-col-xs-push-24.ant-col-rtl { - right: 100%; - left: auto; -} -.ant-col-xs-pull-24.ant-col-rtl { - right: auto; - left: 100%; -} -.ant-col-xs-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; -} -@media (min-width: 576px) { - .ant-col-sm-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .ant-col-sm-push-24 { - left: 100%; - } - .ant-col-sm-pull-24 { - right: 100%; - } - .ant-col-sm-offset-24 { - margin-left: 100%; - } - .ant-col-sm-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; - } - .ant-col-sm-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; - } - .ant-col-sm-push-23 { - left: 95.83333333%; - } - .ant-col-sm-pull-23 { - right: 95.83333333%; - } - .ant-col-sm-offset-23 { - margin-left: 95.83333333%; - } - .ant-col-sm-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; - } - .ant-col-sm-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; - } - .ant-col-sm-push-22 { - left: 91.66666667%; - } - .ant-col-sm-pull-22 { - right: 91.66666667%; - } - .ant-col-sm-offset-22 { - margin-left: 91.66666667%; - } - .ant-col-sm-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; - } - .ant-col-sm-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; - } - .ant-col-sm-push-21 { - left: 87.5%; - } - .ant-col-sm-pull-21 { - right: 87.5%; - } - .ant-col-sm-offset-21 { - margin-left: 87.5%; - } - .ant-col-sm-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; - } - .ant-col-sm-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; - } - .ant-col-sm-push-20 { - left: 83.33333333%; - } - .ant-col-sm-pull-20 { - right: 83.33333333%; - } - .ant-col-sm-offset-20 { - margin-left: 83.33333333%; - } - .ant-col-sm-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; - } - .ant-col-sm-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; - } - .ant-col-sm-push-19 { - left: 79.16666667%; - } - .ant-col-sm-pull-19 { - right: 79.16666667%; - } - .ant-col-sm-offset-19 { - margin-left: 79.16666667%; - } - .ant-col-sm-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; - } - .ant-col-sm-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .ant-col-sm-push-18 { - left: 75%; - } - .ant-col-sm-pull-18 { - right: 75%; - } - .ant-col-sm-offset-18 { - margin-left: 75%; - } - .ant-col-sm-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; - } - .ant-col-sm-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; - } - .ant-col-sm-push-17 { - left: 70.83333333%; - } - .ant-col-sm-pull-17 { - right: 70.83333333%; - } - .ant-col-sm-offset-17 { - margin-left: 70.83333333%; - } - .ant-col-sm-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; - } - .ant-col-sm-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; - } - .ant-col-sm-push-16 { - left: 66.66666667%; - } - .ant-col-sm-pull-16 { - right: 66.66666667%; - } - .ant-col-sm-offset-16 { - margin-left: 66.66666667%; - } - .ant-col-sm-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; - } - .ant-col-sm-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; - } - .ant-col-sm-push-15 { - left: 62.5%; - } - .ant-col-sm-pull-15 { - right: 62.5%; - } - .ant-col-sm-offset-15 { - margin-left: 62.5%; - } - .ant-col-sm-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; - } - .ant-col-sm-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; - } - .ant-col-sm-push-14 { - left: 58.33333333%; - } - .ant-col-sm-pull-14 { - right: 58.33333333%; - } - .ant-col-sm-offset-14 { - margin-left: 58.33333333%; - } - .ant-col-sm-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; - } - .ant-col-sm-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; - } - .ant-col-sm-push-13 { - left: 54.16666667%; - } - .ant-col-sm-pull-13 { - right: 54.16666667%; - } - .ant-col-sm-offset-13 { - margin-left: 54.16666667%; - } - .ant-col-sm-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; - } - .ant-col-sm-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .ant-col-sm-push-12 { - left: 50%; - } - .ant-col-sm-pull-12 { - right: 50%; - } - .ant-col-sm-offset-12 { - margin-left: 50%; - } - .ant-col-sm-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; - } - .ant-col-sm-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; - } - .ant-col-sm-push-11 { - left: 45.83333333%; - } - .ant-col-sm-pull-11 { - right: 45.83333333%; - } - .ant-col-sm-offset-11 { - margin-left: 45.83333333%; - } - .ant-col-sm-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; - } - .ant-col-sm-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; - } - .ant-col-sm-push-10 { - left: 41.66666667%; - } - .ant-col-sm-pull-10 { - right: 41.66666667%; - } - .ant-col-sm-offset-10 { - margin-left: 41.66666667%; - } - .ant-col-sm-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; - } - .ant-col-sm-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; - } - .ant-col-sm-push-9 { - left: 37.5%; - } - .ant-col-sm-pull-9 { - right: 37.5%; - } - .ant-col-sm-offset-9 { - margin-left: 37.5%; - } - .ant-col-sm-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; - } - .ant-col-sm-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; - } - .ant-col-sm-push-8 { - left: 33.33333333%; - } - .ant-col-sm-pull-8 { - right: 33.33333333%; - } - .ant-col-sm-offset-8 { - margin-left: 33.33333333%; - } - .ant-col-sm-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; - } - .ant-col-sm-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; - } - .ant-col-sm-push-7 { - left: 29.16666667%; - } - .ant-col-sm-pull-7 { - right: 29.16666667%; - } - .ant-col-sm-offset-7 { - margin-left: 29.16666667%; - } - .ant-col-sm-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; - } - .ant-col-sm-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .ant-col-sm-push-6 { - left: 25%; - } - .ant-col-sm-pull-6 { - right: 25%; - } - .ant-col-sm-offset-6 { - margin-left: 25%; - } - .ant-col-sm-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; - } - .ant-col-sm-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; - } - .ant-col-sm-push-5 { - left: 20.83333333%; - } - .ant-col-sm-pull-5 { - right: 20.83333333%; - } - .ant-col-sm-offset-5 { - margin-left: 20.83333333%; - } - .ant-col-sm-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; - } - .ant-col-sm-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; - } - .ant-col-sm-push-4 { - left: 16.66666667%; - } - .ant-col-sm-pull-4 { - right: 16.66666667%; - } - .ant-col-sm-offset-4 { - margin-left: 16.66666667%; - } - .ant-col-sm-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; - } - .ant-col-sm-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; - } - .ant-col-sm-push-3 { - left: 12.5%; - } - .ant-col-sm-pull-3 { - right: 12.5%; - } - .ant-col-sm-offset-3 { - margin-left: 12.5%; - } - .ant-col-sm-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - } - .ant-col-sm-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; - } - .ant-col-sm-push-2 { - left: 8.33333333%; - } - .ant-col-sm-pull-2 { - right: 8.33333333%; - } - .ant-col-sm-offset-2 { - margin-left: 8.33333333%; - } - .ant-col-sm-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - } - .ant-col-sm-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; - } - .ant-col-sm-push-1 { - left: 4.16666667%; - } - .ant-col-sm-pull-1 { - right: 4.16666667%; - } - .ant-col-sm-offset-1 { - margin-left: 4.16666667%; - } - .ant-col-sm-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - } - .ant-col-sm-0 { - display: none; - } - .ant-col-push-0 { - left: auto; - } - .ant-col-pull-0 { - right: auto; - } - .ant-col-sm-push-0 { - left: auto; - } - .ant-col-sm-pull-0 { - right: auto; - } - .ant-col-sm-offset-0 { - margin-left: 0; - } - .ant-col-sm-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - } - .ant-col-push-0.ant-col-rtl { - right: auto; - } - .ant-col-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-sm-push-0.ant-col-rtl { - right: auto; - } - .ant-col-sm-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-sm-offset-0.ant-col-rtl { - margin-right: 0; - } - .ant-col-sm-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; - } - .ant-col-sm-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; - } - .ant-col-sm-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; - } - .ant-col-sm-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; - } - .ant-col-sm-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; - } - .ant-col-sm-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; - } - .ant-col-sm-push-3.ant-col-rtl { - right: 12.5%; - left: auto; - } - .ant-col-sm-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; - } - .ant-col-sm-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; - } - .ant-col-sm-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; - } - .ant-col-sm-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; - } - .ant-col-sm-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; - } - .ant-col-sm-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; - } - .ant-col-sm-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; - } - .ant-col-sm-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; - } - .ant-col-sm-push-6.ant-col-rtl { - right: 25%; - left: auto; - } - .ant-col-sm-pull-6.ant-col-rtl { - right: auto; - left: 25%; - } - .ant-col-sm-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; - } - .ant-col-sm-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; - } - .ant-col-sm-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; - } - .ant-col-sm-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; - } - .ant-col-sm-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; - } - .ant-col-sm-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; - } - .ant-col-sm-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; - } - .ant-col-sm-push-9.ant-col-rtl { - right: 37.5%; - left: auto; - } - .ant-col-sm-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; - } - .ant-col-sm-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; - } - .ant-col-sm-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; - } - .ant-col-sm-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; - } - .ant-col-sm-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; - } - .ant-col-sm-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; - } - .ant-col-sm-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; - } - .ant-col-sm-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; - } - .ant-col-sm-push-12.ant-col-rtl { - right: 50%; - left: auto; - } - .ant-col-sm-pull-12.ant-col-rtl { - right: auto; - left: 50%; - } - .ant-col-sm-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; - } - .ant-col-sm-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; - } - .ant-col-sm-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; - } - .ant-col-sm-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; - } - .ant-col-sm-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; - } - .ant-col-sm-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; - } - .ant-col-sm-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; - } - .ant-col-sm-push-15.ant-col-rtl { - right: 62.5%; - left: auto; - } - .ant-col-sm-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; - } - .ant-col-sm-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; - } - .ant-col-sm-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; - } - .ant-col-sm-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; - } - .ant-col-sm-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; - } - .ant-col-sm-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; - } - .ant-col-sm-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; - } - .ant-col-sm-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; - } - .ant-col-sm-push-18.ant-col-rtl { - right: 75%; - left: auto; - } - .ant-col-sm-pull-18.ant-col-rtl { - right: auto; - left: 75%; - } - .ant-col-sm-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; - } - .ant-col-sm-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; - } - .ant-col-sm-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; - } - .ant-col-sm-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; - } - .ant-col-sm-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; - } - .ant-col-sm-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; - } - .ant-col-sm-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; - } - .ant-col-sm-push-21.ant-col-rtl { - right: 87.5%; - left: auto; - } - .ant-col-sm-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; - } - .ant-col-sm-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; - } - .ant-col-sm-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; - } - .ant-col-sm-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; - } - .ant-col-sm-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; - } - .ant-col-sm-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; - } - .ant-col-sm-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; - } - .ant-col-sm-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; - } - .ant-col-sm-push-24.ant-col-rtl { - right: 100%; - left: auto; - } - .ant-col-sm-pull-24.ant-col-rtl { - right: auto; - left: 100%; - } - .ant-col-sm-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; - } -} -@media (min-width: 768px) { - .ant-col-md-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .ant-col-md-push-24 { - left: 100%; - } - .ant-col-md-pull-24 { - right: 100%; - } - .ant-col-md-offset-24 { - margin-left: 100%; - } - .ant-col-md-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; - } - .ant-col-md-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; - } - .ant-col-md-push-23 { - left: 95.83333333%; - } - .ant-col-md-pull-23 { - right: 95.83333333%; - } - .ant-col-md-offset-23 { - margin-left: 95.83333333%; - } - .ant-col-md-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; - } - .ant-col-md-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; - } - .ant-col-md-push-22 { - left: 91.66666667%; - } - .ant-col-md-pull-22 { - right: 91.66666667%; - } - .ant-col-md-offset-22 { - margin-left: 91.66666667%; - } - .ant-col-md-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; - } - .ant-col-md-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; - } - .ant-col-md-push-21 { - left: 87.5%; - } - .ant-col-md-pull-21 { - right: 87.5%; - } - .ant-col-md-offset-21 { - margin-left: 87.5%; - } - .ant-col-md-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; - } - .ant-col-md-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; - } - .ant-col-md-push-20 { - left: 83.33333333%; - } - .ant-col-md-pull-20 { - right: 83.33333333%; - } - .ant-col-md-offset-20 { - margin-left: 83.33333333%; - } - .ant-col-md-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; - } - .ant-col-md-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; - } - .ant-col-md-push-19 { - left: 79.16666667%; - } - .ant-col-md-pull-19 { - right: 79.16666667%; - } - .ant-col-md-offset-19 { - margin-left: 79.16666667%; - } - .ant-col-md-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; - } - .ant-col-md-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .ant-col-md-push-18 { - left: 75%; - } - .ant-col-md-pull-18 { - right: 75%; - } - .ant-col-md-offset-18 { - margin-left: 75%; - } - .ant-col-md-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; - } - .ant-col-md-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; - } - .ant-col-md-push-17 { - left: 70.83333333%; - } - .ant-col-md-pull-17 { - right: 70.83333333%; - } - .ant-col-md-offset-17 { - margin-left: 70.83333333%; - } - .ant-col-md-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; - } - .ant-col-md-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; - } - .ant-col-md-push-16 { - left: 66.66666667%; - } - .ant-col-md-pull-16 { - right: 66.66666667%; - } - .ant-col-md-offset-16 { - margin-left: 66.66666667%; - } - .ant-col-md-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; - } - .ant-col-md-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; - } - .ant-col-md-push-15 { - left: 62.5%; - } - .ant-col-md-pull-15 { - right: 62.5%; - } - .ant-col-md-offset-15 { - margin-left: 62.5%; - } - .ant-col-md-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; - } - .ant-col-md-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; - } - .ant-col-md-push-14 { - left: 58.33333333%; - } - .ant-col-md-pull-14 { - right: 58.33333333%; - } - .ant-col-md-offset-14 { - margin-left: 58.33333333%; - } - .ant-col-md-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; - } - .ant-col-md-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; - } - .ant-col-md-push-13 { - left: 54.16666667%; - } - .ant-col-md-pull-13 { - right: 54.16666667%; - } - .ant-col-md-offset-13 { - margin-left: 54.16666667%; - } - .ant-col-md-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; - } - .ant-col-md-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .ant-col-md-push-12 { - left: 50%; - } - .ant-col-md-pull-12 { - right: 50%; - } - .ant-col-md-offset-12 { - margin-left: 50%; - } - .ant-col-md-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; - } - .ant-col-md-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; - } - .ant-col-md-push-11 { - left: 45.83333333%; - } - .ant-col-md-pull-11 { - right: 45.83333333%; - } - .ant-col-md-offset-11 { - margin-left: 45.83333333%; - } - .ant-col-md-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; - } - .ant-col-md-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; - } - .ant-col-md-push-10 { - left: 41.66666667%; - } - .ant-col-md-pull-10 { - right: 41.66666667%; - } - .ant-col-md-offset-10 { - margin-left: 41.66666667%; - } - .ant-col-md-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; - } - .ant-col-md-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; - } - .ant-col-md-push-9 { - left: 37.5%; - } - .ant-col-md-pull-9 { - right: 37.5%; - } - .ant-col-md-offset-9 { - margin-left: 37.5%; - } - .ant-col-md-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; - } - .ant-col-md-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; - } - .ant-col-md-push-8 { - left: 33.33333333%; - } - .ant-col-md-pull-8 { - right: 33.33333333%; - } - .ant-col-md-offset-8 { - margin-left: 33.33333333%; - } - .ant-col-md-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; - } - .ant-col-md-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; - } - .ant-col-md-push-7 { - left: 29.16666667%; - } - .ant-col-md-pull-7 { - right: 29.16666667%; - } - .ant-col-md-offset-7 { - margin-left: 29.16666667%; - } - .ant-col-md-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; - } - .ant-col-md-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .ant-col-md-push-6 { - left: 25%; - } - .ant-col-md-pull-6 { - right: 25%; - } - .ant-col-md-offset-6 { - margin-left: 25%; - } - .ant-col-md-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; - } - .ant-col-md-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; - } - .ant-col-md-push-5 { - left: 20.83333333%; - } - .ant-col-md-pull-5 { - right: 20.83333333%; - } - .ant-col-md-offset-5 { - margin-left: 20.83333333%; - } - .ant-col-md-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; - } - .ant-col-md-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; - } - .ant-col-md-push-4 { - left: 16.66666667%; - } - .ant-col-md-pull-4 { - right: 16.66666667%; - } - .ant-col-md-offset-4 { - margin-left: 16.66666667%; - } - .ant-col-md-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; - } - .ant-col-md-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; - } - .ant-col-md-push-3 { - left: 12.5%; - } - .ant-col-md-pull-3 { - right: 12.5%; - } - .ant-col-md-offset-3 { - margin-left: 12.5%; - } - .ant-col-md-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - } - .ant-col-md-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; - } - .ant-col-md-push-2 { - left: 8.33333333%; - } - .ant-col-md-pull-2 { - right: 8.33333333%; - } - .ant-col-md-offset-2 { - margin-left: 8.33333333%; - } - .ant-col-md-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - } - .ant-col-md-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; - } - .ant-col-md-push-1 { - left: 4.16666667%; - } - .ant-col-md-pull-1 { - right: 4.16666667%; - } - .ant-col-md-offset-1 { - margin-left: 4.16666667%; - } - .ant-col-md-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - } - .ant-col-md-0 { - display: none; - } - .ant-col-push-0 { - left: auto; - } - .ant-col-pull-0 { - right: auto; - } - .ant-col-md-push-0 { - left: auto; - } - .ant-col-md-pull-0 { - right: auto; - } - .ant-col-md-offset-0 { - margin-left: 0; - } - .ant-col-md-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - } - .ant-col-push-0.ant-col-rtl { - right: auto; - } - .ant-col-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-md-push-0.ant-col-rtl { - right: auto; - } - .ant-col-md-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-md-offset-0.ant-col-rtl { - margin-right: 0; - } - .ant-col-md-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; - } - .ant-col-md-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; - } - .ant-col-md-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; - } - .ant-col-md-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; - } - .ant-col-md-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; - } - .ant-col-md-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; - } - .ant-col-md-push-3.ant-col-rtl { - right: 12.5%; - left: auto; - } - .ant-col-md-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; - } - .ant-col-md-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; - } - .ant-col-md-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; - } - .ant-col-md-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; - } - .ant-col-md-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; - } - .ant-col-md-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; - } - .ant-col-md-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; - } - .ant-col-md-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; - } - .ant-col-md-push-6.ant-col-rtl { - right: 25%; - left: auto; - } - .ant-col-md-pull-6.ant-col-rtl { - right: auto; - left: 25%; - } - .ant-col-md-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; - } - .ant-col-md-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; - } - .ant-col-md-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; - } - .ant-col-md-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; - } - .ant-col-md-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; - } - .ant-col-md-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; - } - .ant-col-md-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; - } - .ant-col-md-push-9.ant-col-rtl { - right: 37.5%; - left: auto; - } - .ant-col-md-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; - } - .ant-col-md-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; - } - .ant-col-md-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; - } - .ant-col-md-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; - } - .ant-col-md-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; - } - .ant-col-md-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; - } - .ant-col-md-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; - } - .ant-col-md-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; - } - .ant-col-md-push-12.ant-col-rtl { - right: 50%; - left: auto; - } - .ant-col-md-pull-12.ant-col-rtl { - right: auto; - left: 50%; - } - .ant-col-md-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; - } - .ant-col-md-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; - } - .ant-col-md-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; - } - .ant-col-md-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; - } - .ant-col-md-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; - } - .ant-col-md-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; - } - .ant-col-md-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; - } - .ant-col-md-push-15.ant-col-rtl { - right: 62.5%; - left: auto; - } - .ant-col-md-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; - } - .ant-col-md-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; - } - .ant-col-md-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; - } - .ant-col-md-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; - } - .ant-col-md-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; - } - .ant-col-md-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; - } - .ant-col-md-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; - } - .ant-col-md-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; - } - .ant-col-md-push-18.ant-col-rtl { - right: 75%; - left: auto; - } - .ant-col-md-pull-18.ant-col-rtl { - right: auto; - left: 75%; - } - .ant-col-md-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; - } - .ant-col-md-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; - } - .ant-col-md-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; - } - .ant-col-md-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; - } - .ant-col-md-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; - } - .ant-col-md-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; - } - .ant-col-md-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; - } - .ant-col-md-push-21.ant-col-rtl { - right: 87.5%; - left: auto; - } - .ant-col-md-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; - } - .ant-col-md-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; - } - .ant-col-md-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; - } - .ant-col-md-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; - } - .ant-col-md-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; - } - .ant-col-md-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; - } - .ant-col-md-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; - } - .ant-col-md-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; - } - .ant-col-md-push-24.ant-col-rtl { - right: 100%; - left: auto; - } - .ant-col-md-pull-24.ant-col-rtl { - right: auto; - left: 100%; - } - .ant-col-md-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; - } -} -@media (min-width: 992px) { - .ant-col-lg-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .ant-col-lg-push-24 { - left: 100%; - } - .ant-col-lg-pull-24 { - right: 100%; - } - .ant-col-lg-offset-24 { - margin-left: 100%; - } - .ant-col-lg-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; - } - .ant-col-lg-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; - } - .ant-col-lg-push-23 { - left: 95.83333333%; - } - .ant-col-lg-pull-23 { - right: 95.83333333%; - } - .ant-col-lg-offset-23 { - margin-left: 95.83333333%; - } - .ant-col-lg-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; - } - .ant-col-lg-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; - } - .ant-col-lg-push-22 { - left: 91.66666667%; - } - .ant-col-lg-pull-22 { - right: 91.66666667%; - } - .ant-col-lg-offset-22 { - margin-left: 91.66666667%; - } - .ant-col-lg-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; - } - .ant-col-lg-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; - } - .ant-col-lg-push-21 { - left: 87.5%; - } - .ant-col-lg-pull-21 { - right: 87.5%; - } - .ant-col-lg-offset-21 { - margin-left: 87.5%; - } - .ant-col-lg-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; - } - .ant-col-lg-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; - } - .ant-col-lg-push-20 { - left: 83.33333333%; - } - .ant-col-lg-pull-20 { - right: 83.33333333%; - } - .ant-col-lg-offset-20 { - margin-left: 83.33333333%; - } - .ant-col-lg-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; - } - .ant-col-lg-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; - } - .ant-col-lg-push-19 { - left: 79.16666667%; - } - .ant-col-lg-pull-19 { - right: 79.16666667%; - } - .ant-col-lg-offset-19 { - margin-left: 79.16666667%; - } - .ant-col-lg-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; - } - .ant-col-lg-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .ant-col-lg-push-18 { - left: 75%; - } - .ant-col-lg-pull-18 { - right: 75%; - } - .ant-col-lg-offset-18 { - margin-left: 75%; - } - .ant-col-lg-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; - } - .ant-col-lg-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; - } - .ant-col-lg-push-17 { - left: 70.83333333%; - } - .ant-col-lg-pull-17 { - right: 70.83333333%; - } - .ant-col-lg-offset-17 { - margin-left: 70.83333333%; - } - .ant-col-lg-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; - } - .ant-col-lg-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; - } - .ant-col-lg-push-16 { - left: 66.66666667%; - } - .ant-col-lg-pull-16 { - right: 66.66666667%; - } - .ant-col-lg-offset-16 { - margin-left: 66.66666667%; - } - .ant-col-lg-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; - } - .ant-col-lg-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; - } - .ant-col-lg-push-15 { - left: 62.5%; - } - .ant-col-lg-pull-15 { - right: 62.5%; - } - .ant-col-lg-offset-15 { - margin-left: 62.5%; - } - .ant-col-lg-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; - } - .ant-col-lg-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; - } - .ant-col-lg-push-14 { - left: 58.33333333%; - } - .ant-col-lg-pull-14 { - right: 58.33333333%; - } - .ant-col-lg-offset-14 { - margin-left: 58.33333333%; - } - .ant-col-lg-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; - } - .ant-col-lg-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; - } - .ant-col-lg-push-13 { - left: 54.16666667%; - } - .ant-col-lg-pull-13 { - right: 54.16666667%; - } - .ant-col-lg-offset-13 { - margin-left: 54.16666667%; - } - .ant-col-lg-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; - } - .ant-col-lg-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .ant-col-lg-push-12 { - left: 50%; - } - .ant-col-lg-pull-12 { - right: 50%; - } - .ant-col-lg-offset-12 { - margin-left: 50%; - } - .ant-col-lg-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; - } - .ant-col-lg-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; - } - .ant-col-lg-push-11 { - left: 45.83333333%; - } - .ant-col-lg-pull-11 { - right: 45.83333333%; - } - .ant-col-lg-offset-11 { - margin-left: 45.83333333%; - } - .ant-col-lg-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; - } - .ant-col-lg-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; - } - .ant-col-lg-push-10 { - left: 41.66666667%; - } - .ant-col-lg-pull-10 { - right: 41.66666667%; - } - .ant-col-lg-offset-10 { - margin-left: 41.66666667%; - } - .ant-col-lg-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; - } - .ant-col-lg-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; - } - .ant-col-lg-push-9 { - left: 37.5%; - } - .ant-col-lg-pull-9 { - right: 37.5%; - } - .ant-col-lg-offset-9 { - margin-left: 37.5%; - } - .ant-col-lg-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; - } - .ant-col-lg-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; - } - .ant-col-lg-push-8 { - left: 33.33333333%; - } - .ant-col-lg-pull-8 { - right: 33.33333333%; - } - .ant-col-lg-offset-8 { - margin-left: 33.33333333%; - } - .ant-col-lg-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; - } - .ant-col-lg-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; - } - .ant-col-lg-push-7 { - left: 29.16666667%; - } - .ant-col-lg-pull-7 { - right: 29.16666667%; - } - .ant-col-lg-offset-7 { - margin-left: 29.16666667%; - } - .ant-col-lg-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; - } - .ant-col-lg-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .ant-col-lg-push-6 { - left: 25%; - } - .ant-col-lg-pull-6 { - right: 25%; - } - .ant-col-lg-offset-6 { - margin-left: 25%; - } - .ant-col-lg-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; - } - .ant-col-lg-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; - } - .ant-col-lg-push-5 { - left: 20.83333333%; - } - .ant-col-lg-pull-5 { - right: 20.83333333%; - } - .ant-col-lg-offset-5 { - margin-left: 20.83333333%; - } - .ant-col-lg-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; - } - .ant-col-lg-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; - } - .ant-col-lg-push-4 { - left: 16.66666667%; - } - .ant-col-lg-pull-4 { - right: 16.66666667%; - } - .ant-col-lg-offset-4 { - margin-left: 16.66666667%; - } - .ant-col-lg-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; - } - .ant-col-lg-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; - } - .ant-col-lg-push-3 { - left: 12.5%; - } - .ant-col-lg-pull-3 { - right: 12.5%; - } - .ant-col-lg-offset-3 { - margin-left: 12.5%; - } - .ant-col-lg-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - } - .ant-col-lg-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; - } - .ant-col-lg-push-2 { - left: 8.33333333%; - } - .ant-col-lg-pull-2 { - right: 8.33333333%; - } - .ant-col-lg-offset-2 { - margin-left: 8.33333333%; - } - .ant-col-lg-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - } - .ant-col-lg-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; - } - .ant-col-lg-push-1 { - left: 4.16666667%; - } - .ant-col-lg-pull-1 { - right: 4.16666667%; - } - .ant-col-lg-offset-1 { - margin-left: 4.16666667%; - } - .ant-col-lg-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - } - .ant-col-lg-0 { - display: none; - } - .ant-col-push-0 { - left: auto; - } - .ant-col-pull-0 { - right: auto; - } - .ant-col-lg-push-0 { - left: auto; - } - .ant-col-lg-pull-0 { - right: auto; - } - .ant-col-lg-offset-0 { - margin-left: 0; - } - .ant-col-lg-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - } - .ant-col-push-0.ant-col-rtl { - right: auto; - } - .ant-col-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-lg-push-0.ant-col-rtl { - right: auto; - } - .ant-col-lg-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-lg-offset-0.ant-col-rtl { - margin-right: 0; - } - .ant-col-lg-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; - } - .ant-col-lg-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; - } - .ant-col-lg-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; - } - .ant-col-lg-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; - } - .ant-col-lg-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; - } - .ant-col-lg-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; - } - .ant-col-lg-push-3.ant-col-rtl { - right: 12.5%; - left: auto; - } - .ant-col-lg-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; - } - .ant-col-lg-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; - } - .ant-col-lg-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; - } - .ant-col-lg-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; - } - .ant-col-lg-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; - } - .ant-col-lg-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; - } - .ant-col-lg-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; - } - .ant-col-lg-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; - } - .ant-col-lg-push-6.ant-col-rtl { - right: 25%; - left: auto; - } - .ant-col-lg-pull-6.ant-col-rtl { - right: auto; - left: 25%; - } - .ant-col-lg-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; - } - .ant-col-lg-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; - } - .ant-col-lg-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; - } - .ant-col-lg-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; - } - .ant-col-lg-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; - } - .ant-col-lg-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; - } - .ant-col-lg-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; - } - .ant-col-lg-push-9.ant-col-rtl { - right: 37.5%; - left: auto; - } - .ant-col-lg-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; - } - .ant-col-lg-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; - } - .ant-col-lg-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; - } - .ant-col-lg-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; - } - .ant-col-lg-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; - } - .ant-col-lg-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; - } - .ant-col-lg-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; - } - .ant-col-lg-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; - } - .ant-col-lg-push-12.ant-col-rtl { - right: 50%; - left: auto; - } - .ant-col-lg-pull-12.ant-col-rtl { - right: auto; - left: 50%; - } - .ant-col-lg-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; - } - .ant-col-lg-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; - } - .ant-col-lg-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; - } - .ant-col-lg-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; - } - .ant-col-lg-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; - } - .ant-col-lg-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; - } - .ant-col-lg-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; - } - .ant-col-lg-push-15.ant-col-rtl { - right: 62.5%; - left: auto; - } - .ant-col-lg-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; - } - .ant-col-lg-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; - } - .ant-col-lg-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; - } - .ant-col-lg-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; - } - .ant-col-lg-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; - } - .ant-col-lg-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; - } - .ant-col-lg-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; - } - .ant-col-lg-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; - } - .ant-col-lg-push-18.ant-col-rtl { - right: 75%; - left: auto; - } - .ant-col-lg-pull-18.ant-col-rtl { - right: auto; - left: 75%; - } - .ant-col-lg-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; - } - .ant-col-lg-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; - } - .ant-col-lg-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; - } - .ant-col-lg-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; - } - .ant-col-lg-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; - } - .ant-col-lg-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; - } - .ant-col-lg-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; - } - .ant-col-lg-push-21.ant-col-rtl { - right: 87.5%; - left: auto; - } - .ant-col-lg-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; - } - .ant-col-lg-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; - } - .ant-col-lg-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; - } - .ant-col-lg-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; - } - .ant-col-lg-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; - } - .ant-col-lg-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; - } - .ant-col-lg-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; - } - .ant-col-lg-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; - } - .ant-col-lg-push-24.ant-col-rtl { - right: 100%; - left: auto; - } - .ant-col-lg-pull-24.ant-col-rtl { - right: auto; - left: 100%; - } - .ant-col-lg-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; - } -} -@media (min-width: 1200px) { - .ant-col-xl-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .ant-col-xl-push-24 { - left: 100%; - } - .ant-col-xl-pull-24 { - right: 100%; - } - .ant-col-xl-offset-24 { - margin-left: 100%; - } - .ant-col-xl-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; - } - .ant-col-xl-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; - } - .ant-col-xl-push-23 { - left: 95.83333333%; - } - .ant-col-xl-pull-23 { - right: 95.83333333%; - } - .ant-col-xl-offset-23 { - margin-left: 95.83333333%; - } - .ant-col-xl-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; - } - .ant-col-xl-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; - } - .ant-col-xl-push-22 { - left: 91.66666667%; - } - .ant-col-xl-pull-22 { - right: 91.66666667%; - } - .ant-col-xl-offset-22 { - margin-left: 91.66666667%; - } - .ant-col-xl-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; - } - .ant-col-xl-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; - } - .ant-col-xl-push-21 { - left: 87.5%; - } - .ant-col-xl-pull-21 { - right: 87.5%; - } - .ant-col-xl-offset-21 { - margin-left: 87.5%; - } - .ant-col-xl-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; - } - .ant-col-xl-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; - } - .ant-col-xl-push-20 { - left: 83.33333333%; - } - .ant-col-xl-pull-20 { - right: 83.33333333%; - } - .ant-col-xl-offset-20 { - margin-left: 83.33333333%; - } - .ant-col-xl-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; - } - .ant-col-xl-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; - } - .ant-col-xl-push-19 { - left: 79.16666667%; - } - .ant-col-xl-pull-19 { - right: 79.16666667%; - } - .ant-col-xl-offset-19 { - margin-left: 79.16666667%; - } - .ant-col-xl-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; - } - .ant-col-xl-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .ant-col-xl-push-18 { - left: 75%; - } - .ant-col-xl-pull-18 { - right: 75%; - } - .ant-col-xl-offset-18 { - margin-left: 75%; - } - .ant-col-xl-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; - } - .ant-col-xl-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; - } - .ant-col-xl-push-17 { - left: 70.83333333%; - } - .ant-col-xl-pull-17 { - right: 70.83333333%; - } - .ant-col-xl-offset-17 { - margin-left: 70.83333333%; - } - .ant-col-xl-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; - } - .ant-col-xl-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; - } - .ant-col-xl-push-16 { - left: 66.66666667%; - } - .ant-col-xl-pull-16 { - right: 66.66666667%; - } - .ant-col-xl-offset-16 { - margin-left: 66.66666667%; - } - .ant-col-xl-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; - } - .ant-col-xl-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; - } - .ant-col-xl-push-15 { - left: 62.5%; - } - .ant-col-xl-pull-15 { - right: 62.5%; - } - .ant-col-xl-offset-15 { - margin-left: 62.5%; - } - .ant-col-xl-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; - } - .ant-col-xl-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; - } - .ant-col-xl-push-14 { - left: 58.33333333%; - } - .ant-col-xl-pull-14 { - right: 58.33333333%; - } - .ant-col-xl-offset-14 { - margin-left: 58.33333333%; - } - .ant-col-xl-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; - } - .ant-col-xl-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; - } - .ant-col-xl-push-13 { - left: 54.16666667%; - } - .ant-col-xl-pull-13 { - right: 54.16666667%; - } - .ant-col-xl-offset-13 { - margin-left: 54.16666667%; - } - .ant-col-xl-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; - } - .ant-col-xl-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .ant-col-xl-push-12 { - left: 50%; - } - .ant-col-xl-pull-12 { - right: 50%; - } - .ant-col-xl-offset-12 { - margin-left: 50%; - } - .ant-col-xl-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; - } - .ant-col-xl-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; - } - .ant-col-xl-push-11 { - left: 45.83333333%; - } - .ant-col-xl-pull-11 { - right: 45.83333333%; - } - .ant-col-xl-offset-11 { - margin-left: 45.83333333%; - } - .ant-col-xl-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; - } - .ant-col-xl-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; - } - .ant-col-xl-push-10 { - left: 41.66666667%; - } - .ant-col-xl-pull-10 { - right: 41.66666667%; - } - .ant-col-xl-offset-10 { - margin-left: 41.66666667%; - } - .ant-col-xl-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; - } - .ant-col-xl-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; - } - .ant-col-xl-push-9 { - left: 37.5%; - } - .ant-col-xl-pull-9 { - right: 37.5%; - } - .ant-col-xl-offset-9 { - margin-left: 37.5%; - } - .ant-col-xl-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; - } - .ant-col-xl-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; - } - .ant-col-xl-push-8 { - left: 33.33333333%; - } - .ant-col-xl-pull-8 { - right: 33.33333333%; - } - .ant-col-xl-offset-8 { - margin-left: 33.33333333%; - } - .ant-col-xl-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; - } - .ant-col-xl-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; - } - .ant-col-xl-push-7 { - left: 29.16666667%; - } - .ant-col-xl-pull-7 { - right: 29.16666667%; - } - .ant-col-xl-offset-7 { - margin-left: 29.16666667%; - } - .ant-col-xl-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; - } - .ant-col-xl-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .ant-col-xl-push-6 { - left: 25%; - } - .ant-col-xl-pull-6 { - right: 25%; - } - .ant-col-xl-offset-6 { - margin-left: 25%; - } - .ant-col-xl-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; - } - .ant-col-xl-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; - } - .ant-col-xl-push-5 { - left: 20.83333333%; - } - .ant-col-xl-pull-5 { - right: 20.83333333%; - } - .ant-col-xl-offset-5 { - margin-left: 20.83333333%; - } - .ant-col-xl-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; - } - .ant-col-xl-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; - } - .ant-col-xl-push-4 { - left: 16.66666667%; - } - .ant-col-xl-pull-4 { - right: 16.66666667%; - } - .ant-col-xl-offset-4 { - margin-left: 16.66666667%; - } - .ant-col-xl-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; - } - .ant-col-xl-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; - } - .ant-col-xl-push-3 { - left: 12.5%; - } - .ant-col-xl-pull-3 { - right: 12.5%; - } - .ant-col-xl-offset-3 { - margin-left: 12.5%; - } - .ant-col-xl-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - } - .ant-col-xl-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; - } - .ant-col-xl-push-2 { - left: 8.33333333%; - } - .ant-col-xl-pull-2 { - right: 8.33333333%; - } - .ant-col-xl-offset-2 { - margin-left: 8.33333333%; - } - .ant-col-xl-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - } - .ant-col-xl-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; - } - .ant-col-xl-push-1 { - left: 4.16666667%; - } - .ant-col-xl-pull-1 { - right: 4.16666667%; - } - .ant-col-xl-offset-1 { - margin-left: 4.16666667%; - } - .ant-col-xl-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - } - .ant-col-xl-0 { - display: none; - } - .ant-col-push-0 { - left: auto; - } - .ant-col-pull-0 { - right: auto; - } - .ant-col-xl-push-0 { - left: auto; - } - .ant-col-xl-pull-0 { - right: auto; - } - .ant-col-xl-offset-0 { - margin-left: 0; - } - .ant-col-xl-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - } - .ant-col-push-0.ant-col-rtl { - right: auto; - } - .ant-col-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-xl-push-0.ant-col-rtl { - right: auto; - } - .ant-col-xl-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-xl-offset-0.ant-col-rtl { - margin-right: 0; - } - .ant-col-xl-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; - } - .ant-col-xl-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; - } - .ant-col-xl-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; - } - .ant-col-xl-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; - } - .ant-col-xl-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; - } - .ant-col-xl-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; - } - .ant-col-xl-push-3.ant-col-rtl { - right: 12.5%; - left: auto; - } - .ant-col-xl-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; - } - .ant-col-xl-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; - } - .ant-col-xl-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; - } - .ant-col-xl-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; - } - .ant-col-xl-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; - } - .ant-col-xl-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; - } - .ant-col-xl-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; - } - .ant-col-xl-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; - } - .ant-col-xl-push-6.ant-col-rtl { - right: 25%; - left: auto; - } - .ant-col-xl-pull-6.ant-col-rtl { - right: auto; - left: 25%; - } - .ant-col-xl-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; - } - .ant-col-xl-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; - } - .ant-col-xl-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; - } - .ant-col-xl-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; - } - .ant-col-xl-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; - } - .ant-col-xl-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; - } - .ant-col-xl-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; - } - .ant-col-xl-push-9.ant-col-rtl { - right: 37.5%; - left: auto; - } - .ant-col-xl-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; - } - .ant-col-xl-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; - } - .ant-col-xl-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; - } - .ant-col-xl-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; - } - .ant-col-xl-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; - } - .ant-col-xl-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; - } - .ant-col-xl-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; - } - .ant-col-xl-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; - } - .ant-col-xl-push-12.ant-col-rtl { - right: 50%; - left: auto; - } - .ant-col-xl-pull-12.ant-col-rtl { - right: auto; - left: 50%; - } - .ant-col-xl-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; - } - .ant-col-xl-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; - } - .ant-col-xl-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; - } - .ant-col-xl-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; - } - .ant-col-xl-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; - } - .ant-col-xl-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; - } - .ant-col-xl-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; - } - .ant-col-xl-push-15.ant-col-rtl { - right: 62.5%; - left: auto; - } - .ant-col-xl-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; - } - .ant-col-xl-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; - } - .ant-col-xl-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; - } - .ant-col-xl-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; - } - .ant-col-xl-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; - } - .ant-col-xl-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; - } - .ant-col-xl-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; - } - .ant-col-xl-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; - } - .ant-col-xl-push-18.ant-col-rtl { - right: 75%; - left: auto; - } - .ant-col-xl-pull-18.ant-col-rtl { - right: auto; - left: 75%; - } - .ant-col-xl-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; - } - .ant-col-xl-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; - } - .ant-col-xl-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; - } - .ant-col-xl-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; - } - .ant-col-xl-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; - } - .ant-col-xl-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; - } - .ant-col-xl-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; - } - .ant-col-xl-push-21.ant-col-rtl { - right: 87.5%; - left: auto; - } - .ant-col-xl-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; - } - .ant-col-xl-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; - } - .ant-col-xl-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; - } - .ant-col-xl-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; - } - .ant-col-xl-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; - } - .ant-col-xl-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; - } - .ant-col-xl-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; - } - .ant-col-xl-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; - } - .ant-col-xl-push-24.ant-col-rtl { - right: 100%; - left: auto; - } - .ant-col-xl-pull-24.ant-col-rtl { - right: auto; - left: 100%; - } - .ant-col-xl-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; - } -} -@media (min-width: 1600px) { - .ant-col-xxl-24 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .ant-col-xxl-push-24 { - left: 100%; - } - .ant-col-xxl-pull-24 { - right: 100%; - } - .ant-col-xxl-offset-24 { - margin-left: 100%; - } - .ant-col-xxl-order-24 { - -webkit-box-ordinal-group: 25; - -ms-flex-order: 24; - order: 24; - } - .ant-col-xxl-23 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 95.83333333%; - flex: 0 0 95.83333333%; - max-width: 95.83333333%; - } - .ant-col-xxl-push-23 { - left: 95.83333333%; - } - .ant-col-xxl-pull-23 { - right: 95.83333333%; - } - .ant-col-xxl-offset-23 { - margin-left: 95.83333333%; - } - .ant-col-xxl-order-23 { - -webkit-box-ordinal-group: 24; - -ms-flex-order: 23; - order: 23; - } - .ant-col-xxl-22 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 91.66666667%; - flex: 0 0 91.66666667%; - max-width: 91.66666667%; - } - .ant-col-xxl-push-22 { - left: 91.66666667%; - } - .ant-col-xxl-pull-22 { - right: 91.66666667%; - } - .ant-col-xxl-offset-22 { - margin-left: 91.66666667%; - } - .ant-col-xxl-order-22 { - -webkit-box-ordinal-group: 23; - -ms-flex-order: 22; - order: 22; - } - .ant-col-xxl-21 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 87.5%; - flex: 0 0 87.5%; - max-width: 87.5%; - } - .ant-col-xxl-push-21 { - left: 87.5%; - } - .ant-col-xxl-pull-21 { - right: 87.5%; - } - .ant-col-xxl-offset-21 { - margin-left: 87.5%; - } - .ant-col-xxl-order-21 { - -webkit-box-ordinal-group: 22; - -ms-flex-order: 21; - order: 21; - } - .ant-col-xxl-20 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 83.33333333%; - flex: 0 0 83.33333333%; - max-width: 83.33333333%; - } - .ant-col-xxl-push-20 { - left: 83.33333333%; - } - .ant-col-xxl-pull-20 { - right: 83.33333333%; - } - .ant-col-xxl-offset-20 { - margin-left: 83.33333333%; - } - .ant-col-xxl-order-20 { - -webkit-box-ordinal-group: 21; - -ms-flex-order: 20; - order: 20; - } - .ant-col-xxl-19 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 79.16666667%; - flex: 0 0 79.16666667%; - max-width: 79.16666667%; - } - .ant-col-xxl-push-19 { - left: 79.16666667%; - } - .ant-col-xxl-pull-19 { - right: 79.16666667%; - } - .ant-col-xxl-offset-19 { - margin-left: 79.16666667%; - } - .ant-col-xxl-order-19 { - -webkit-box-ordinal-group: 20; - -ms-flex-order: 19; - order: 19; - } - .ant-col-xxl-18 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 75%; - flex: 0 0 75%; - max-width: 75%; - } - .ant-col-xxl-push-18 { - left: 75%; - } - .ant-col-xxl-pull-18 { - right: 75%; - } - .ant-col-xxl-offset-18 { - margin-left: 75%; - } - .ant-col-xxl-order-18 { - -webkit-box-ordinal-group: 19; - -ms-flex-order: 18; - order: 18; - } - .ant-col-xxl-17 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 70.83333333%; - flex: 0 0 70.83333333%; - max-width: 70.83333333%; - } - .ant-col-xxl-push-17 { - left: 70.83333333%; - } - .ant-col-xxl-pull-17 { - right: 70.83333333%; - } - .ant-col-xxl-offset-17 { - margin-left: 70.83333333%; - } - .ant-col-xxl-order-17 { - -webkit-box-ordinal-group: 18; - -ms-flex-order: 17; - order: 17; - } - .ant-col-xxl-16 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 66.66666667%; - flex: 0 0 66.66666667%; - max-width: 66.66666667%; - } - .ant-col-xxl-push-16 { - left: 66.66666667%; - } - .ant-col-xxl-pull-16 { - right: 66.66666667%; - } - .ant-col-xxl-offset-16 { - margin-left: 66.66666667%; - } - .ant-col-xxl-order-16 { - -webkit-box-ordinal-group: 17; - -ms-flex-order: 16; - order: 16; - } - .ant-col-xxl-15 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 62.5%; - flex: 0 0 62.5%; - max-width: 62.5%; - } - .ant-col-xxl-push-15 { - left: 62.5%; - } - .ant-col-xxl-pull-15 { - right: 62.5%; - } - .ant-col-xxl-offset-15 { - margin-left: 62.5%; - } - .ant-col-xxl-order-15 { - -webkit-box-ordinal-group: 16; - -ms-flex-order: 15; - order: 15; - } - .ant-col-xxl-14 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 58.33333333%; - flex: 0 0 58.33333333%; - max-width: 58.33333333%; - } - .ant-col-xxl-push-14 { - left: 58.33333333%; - } - .ant-col-xxl-pull-14 { - right: 58.33333333%; - } - .ant-col-xxl-offset-14 { - margin-left: 58.33333333%; - } - .ant-col-xxl-order-14 { - -webkit-box-ordinal-group: 15; - -ms-flex-order: 14; - order: 14; - } - .ant-col-xxl-13 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 54.16666667%; - flex: 0 0 54.16666667%; - max-width: 54.16666667%; - } - .ant-col-xxl-push-13 { - left: 54.16666667%; - } - .ant-col-xxl-pull-13 { - right: 54.16666667%; - } - .ant-col-xxl-offset-13 { - margin-left: 54.16666667%; - } - .ant-col-xxl-order-13 { - -webkit-box-ordinal-group: 14; - -ms-flex-order: 13; - order: 13; - } - .ant-col-xxl-12 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 50%; - flex: 0 0 50%; - max-width: 50%; - } - .ant-col-xxl-push-12 { - left: 50%; - } - .ant-col-xxl-pull-12 { - right: 50%; - } - .ant-col-xxl-offset-12 { - margin-left: 50%; - } - .ant-col-xxl-order-12 { - -webkit-box-ordinal-group: 13; - -ms-flex-order: 12; - order: 12; - } - .ant-col-xxl-11 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 45.83333333%; - flex: 0 0 45.83333333%; - max-width: 45.83333333%; - } - .ant-col-xxl-push-11 { - left: 45.83333333%; - } - .ant-col-xxl-pull-11 { - right: 45.83333333%; - } - .ant-col-xxl-offset-11 { - margin-left: 45.83333333%; - } - .ant-col-xxl-order-11 { - -webkit-box-ordinal-group: 12; - -ms-flex-order: 11; - order: 11; - } - .ant-col-xxl-10 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 41.66666667%; - flex: 0 0 41.66666667%; - max-width: 41.66666667%; - } - .ant-col-xxl-push-10 { - left: 41.66666667%; - } - .ant-col-xxl-pull-10 { - right: 41.66666667%; - } - .ant-col-xxl-offset-10 { - margin-left: 41.66666667%; - } - .ant-col-xxl-order-10 { - -webkit-box-ordinal-group: 11; - -ms-flex-order: 10; - order: 10; - } - .ant-col-xxl-9 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 37.5%; - flex: 0 0 37.5%; - max-width: 37.5%; - } - .ant-col-xxl-push-9 { - left: 37.5%; - } - .ant-col-xxl-pull-9 { - right: 37.5%; - } - .ant-col-xxl-offset-9 { - margin-left: 37.5%; - } - .ant-col-xxl-order-9 { - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; - } - .ant-col-xxl-8 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 33.33333333%; - flex: 0 0 33.33333333%; - max-width: 33.33333333%; - } - .ant-col-xxl-push-8 { - left: 33.33333333%; - } - .ant-col-xxl-pull-8 { - right: 33.33333333%; - } - .ant-col-xxl-offset-8 { - margin-left: 33.33333333%; - } - .ant-col-xxl-order-8 { - -webkit-box-ordinal-group: 9; - -ms-flex-order: 8; - order: 8; - } - .ant-col-xxl-7 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 29.16666667%; - flex: 0 0 29.16666667%; - max-width: 29.16666667%; - } - .ant-col-xxl-push-7 { - left: 29.16666667%; - } - .ant-col-xxl-pull-7 { - right: 29.16666667%; - } - .ant-col-xxl-offset-7 { - margin-left: 29.16666667%; - } - .ant-col-xxl-order-7 { - -webkit-box-ordinal-group: 8; - -ms-flex-order: 7; - order: 7; - } - .ant-col-xxl-6 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 25%; - flex: 0 0 25%; - max-width: 25%; - } - .ant-col-xxl-push-6 { - left: 25%; - } - .ant-col-xxl-pull-6 { - right: 25%; - } - .ant-col-xxl-offset-6 { - margin-left: 25%; - } - .ant-col-xxl-order-6 { - -webkit-box-ordinal-group: 7; - -ms-flex-order: 6; - order: 6; - } - .ant-col-xxl-5 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 20.83333333%; - flex: 0 0 20.83333333%; - max-width: 20.83333333%; - } - .ant-col-xxl-push-5 { - left: 20.83333333%; - } - .ant-col-xxl-pull-5 { - right: 20.83333333%; - } - .ant-col-xxl-offset-5 { - margin-left: 20.83333333%; - } - .ant-col-xxl-order-5 { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; - } - .ant-col-xxl-4 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 16.66666667%; - flex: 0 0 16.66666667%; - max-width: 16.66666667%; - } - .ant-col-xxl-push-4 { - left: 16.66666667%; - } - .ant-col-xxl-pull-4 { - right: 16.66666667%; - } - .ant-col-xxl-offset-4 { - margin-left: 16.66666667%; - } - .ant-col-xxl-order-4 { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; - } - .ant-col-xxl-3 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 12.5%; - flex: 0 0 12.5%; - max-width: 12.5%; - } - .ant-col-xxl-push-3 { - left: 12.5%; - } - .ant-col-xxl-pull-3 { - right: 12.5%; - } - .ant-col-xxl-offset-3 { - margin-left: 12.5%; - } - .ant-col-xxl-order-3 { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - } - .ant-col-xxl-2 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 8.33333333%; - flex: 0 0 8.33333333%; - max-width: 8.33333333%; - } - .ant-col-xxl-push-2 { - left: 8.33333333%; - } - .ant-col-xxl-pull-2 { - right: 8.33333333%; - } - .ant-col-xxl-offset-2 { - margin-left: 8.33333333%; - } - .ant-col-xxl-order-2 { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - } - .ant-col-xxl-1 { - display: block; - -webkit-box-flex: 0; - -ms-flex: 0 0 4.16666667%; - flex: 0 0 4.16666667%; - max-width: 4.16666667%; - } - .ant-col-xxl-push-1 { - left: 4.16666667%; - } - .ant-col-xxl-pull-1 { - right: 4.16666667%; - } - .ant-col-xxl-offset-1 { - margin-left: 4.16666667%; - } - .ant-col-xxl-order-1 { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - } - .ant-col-xxl-0 { - display: none; - } - .ant-col-push-0 { - left: auto; - } - .ant-col-pull-0 { - right: auto; - } - .ant-col-xxl-push-0 { - left: auto; - } - .ant-col-xxl-pull-0 { - right: auto; - } - .ant-col-xxl-offset-0 { - margin-left: 0; - } - .ant-col-xxl-order-0 { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - } - .ant-col-push-0.ant-col-rtl { - right: auto; - } - .ant-col-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-xxl-push-0.ant-col-rtl { - right: auto; - } - .ant-col-xxl-pull-0.ant-col-rtl { - left: auto; - } - .ant-col-xxl-offset-0.ant-col-rtl { - margin-right: 0; - } - .ant-col-xxl-push-1.ant-col-rtl { - right: 4.16666667%; - left: auto; - } - .ant-col-xxl-pull-1.ant-col-rtl { - right: auto; - left: 4.16666667%; - } - .ant-col-xxl-offset-1.ant-col-rtl { - margin-right: 4.16666667%; - margin-left: 0; - } - .ant-col-xxl-push-2.ant-col-rtl { - right: 8.33333333%; - left: auto; - } - .ant-col-xxl-pull-2.ant-col-rtl { - right: auto; - left: 8.33333333%; - } - .ant-col-xxl-offset-2.ant-col-rtl { - margin-right: 8.33333333%; - margin-left: 0; - } - .ant-col-xxl-push-3.ant-col-rtl { - right: 12.5%; - left: auto; - } - .ant-col-xxl-pull-3.ant-col-rtl { - right: auto; - left: 12.5%; - } - .ant-col-xxl-offset-3.ant-col-rtl { - margin-right: 12.5%; - margin-left: 0; - } - .ant-col-xxl-push-4.ant-col-rtl { - right: 16.66666667%; - left: auto; - } - .ant-col-xxl-pull-4.ant-col-rtl { - right: auto; - left: 16.66666667%; - } - .ant-col-xxl-offset-4.ant-col-rtl { - margin-right: 16.66666667%; - margin-left: 0; - } - .ant-col-xxl-push-5.ant-col-rtl { - right: 20.83333333%; - left: auto; - } - .ant-col-xxl-pull-5.ant-col-rtl { - right: auto; - left: 20.83333333%; - } - .ant-col-xxl-offset-5.ant-col-rtl { - margin-right: 20.83333333%; - margin-left: 0; - } - .ant-col-xxl-push-6.ant-col-rtl { - right: 25%; - left: auto; - } - .ant-col-xxl-pull-6.ant-col-rtl { - right: auto; - left: 25%; - } - .ant-col-xxl-offset-6.ant-col-rtl { - margin-right: 25%; - margin-left: 0; - } - .ant-col-xxl-push-7.ant-col-rtl { - right: 29.16666667%; - left: auto; - } - .ant-col-xxl-pull-7.ant-col-rtl { - right: auto; - left: 29.16666667%; - } - .ant-col-xxl-offset-7.ant-col-rtl { - margin-right: 29.16666667%; - margin-left: 0; - } - .ant-col-xxl-push-8.ant-col-rtl { - right: 33.33333333%; - left: auto; - } - .ant-col-xxl-pull-8.ant-col-rtl { - right: auto; - left: 33.33333333%; - } - .ant-col-xxl-offset-8.ant-col-rtl { - margin-right: 33.33333333%; - margin-left: 0; - } - .ant-col-xxl-push-9.ant-col-rtl { - right: 37.5%; - left: auto; - } - .ant-col-xxl-pull-9.ant-col-rtl { - right: auto; - left: 37.5%; - } - .ant-col-xxl-offset-9.ant-col-rtl { - margin-right: 37.5%; - margin-left: 0; - } - .ant-col-xxl-push-10.ant-col-rtl { - right: 41.66666667%; - left: auto; - } - .ant-col-xxl-pull-10.ant-col-rtl { - right: auto; - left: 41.66666667%; - } - .ant-col-xxl-offset-10.ant-col-rtl { - margin-right: 41.66666667%; - margin-left: 0; - } - .ant-col-xxl-push-11.ant-col-rtl { - right: 45.83333333%; - left: auto; - } - .ant-col-xxl-pull-11.ant-col-rtl { - right: auto; - left: 45.83333333%; - } - .ant-col-xxl-offset-11.ant-col-rtl { - margin-right: 45.83333333%; - margin-left: 0; - } - .ant-col-xxl-push-12.ant-col-rtl { - right: 50%; - left: auto; - } - .ant-col-xxl-pull-12.ant-col-rtl { - right: auto; - left: 50%; - } - .ant-col-xxl-offset-12.ant-col-rtl { - margin-right: 50%; - margin-left: 0; - } - .ant-col-xxl-push-13.ant-col-rtl { - right: 54.16666667%; - left: auto; - } - .ant-col-xxl-pull-13.ant-col-rtl { - right: auto; - left: 54.16666667%; - } - .ant-col-xxl-offset-13.ant-col-rtl { - margin-right: 54.16666667%; - margin-left: 0; - } - .ant-col-xxl-push-14.ant-col-rtl { - right: 58.33333333%; - left: auto; - } - .ant-col-xxl-pull-14.ant-col-rtl { - right: auto; - left: 58.33333333%; - } - .ant-col-xxl-offset-14.ant-col-rtl { - margin-right: 58.33333333%; - margin-left: 0; - } - .ant-col-xxl-push-15.ant-col-rtl { - right: 62.5%; - left: auto; - } - .ant-col-xxl-pull-15.ant-col-rtl { - right: auto; - left: 62.5%; - } - .ant-col-xxl-offset-15.ant-col-rtl { - margin-right: 62.5%; - margin-left: 0; - } - .ant-col-xxl-push-16.ant-col-rtl { - right: 66.66666667%; - left: auto; - } - .ant-col-xxl-pull-16.ant-col-rtl { - right: auto; - left: 66.66666667%; - } - .ant-col-xxl-offset-16.ant-col-rtl { - margin-right: 66.66666667%; - margin-left: 0; - } - .ant-col-xxl-push-17.ant-col-rtl { - right: 70.83333333%; - left: auto; - } - .ant-col-xxl-pull-17.ant-col-rtl { - right: auto; - left: 70.83333333%; - } - .ant-col-xxl-offset-17.ant-col-rtl { - margin-right: 70.83333333%; - margin-left: 0; - } - .ant-col-xxl-push-18.ant-col-rtl { - right: 75%; - left: auto; - } - .ant-col-xxl-pull-18.ant-col-rtl { - right: auto; - left: 75%; - } - .ant-col-xxl-offset-18.ant-col-rtl { - margin-right: 75%; - margin-left: 0; - } - .ant-col-xxl-push-19.ant-col-rtl { - right: 79.16666667%; - left: auto; - } - .ant-col-xxl-pull-19.ant-col-rtl { - right: auto; - left: 79.16666667%; - } - .ant-col-xxl-offset-19.ant-col-rtl { - margin-right: 79.16666667%; - margin-left: 0; - } - .ant-col-xxl-push-20.ant-col-rtl { - right: 83.33333333%; - left: auto; - } - .ant-col-xxl-pull-20.ant-col-rtl { - right: auto; - left: 83.33333333%; - } - .ant-col-xxl-offset-20.ant-col-rtl { - margin-right: 83.33333333%; - margin-left: 0; - } - .ant-col-xxl-push-21.ant-col-rtl { - right: 87.5%; - left: auto; - } - .ant-col-xxl-pull-21.ant-col-rtl { - right: auto; - left: 87.5%; - } - .ant-col-xxl-offset-21.ant-col-rtl { - margin-right: 87.5%; - margin-left: 0; - } - .ant-col-xxl-push-22.ant-col-rtl { - right: 91.66666667%; - left: auto; - } - .ant-col-xxl-pull-22.ant-col-rtl { - right: auto; - left: 91.66666667%; - } - .ant-col-xxl-offset-22.ant-col-rtl { - margin-right: 91.66666667%; - margin-left: 0; - } - .ant-col-xxl-push-23.ant-col-rtl { - right: 95.83333333%; - left: auto; - } - .ant-col-xxl-pull-23.ant-col-rtl { - right: auto; - left: 95.83333333%; - } - .ant-col-xxl-offset-23.ant-col-rtl { - margin-right: 95.83333333%; - margin-left: 0; - } - .ant-col-xxl-push-24.ant-col-rtl { - right: 100%; - left: auto; - } - .ant-col-xxl-pull-24.ant-col-rtl { - right: auto; - left: 100%; - } - .ant-col-xxl-offset-24.ant-col-rtl { - margin-right: 100%; - margin-left: 0; - } -} -.ant-row-rtl { - direction: rtl; -} -.ant-col.ant-col-rtl { - float: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-carousel { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -.ant-carousel .slick-slider { - position: relative; - display: block; - -webkit-box-sizing: border-box; - box-sizing: border-box; - -webkit-touch-callout: none; - -ms-touch-action: pan-y; - touch-action: pan-y; - -webkit-tap-highlight-color: transparent; -} -.ant-carousel .slick-list { - position: relative; - display: block; - margin: 0; - padding: 0; - overflow: hidden; -} -.ant-carousel .slick-list:focus { - outline: none; -} -.ant-carousel .slick-list.dragging { - cursor: pointer; -} -.ant-carousel .slick-list .slick-slide { - pointer-events: none; -} -.ant-carousel .slick-list .slick-slide input.ant-radio-input, -.ant-carousel .slick-list .slick-slide input.ant-checkbox-input { - visibility: hidden; -} -.ant-carousel .slick-list .slick-slide.slick-active { - pointer-events: auto; -} -.ant-carousel .slick-list .slick-slide.slick-active input.ant-radio-input, -.ant-carousel .slick-list .slick-slide.slick-active input.ant-checkbox-input { - visibility: visible; -} -.ant-carousel .slick-slider .slick-track, -.ant-carousel .slick-slider .slick-list { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); -} -.ant-carousel .slick-track { - position: relative; - top: 0; - left: 0; - display: block; -} -.ant-carousel .slick-track::before, -.ant-carousel .slick-track::after { - display: table; - content: ''; -} -.ant-carousel .slick-track::after { - clear: both; -} -.slick-loading .ant-carousel .slick-track { - visibility: hidden; -} -.ant-carousel .slick-slide { - display: none; - float: left; - height: 100%; - min-height: 1px; -} -.ant-carousel .slick-slide img { - display: block; -} -.ant-carousel .slick-slide.slick-loading img { - display: none; -} -.ant-carousel .slick-slide.dragging img { - pointer-events: none; -} -.ant-carousel .slick-initialized .slick-slide { - display: block; -} -.ant-carousel .slick-loading .slick-slide { - visibility: hidden; -} -.ant-carousel .slick-vertical .slick-slide { - display: block; - height: auto; - border: 1px solid transparent; -} -.ant-carousel .slick-arrow.slick-hidden { - display: none; -} -.ant-carousel .slick-prev, -.ant-carousel .slick-next { - position: absolute; - top: 50%; - display: block; - width: 20px; - height: 20px; - margin-top: -10px; - padding: 0; - color: transparent; - font-size: 0; - line-height: 0; - background: transparent; - border: 0; - outline: none; - cursor: pointer; -} -.ant-carousel .slick-prev:hover, -.ant-carousel .slick-next:hover, -.ant-carousel .slick-prev:focus, -.ant-carousel .slick-next:focus { - color: transparent; - background: transparent; - outline: none; -} -.ant-carousel .slick-prev:hover::before, -.ant-carousel .slick-next:hover::before, -.ant-carousel .slick-prev:focus::before, -.ant-carousel .slick-next:focus::before { - opacity: 1; -} -.ant-carousel .slick-prev.slick-disabled::before, -.ant-carousel .slick-next.slick-disabled::before { - opacity: 0.25; -} -.ant-carousel .slick-prev { - left: -25px; -} -.ant-carousel .slick-prev::before { - content: '←'; -} -.ant-carousel .slick-next { - right: -25px; -} -.ant-carousel .slick-next::before { - content: '→'; -} -.ant-carousel .slick-dots { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 15; - display: -webkit-box !important; - display: -ms-flexbox !important; - display: flex !important; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin-right: 15%; - margin-left: 15%; - padding-left: 0; - list-style: none; -} -.ant-carousel .slick-dots-bottom { - bottom: 12px; -} -.ant-carousel .slick-dots-top { - top: 12px; -} -.ant-carousel .slick-dots li { - position: relative; - display: inline-block; - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - -webkit-box-sizing: content-box; - box-sizing: content-box; - width: 16px; - height: 3px; - margin: 0 2px; - margin-right: 3px; - margin-left: 3px; - padding: 0; - text-align: center; - text-indent: -999px; - vertical-align: top; - -webkit-transition: all 0.5s; - transition: all 0.5s; -} -.ant-carousel .slick-dots li button { - display: block; - width: 100%; - height: 3px; - padding: 0; - color: transparent; - font-size: 0; - background: #fff; - border: 0; - border-radius: 1px; - outline: none; - cursor: pointer; - opacity: 0.3; - -webkit-transition: all 0.5s; - transition: all 0.5s; -} -.ant-carousel .slick-dots li button:hover, -.ant-carousel .slick-dots li button:focus { - opacity: 0.75; -} -.ant-carousel .slick-dots li.slick-active { - width: 24px; -} -.ant-carousel .slick-dots li.slick-active button { - background: #fff; - opacity: 1; -} -.ant-carousel .slick-dots li.slick-active:hover, -.ant-carousel .slick-dots li.slick-active:focus { - opacity: 1; -} -.ant-carousel-vertical .slick-dots { - top: 50%; - bottom: auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 3px; - height: auto; - margin: 0; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.ant-carousel-vertical .slick-dots-left { - right: auto; - left: 12px; -} -.ant-carousel-vertical .slick-dots-right { - right: 12px; - left: auto; -} -.ant-carousel-vertical .slick-dots li { - width: 3px; - height: 16px; - margin: 4px 2px; - vertical-align: baseline; -} -.ant-carousel-vertical .slick-dots li button { - width: 3px; - height: 16px; -} -.ant-carousel-vertical .slick-dots li.slick-active { - width: 3px; - height: 24px; -} -.ant-carousel-vertical .slick-dots li.slick-active button { - width: 3px; - height: 24px; -} -.ant-carousel-rtl { - direction: rtl; -} -.ant-carousel-rtl .ant-carousel .slick-track { - right: 0; - left: auto; -} -.ant-carousel-rtl .ant-carousel .slick-prev { - right: -25px; - left: auto; -} -.ant-carousel-rtl .ant-carousel .slick-prev::before { - content: '→'; -} -.ant-carousel-rtl .ant-carousel .slick-next { - right: auto; - left: -25px; -} -.ant-carousel-rtl .ant-carousel .slick-next::before { - content: '←'; -} -.ant-carousel-rtl.ant-carousel .slick-dots { - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse; -} -.ant-carousel-rtl.ant-carousel-vertical .slick-dots { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-cascader { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -.ant-cascader-input.ant-input { - position: static; - width: 100%; - padding-right: 24px; - background-color: transparent !important; - cursor: pointer; -} -.ant-cascader-picker-show-search .ant-cascader-input.ant-input { - position: relative; -} -.ant-cascader-picker { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - background-color: #fff; - border-radius: 2px; - outline: 0; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-cascader-picker-with-value .ant-cascader-picker-label { - color: transparent; -} -.ant-cascader-picker-disabled { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - cursor: not-allowed; -} -.ant-cascader-picker-disabled .ant-cascader-input { - cursor: not-allowed; -} -.ant-cascader-picker:focus .ant-cascader-input { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-cascader-picker-borderless .ant-cascader-input { - border-color: transparent !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.ant-cascader-picker-show-search.ant-cascader-picker-focused { - color: rgba(0, 0, 0, 0.25); -} -.ant-cascader-picker-label { - position: absolute; - top: 50%; - left: 0; - width: 100%; - height: 20px; - margin-top: -10px; - padding: 0 20px 0 12px; - overflow: hidden; - line-height: 20px; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-cascader-picker-clear { - position: absolute; - top: 50%; - right: 12px; - z-index: 2; - width: 12px; - height: 12px; - margin-top: -6px; - color: rgba(0, 0, 0, 0.25); - font-size: 12px; - line-height: 12px; - background: #fff; - cursor: pointer; - opacity: 0; - -webkit-transition: color 0.3s ease, opacity 0.15s ease; - transition: color 0.3s ease, opacity 0.15s ease; -} -.ant-cascader-picker-clear:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-cascader-picker:hover .ant-cascader-picker-clear { - opacity: 1; -} -.ant-cascader-picker-arrow { - position: absolute; - top: 50%; - right: 12px; - z-index: 1; - width: 12px; - height: 12px; - margin-top: -6px; - color: rgba(0, 0, 0, 0.25); - font-size: 12px; - line-height: 12px; - -webkit-transition: -webkit-transform 0.2s; - transition: -webkit-transform 0.2s; - transition: transform 0.2s; - transition: transform 0.2s, -webkit-transform 0.2s; -} -.ant-cascader-picker-arrow.ant-cascader-picker-arrow-expand { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} -.ant-cascader-picker-label:hover + .ant-cascader-input { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-cascader-picker-small .ant-cascader-picker-clear, -.ant-cascader-picker-small .ant-cascader-picker-arrow { - right: 8px; -} -.ant-cascader-menus { - position: absolute; - z-index: 1050; - font-size: 14px; - white-space: nowrap; - background: #fff; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-cascader-menus ul, -.ant-cascader-menus ol { - margin: 0; - list-style: none; -} -.ant-cascader-menus-empty, -.ant-cascader-menus-hidden { - display: none; -} -.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-bottomLeft, -.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-bottomLeft { - -webkit-animation-name: antSlideUpIn; - animation-name: antSlideUpIn; -} -.ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-topLeft, -.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-topLeft { - -webkit-animation-name: antSlideDownIn; - animation-name: antSlideDownIn; -} -.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-bottomLeft { - -webkit-animation-name: antSlideUpOut; - animation-name: antSlideUpOut; -} -.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-topLeft { - -webkit-animation-name: antSlideDownOut; - animation-name: antSlideDownOut; -} -.ant-cascader-menu { - display: inline-block; - min-width: 111px; - height: 180px; - margin: 0; - padding: 4px 0; - overflow: auto; - vertical-align: top; - list-style: none; - border-right: 1px solid #f0f0f0; - -ms-overflow-style: -ms-autohiding-scrollbar; -} -.ant-cascader-menu:first-child { - border-radius: 2px 0 0 2px; -} -.ant-cascader-menu:last-child { - margin-right: -1px; - border-right-color: transparent; - border-radius: 0 2px 2px 0; -} -.ant-cascader-menu:only-child { - border-radius: 2px; -} -.ant-cascader-menu-item { - padding: 5px 12px; - line-height: 22px; - white-space: nowrap; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-cascader-menu-item:hover { - background: #f5f5f5; -} -.ant-cascader-menu-item-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-cascader-menu-item-disabled:hover { - background: transparent; -} -.ant-cascader-menu-empty .ant-cascader-menu-item { - color: rgba(0, 0, 0, 0.25); - cursor: default; - pointer-events: none; -} -.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), -.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover { - font-weight: 600; - background-color: #e6f7ff; -} -.ant-cascader-menu-item-expand { - position: relative; - padding-right: 24px; -} -.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, -.ant-cascader-menu-item-loading-icon { - display: inline-block; - font-size: 10px; - position: absolute; - right: 12px; - color: rgba(0, 0, 0, 0.45); -} -.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, -.ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon { - color: rgba(0, 0, 0, 0.25); -} -.ant-cascader-menu-item .ant-cascader-menu-item-keyword { - color: #ff4d4f; -} -.ant-cascader-picker-rtl .ant-cascader-input.ant-input { - padding-right: 11px; - padding-left: 24px; - text-align: right; -} -.ant-cascader-picker-rtl { - direction: rtl; -} -.ant-cascader-picker-rtl .ant-cascader-picker-label { - padding: 0 12px 0 20px; - text-align: right; -} -.ant-cascader-picker-rtl .ant-cascader-picker-clear { - right: auto; - left: 12px; -} -.ant-cascader-picker-rtl .ant-cascader-picker-arrow { - right: auto; - left: 12px; -} -.ant-cascader-picker-rtl.ant-cascader-picker-small .ant-cascader-picker-clear, -.ant-cascader-picker-rtl.ant-cascader-picker-small .ant-cascader-picker-arrow { - right: auto; - left: 8px; -} -.ant-cascader-menu-rtl .ant-cascader-menu { - direction: rtl; - border-right: none; - border-left: 1px solid #f0f0f0; -} -.ant-cascader-menu-rtl .ant-cascader-menu:first-child { - border-radius: 0 2px 2px 0; -} -.ant-cascader-menu-rtl .ant-cascader-menu:last-child { - margin-right: 0; - margin-left: -1px; - border-left-color: transparent; - border-radius: 2px 0 0 2px; -} -.ant-cascader-menu-rtl .ant-cascader-menu:only-child { - border-radius: 2px; -} -.ant-cascader-menu-rtl .ant-cascader-menu-item-expand { - padding-right: 12px; - padding-left: 24px; -} -.ant-cascader-menu-rtl .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, -.ant-cascader-menu-rtl .ant-cascader-menu-item-loading-icon { - right: auto; - left: 12px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-input-affix-wrapper { - position: relative; - display: inline-block; - width: 100%; - min-width: 0; - padding: 4px 11px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; - background-color: #fff; - background-image: none; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s; - transition: all 0.3s; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} -.ant-input-affix-wrapper::-moz-placeholder { - opacity: 1; -} -.ant-input-affix-wrapper::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-input-affix-wrapper:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input-affix-wrapper::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input-affix-wrapper::placeholder { - color: #bfbfbf; -} -.ant-input-affix-wrapper:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-input-affix-wrapper:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-input-affix-wrapper:placeholder-shown { - text-overflow: ellipsis; -} -.ant-input-affix-wrapper:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-input-rtl .ant-input-affix-wrapper:hover { - border-right-width: 0; - border-left-width: 1px !important; -} -.ant-input-affix-wrapper:focus, -.ant-input-affix-wrapper-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-input-rtl .ant-input-affix-wrapper:focus, -.ant-input-rtl .ant-input-affix-wrapper-focused { - border-right-width: 0; - border-left-width: 1px !important; -} -.ant-input-affix-wrapper-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input-affix-wrapper-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-input-affix-wrapper[disabled] { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input-affix-wrapper[disabled]:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -textarea.ant-input-affix-wrapper { - max-width: 100%; - height: auto; - min-height: 32px; - line-height: 1.5715; - vertical-align: bottom; - -webkit-transition: all 0.3s, height 0s; - transition: all 0.3s, height 0s; -} -.ant-input-affix-wrapper-lg { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-input-affix-wrapper-sm { - padding: 0px 7px; -} -.ant-input-affix-wrapper-rtl { - direction: rtl; -} -.ant-input-affix-wrapper-disabled .ant-input[disabled] { - background: transparent; -} -.ant-input-affix-wrapper > input.ant-input { - padding: 0; - border: none; - outline: none; -} -.ant-input-affix-wrapper > input.ant-input:focus { - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-input-affix-wrapper::before { - width: 0; - visibility: hidden; - content: '\a0'; -} -.ant-input-prefix, -.ant-input-suffix { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-input-prefix { - margin-right: 4px; -} -.ant-input-suffix { - margin-left: 4px; -} -.ant-input-clear-icon { - color: rgba(0, 0, 0, 0.25); - font-size: 12px; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - margin: 0 4px; - vertical-align: -1px; -} -.ant-input-clear-icon:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-input-clear-icon:active { - color: rgba(0, 0, 0, 0.65); -} -.ant-input-clear-icon + i { - margin-left: 6px; -} -.ant-input-clear-icon-hidden { - visibility: hidden; -} -.ant-input-clear-icon:last-child { - margin-right: 0; -} -.ant-input-affix-wrapper-textarea-with-clear-btn { - padding: 0 !important; - border: 0 !important; -} -.ant-input-textarea-clear-icon { - color: rgba(0, 0, 0, 0.25); - font-size: 12px; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - position: absolute; - top: 0; - right: 0; - z-index: 1; - margin: 8px 8px 0 0; -} -.ant-input-textarea-clear-icon:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-input-textarea-clear-icon:active { - color: rgba(0, 0, 0, 0.65); -} -.ant-input-textarea-clear-icon + i { - margin-left: 6px; -} -.ant-input-textarea-clear-icon-hidden { - visibility: hidden; -} -.ant-input { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - font-variant: tabular-nums; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - width: 100%; - min-width: 0; - padding: 4px 11px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; - background-color: #fff; - background-image: none; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-input::-moz-placeholder { - opacity: 1; -} -.ant-input::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-input:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input::placeholder { - color: #bfbfbf; -} -.ant-input:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-input:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-input:placeholder-shown { - text-overflow: ellipsis; -} -.ant-input:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-input-rtl .ant-input:hover { - border-right-width: 0; - border-left-width: 1px !important; -} -.ant-input:focus, -.ant-input-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-input-rtl .ant-input:focus, -.ant-input-rtl .ant-input-focused { - border-right-width: 0; - border-left-width: 1px !important; -} -.ant-input-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-input[disabled] { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input[disabled]:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -textarea.ant-input { - max-width: 100%; - height: auto; - min-height: 32px; - line-height: 1.5715; - vertical-align: bottom; - -webkit-transition: all 0.3s, height 0s; - transition: all 0.3s, height 0s; -} -.ant-input-lg { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-input-sm { - padding: 0px 7px; -} -.ant-input-rtl { - direction: rtl; -} -.ant-input-group { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: table; - width: 100%; - border-collapse: separate; - border-spacing: 0; -} -.ant-input-group[class*='col-'] { - float: none; - padding-right: 0; - padding-left: 0; -} -.ant-input-group > [class*='col-'] { - padding-right: 8px; -} -.ant-input-group > [class*='col-']:last-child { - padding-right: 0; -} -.ant-input-group-addon, -.ant-input-group-wrap, -.ant-input-group > .ant-input { - display: table-cell; -} -.ant-input-group-addon:not(:first-child):not(:last-child), -.ant-input-group-wrap:not(:first-child):not(:last-child), -.ant-input-group > .ant-input:not(:first-child):not(:last-child) { - border-radius: 0; -} -.ant-input-group-addon, -.ant-input-group-wrap { - width: 1px; - white-space: nowrap; - vertical-align: middle; -} -.ant-input-group-wrap > * { - display: block !important; -} -.ant-input-group .ant-input { - float: left; - width: 100%; - margin-bottom: 0; - text-align: inherit; -} -.ant-input-group .ant-input:focus { - z-index: 1; - border-right-width: 1px; -} -.ant-input-group .ant-input:hover { - z-index: 1; - border-right-width: 1px; -} -.ant-input-group-addon { - position: relative; - padding: 0 11px; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; - text-align: center; - background-color: #fafafa; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-input-group-addon .ant-select { - margin: -5px -11px; -} -.ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - background-color: inherit; - border: 1px solid transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-input-group-addon .ant-select-open .ant-select-selector, -.ant-input-group-addon .ant-select-focused .ant-select-selector { - color: #1890ff; -} -.ant-input-group-addon > i:only-child::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - content: ''; -} -.ant-input-group > .ant-input:first-child, -.ant-input-group-addon:first-child { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.ant-input-group > .ant-input:first-child .ant-select .ant-select-selector, -.ant-input-group-addon:first-child .ant-select .ant-select-selector { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.ant-input-group-addon:first-child { - border-right: 0; -} -.ant-input-group-addon:last-child { - border-left: 0; -} -.ant-input-group > .ant-input:last-child, -.ant-input-group-addon:last-child { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.ant-input-group > .ant-input:last-child .ant-select .ant-select-selector, -.ant-input-group-addon:last-child .ant-select .ant-select-selector { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.ant-input-group-lg .ant-input, -.ant-input-group-lg > .ant-input-group-addon { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-input-group-sm .ant-input, -.ant-input-group-sm > .ant-input-group-addon { - padding: 0px 7px; -} -.ant-input-group-lg .ant-select-single .ant-select-selector { - height: 40px; -} -.ant-input-group-sm .ant-select-single .ant-select-selector { - height: 24px; -} -.ant-input-group .ant-input-affix-wrapper:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.ant-input-group .ant-input-affix-wrapper:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.ant-input-group.ant-input-group-compact { - display: block; -} -.ant-input-group.ant-input-group-compact::before { - display: table; - content: ''; -} -.ant-input-group.ant-input-group-compact::after { - display: table; - clear: both; - content: ''; -} -.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child), -.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child), -.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) { - border-right-width: 1px; -} -.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, -.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, -.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover { - z-index: 1; -} -.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, -.ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, -.ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus { - z-index: 1; -} -.ant-input-group.ant-input-group-compact > * { - display: inline-block; - float: none; - vertical-align: top; - border-radius: 0; -} -.ant-input-group.ant-input-group-compact > .ant-input-affix-wrapper { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} -.ant-input-group.ant-input-group-compact > .ant-picker-range { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} -.ant-input-group.ant-input-group-compact > *:not(:last-child) { - margin-right: -1px; - border-right-width: 1px; -} -.ant-input-group.ant-input-group-compact .ant-input { - float: none; -} -.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector, -.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input, -.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, -.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, -.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor, -.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input, -.ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input { - border-right-width: 1px; - border-radius: 0; -} -.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector:hover, -.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, -.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, -.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, -.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, -.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover, -.ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:hover { - z-index: 1; -} -.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selector:focus, -.ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, -.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, -.ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, -.ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, -.ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus, -.ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:focus { - z-index: 1; -} -.ant-input-group.ant-input-group-compact > .ant-select-focused { - z-index: 1; -} -.ant-input-group.ant-input-group-compact > .ant-select > .ant-select-arrow { - z-index: 1; -} -.ant-input-group.ant-input-group-compact > *:first-child, -.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, -.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, -.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input { - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; -} -.ant-input-group.ant-input-group-compact > *:last-child, -.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, -.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, -.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, -.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input { - border-right-width: 1px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; -} -.ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input { - vertical-align: top; -} -.ant-input-group > .ant-input-rtl:first-child, -.ant-input-group-rtl .ant-input-group-addon:first-child { - border-radius: 0 2px 2px 0; -} -.ant-input-group-rtl .ant-input-group-addon:first-child { - border-right: 1px solid #d9d9d9; - border-left: 0; -} -.ant-input-group-rtl .ant-input-group-addon:last-child { - border-right: 0; - border-left: 1px solid #d9d9d9; -} -.ant-input-group-rtl .ant-input-group > .ant-input:last-child, -.ant-input-group-rtl .ant-input-group-addon:last-child { - border-radius: 2px 0 0 2px; -} -.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child) { - border-radius: 2px 0 0 2px; -} -.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child) { - border-radius: 0 2px 2px 0; -} -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:not(:last-child) { - margin-right: 0; - margin-left: -1px; - border-left-width: 1px; -} -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:first-child, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input { - border-radius: 0 2px 2px 0; -} -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:last-child, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, -.ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input { - border-left-width: 1px; - border-radius: 2px 0 0 2px; -} -.ant-input-group-wrapper { - display: inline-block; - width: 100%; - text-align: start; - vertical-align: top; -} -.ant-input-password-icon { - color: rgba(0, 0, 0, 0.45); - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-input-password-icon:hover { - color: rgba(0, 0, 0, 0.85); -} -.ant-input[type='color'] { - height: 32px; -} -.ant-input[type='color'].ant-input-lg { - height: 40px; -} -.ant-input[type='color'].ant-input-sm { - height: 24px; - padding-top: 3px; - padding-bottom: 3px; -} -.ant-input-search-icon { - padding: 0 9px; -} -.ant-input-search-icon::before { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); -} -.ant-input-search-icon::after { - width: 32px; -} -.ant-input-affix-wrapper-lg .ant-input-search-icon { - padding: 0 12px; -} -.ant-input-affix-wrapper-lg .ant-input-search-icon::before { - -webkit-transform: translateX(-13px); - transform: translateX(-13px); -} -.ant-input-affix-wrapper-lg .ant-input-search-icon::after { - width: 40px; -} -.ant-input-affix-wrapper-sm .ant-input-search-icon { - padding: 0 6px; -} -.ant-input-affix-wrapper-sm .ant-input-search-icon::before { - -webkit-transform: translateX(-7px); - transform: translateX(-7px); -} -.ant-input-affix-wrapper-sm .ant-input-search-icon::after { - width: 24px; -} -.ant-input-search-icon { - margin-left: 0.5em; - color: rgba(0, 0, 0, 0.45); - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-input-search-icon:hover { - color: rgba(0, 0, 0, 0.85); -} -.ant-input-search-icon::before { - position: absolute; - top: 0; - bottom: 0; - display: block; - border-left: 1px solid #d9d9d9; - -webkit-transition: all 0.3s; - transition: all 0.3s; - content: ''; -} -.ant-input-search-icon::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - content: ''; -} -.ant-input-search:not(.ant-input-search-enter-button) { - padding-right: 0; -} -.ant-input-search-enter-button input { - border-right: 0; -} -.ant-input-search-enter-button input:hover, -.ant-input-search-enter-button input:focus { - border-color: #40a9ff; -} -.ant-input-search-enter-button.ant-input-affix-wrapper { - border-right: 0; -} -.ant-input-search-enter-button + .ant-input-group-addon, -.ant-input-search-enter-button input + .ant-input-group-addon { - padding: 0; - border: 0; -} -.ant-input-search-enter-button + .ant-input-group-addon .ant-input-search-button, -.ant-input-search-enter-button input + .ant-input-group-addon .ant-input-search-button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} -.ant-input-group-wrapper-rtl { - direction: rtl; -} -.ant-input-group-rtl { - direction: rtl; -} -.ant-input-affix-wrapper.ant-input-affix-wrapper-rtl > input.ant-input { - border: none; - outline: none; -} -.ant-input-affix-wrapper-rtl .ant-input-prefix { - margin: 0 0 0 4px; -} -.ant-input-affix-wrapper-rtl .ant-input-suffix { - margin: 0 4px 0 0; -} -.ant-input-affix-wrapper-rtl .ant-input-clear-icon:last-child { - margin-right: 4px; - margin-left: 0; -} -.ant-input-affix-wrapper-rtl .ant-input-textarea-clear-icon { - right: auto; - left: 0; - margin: 8px 0 0 8px; -} -.ant-input-search-rtl { - direction: rtl; -} -.ant-input-search-rtl .ant-input-search-icon { - margin-right: 0.5em; - margin-left: 0; -} -.ant-input-search-rtl .ant-input-search-icon::before { - border-left: none; -} -.ant-input-search-rtl .ant-input-search-icon::after { - right: auto; - left: 0; - border-right: 1px solid #d9d9d9; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-input-search-rtl.ant-input-search:not(.ant-input-search-enter-button) { - padding-right: 11px; - padding-left: 0; -} -.ant-input-search-rtl.ant-input-search-enter-button input { - border-right: 1px solid #d9d9d9; - border-left: 0; -} -.ant-input-search-rtl.ant-input-search-enter-button input:hover, -.ant-input-search-rtl.ant-input-search-enter-button input:focus { - border-color: #40a9ff; -} -.ant-input-search-rtl.ant-input-search-enter-button.ant-input-affix-wrapper { - border-right: 1px solid #d9d9d9; - border-left: 0; -} -.ant-input-search-rtl.ant-input-search-enter-button.ant-input-affix-wrapper:hover, -.ant-input-search-rtl.ant-input-search-enter-button.ant-input-affix-wrapper:focus { - border-color: #40a9ff; -} -.ant-input-search-rtl.ant-input-search-enter-button + .ant-input-group-addon .ant-input-search-button, -.ant-input-search-rtl.ant-input-search-enter-button input + .ant-input-group-addon .ant-input-search-button { - width: 100%; - border-radius: 2px 0 0 2px; -} -@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - .ant-input { - height: 32px; - } - .ant-input-lg { - height: 40px; - } - .ant-input-sm { - height: 24px; - } - .ant-input-affix-wrapper > input.ant-input { - height: auto; - } -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -@-webkit-keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -@keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -.ant-checkbox { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - top: -0.09em; - display: inline-block; - line-height: 1; - white-space: nowrap; - vertical-align: middle; - outline: none; - cursor: pointer; -} -.ant-checkbox-wrapper:hover .ant-checkbox-inner, -.ant-checkbox:hover .ant-checkbox-inner, -.ant-checkbox-input:focus + .ant-checkbox-inner { - border-color: #1890ff; -} -.ant-checkbox-checked::after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 1px solid #1890ff; - border-radius: 2px; - visibility: hidden; - -webkit-animation: antCheckboxEffect 0.36s ease-in-out; - animation: antCheckboxEffect 0.36s ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - content: ''; -} -.ant-checkbox:hover::after, -.ant-checkbox-wrapper:hover .ant-checkbox::after { - visibility: visible; -} -.ant-checkbox-inner { - position: relative; - top: 0; - left: 0; - display: block; - width: 16px; - height: 16px; - direction: ltr; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - border-collapse: separate; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-checkbox-inner::after { - position: absolute; - top: 50%; - left: 22%; - display: table; - width: 5.71428571px; - height: 9.14285714px; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(0) translate(-50%, -50%); - transform: rotate(45deg) scale(0) translate(-50%, -50%); - opacity: 0; - -webkit-transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s; - transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s; - content: ' '; -} -.ant-checkbox-input { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - width: 100%; - height: 100%; - cursor: pointer; - opacity: 0; -} -.ant-checkbox-checked .ant-checkbox-inner::after { - position: absolute; - display: table; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(1) translate(-50%, -50%); - transform: rotate(45deg) scale(1) translate(-50%, -50%); - opacity: 1; - -webkit-transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; - transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; - content: ' '; -} -.ant-checkbox-checked .ant-checkbox-inner { - background-color: #1890ff; - border-color: #1890ff; -} -.ant-checkbox-disabled { - cursor: not-allowed; -} -.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after { - border-color: rgba(0, 0, 0, 0.25); - -webkit-animation-name: none; - animation-name: none; -} -.ant-checkbox-disabled .ant-checkbox-input { - cursor: not-allowed; -} -.ant-checkbox-disabled .ant-checkbox-inner { - background-color: #f5f5f5; - border-color: #d9d9d9 !important; -} -.ant-checkbox-disabled .ant-checkbox-inner::after { - border-color: #f5f5f5; - border-collapse: separate; - -webkit-animation-name: none; - animation-name: none; -} -.ant-checkbox-disabled + span { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-checkbox-disabled:hover::after, -.ant-checkbox-wrapper:hover .ant-checkbox-disabled::after { - visibility: hidden; -} -.ant-checkbox-wrapper { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; - line-height: unset; - cursor: pointer; -} -.ant-checkbox-wrapper.ant-checkbox-wrapper-disabled { - cursor: not-allowed; -} -.ant-checkbox-wrapper + .ant-checkbox-wrapper { - margin-left: 8px; -} -.ant-checkbox + span { - padding-right: 8px; - padding-left: 8px; -} -.ant-checkbox-group { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; -} -.ant-checkbox-group-item { - display: inline-block; - margin-right: 8px; -} -.ant-checkbox-group-item:last-child { - margin-right: 0; -} -.ant-checkbox-group-item + .ant-checkbox-group-item { - margin-left: 0; -} -.ant-checkbox-indeterminate .ant-checkbox-inner { - background-color: #fff; - border-color: #d9d9d9; -} -.ant-checkbox-indeterminate .ant-checkbox-inner::after { - top: 50%; - left: 50%; - width: 8px; - height: 8px; - background-color: #1890ff; - border: 0; - -webkit-transform: translate(-50%, -50%) scale(1); - transform: translate(-50%, -50%) scale(1); - opacity: 1; - content: ' '; -} -.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner::after { - background-color: rgba(0, 0, 0, 0.25); - border-color: rgba(0, 0, 0, 0.25); -} -.ant-checkbox-rtl { - direction: rtl; -} -.ant-checkbox-group-rtl .ant-checkbox-group-item { - margin-right: 0; - margin-left: 8px; -} -.ant-checkbox-group-rtl .ant-checkbox-group-item:last-child { - margin-left: 0 !important; -} -.ant-checkbox-group-rtl .ant-checkbox-group-item + .ant-checkbox-group-item { - margin-left: 8px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-collapse { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - background-color: #fafafa; - border: 1px solid #d9d9d9; - border-bottom: 0; - border-radius: 2px; -} -.ant-collapse > .ant-collapse-item { - border-bottom: 1px solid #d9d9d9; -} -.ant-collapse > .ant-collapse-item:last-child, -.ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header { - border-radius: 0 0 2px 2px; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header { - position: relative; - padding: 12px 16px; - padding-left: 40px; - color: rgba(0, 0, 0, 0.85); - line-height: 1.5715; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header::before { - display: table; - content: ''; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header::after { - display: table; - clear: both; - content: ''; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow { - color: inherit; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - top: 50%; - left: 16px; - display: inline-block; - font-size: 12px; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow > * { - line-height: 1; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg { - display: inline-block; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow::before { - display: none; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow-icon { - display: block; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg { - -webkit-transition: -webkit-transform 0.24s; - transition: -webkit-transform 0.24s; - transition: transform 0.24s; - transition: transform 0.24s, -webkit-transform 0.24s; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra { - float: right; -} -.ant-collapse > .ant-collapse-item > .ant-collapse-header:focus { - outline: none; -} -.ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header { - padding-left: 12px; -} -.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header { - padding: 12px 16px; - padding-right: 40px; -} -.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow { - right: 16px; - left: auto; -} -.ant-collapse-anim-active { - -webkit-transition: height 0.2s cubic-bezier(0.215, 0.61, 0.355, 1); - transition: height 0.2s cubic-bezier(0.215, 0.61, 0.355, 1); -} -.ant-collapse-content { - overflow: hidden; - color: rgba(0, 0, 0, 0.65); - background-color: #fff; - border-top: 1px solid #d9d9d9; -} -.ant-collapse-content > .ant-collapse-content-box { - padding: 16px; -} -.ant-collapse-content-inactive { - display: none; -} -.ant-collapse-item:last-child > .ant-collapse-content { - border-radius: 0 0 2px 2px; -} -.ant-collapse-borderless { - background-color: #fafafa; - border: 0; -} -.ant-collapse-borderless > .ant-collapse-item { - border-bottom: 1px solid #d9d9d9; -} -.ant-collapse-borderless > .ant-collapse-item:last-child, -.ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header { - border-radius: 0; -} -.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content { - background-color: transparent; - border-top: 0; -} -.ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box { - padding-top: 4px; -} -.ant-collapse-ghost { - background-color: transparent; - border: 0; -} -.ant-collapse-ghost > .ant-collapse-item { - border-bottom: 0; -} -.ant-collapse-ghost > .ant-collapse-item > .ant-collapse-content { - background-color: transparent; - border-top: 0; -} -.ant-collapse-ghost > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box { - padding-top: 12px; - padding-bottom: 12px; -} -.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, -.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-collapse-rtl { - direction: rtl; -} -.ant-collapse-rtl .ant-collapse > .ant-collapse-item > .ant-collapse-header { - padding: 12px 16px; - padding-right: 40px; -} -.ant-collapse-rtl.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} -.ant-collapse-rtl.ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra { - float: left; -} -.ant-collapse-rtl.ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header { - padding-right: 12px; - padding-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-comment { - position: relative; - background-color: inherit; -} -.ant-comment-inner { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 16px 0; -} -.ant-comment-avatar { - position: relative; - -ms-flex-negative: 0; - flex-shrink: 0; - margin-right: 12px; - cursor: pointer; -} -.ant-comment-avatar img { - width: 32px; - height: 32px; - border-radius: 50%; -} -.ant-comment-content { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - min-width: 1px; - font-size: 14px; - word-wrap: break-word; -} -.ant-comment-content-author { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - margin-bottom: 4px; - font-size: 14px; -} -.ant-comment-content-author > a, -.ant-comment-content-author > span { - padding-right: 8px; - font-size: 12px; - line-height: 18px; -} -.ant-comment-content-author-name { - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-comment-content-author-name > * { - color: rgba(0, 0, 0, 0.45); -} -.ant-comment-content-author-name > *:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-comment-content-author-time { - color: #ccc; - white-space: nowrap; - cursor: auto; -} -.ant-comment-content-detail p { - margin-bottom: inherit; - white-space: pre-wrap; -} -.ant-comment-actions { - margin-top: 12px; - margin-bottom: inherit; - padding-left: 0; -} -.ant-comment-actions > li { - display: inline-block; - color: rgba(0, 0, 0, 0.45); -} -.ant-comment-actions > li > span { - margin-right: 10px; - color: rgba(0, 0, 0, 0.45); - font-size: 12px; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-comment-actions > li > span:hover { - color: #595959; -} -.ant-comment-nested { - margin-left: 44px; -} -.ant-comment-rtl { - direction: rtl; -} -.ant-comment-rtl .ant-comment-avatar { - margin-right: 0; - margin-left: 12px; -} -.ant-comment-rtl .ant-comment-content-author > a, -.ant-comment-rtl .ant-comment-content-author > span { - padding-right: 0; - padding-left: 8px; -} -.ant-comment-rtl .ant-comment-actions { - padding-right: 0; -} -.ant-comment-rtl .ant-comment-actions > li > span { - margin-right: 0; - margin-left: 10px; -} -.ant-comment-rtl .ant-comment-nested { - margin-right: 44px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-descriptions-title { - margin-bottom: 20px; - color: rgba(0, 0, 0, 0.85); - font-weight: bold; - font-size: 16px; - line-height: 1.5715; -} -.ant-descriptions-view { - width: 100%; - overflow: hidden; - border-radius: 2px; -} -.ant-descriptions-view table { - width: 100%; - table-layout: fixed; -} -.ant-descriptions-row > th, -.ant-descriptions-row > td { - padding-bottom: 16px; -} -.ant-descriptions-row:last-child { - border-bottom: none; -} -.ant-descriptions-item-label { - color: rgba(0, 0, 0, 0.85); - font-weight: normal; - font-size: 14px; - line-height: 1.5715; - text-align: start; -} -.ant-descriptions-item-label::after { - content: ':'; - position: relative; - top: -0.5px; - margin: 0 8px 0 2px; -} -.ant-descriptions-item-label.ant-descriptions-item-no-colon::after { - content: ' '; -} -.ant-descriptions-item-no-label::after { - margin: 0; - content: ''; -} -.ant-descriptions-item-content { - display: table-cell; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; -} -.ant-descriptions-item { - padding-bottom: 0; -} -.ant-descriptions-item > span { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; -} -.ant-descriptions-middle .ant-descriptions-row > th, -.ant-descriptions-middle .ant-descriptions-row > td { - padding-bottom: 12px; -} -.ant-descriptions-small .ant-descriptions-row > th, -.ant-descriptions-small .ant-descriptions-row > td { - padding-bottom: 8px; -} -.ant-descriptions-bordered .ant-descriptions-view { - border: 1px solid #f0f0f0; -} -.ant-descriptions-bordered .ant-descriptions-view > table { - table-layout: auto; -} -.ant-descriptions-bordered .ant-descriptions-item-label, -.ant-descriptions-bordered .ant-descriptions-item-content { - padding: 16px 24px; - border-right: 1px solid #f0f0f0; -} -.ant-descriptions-bordered .ant-descriptions-item-label:last-child, -.ant-descriptions-bordered .ant-descriptions-item-content:last-child { - border-right: none; -} -.ant-descriptions-bordered .ant-descriptions-item-label { - background-color: #fafafa; -} -.ant-descriptions-bordered .ant-descriptions-item-label::after { - display: none; -} -.ant-descriptions-bordered .ant-descriptions-row { - border-bottom: 1px solid #f0f0f0; -} -.ant-descriptions-bordered .ant-descriptions-row:last-child { - border-bottom: none; -} -.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-label, -.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-content { - padding: 12px 24px; -} -.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label, -.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-content { - padding: 8px 16px; -} -.ant-descriptions-rtl { - direction: rtl; -} -.ant-descriptions-rtl .ant-descriptions-item-label::after { - margin: 0 2px 0 8px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-divider { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - border-top: 1px solid #f0f0f0; -} -.ant-divider-vertical { - position: relative; - top: -0.06em; - display: inline-block; - height: 0.9em; - margin: 0 8px; - vertical-align: middle; - border-top: 0; - border-left: 1px solid #f0f0f0; -} -.ant-divider-horizontal { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - clear: both; - width: 100%; - min-width: 100%; - margin: 24px 0; -} -.ant-divider-horizontal.ant-divider-with-text { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: 16px 0; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - font-size: 16px; - white-space: nowrap; - text-align: center; - border-top: 0; -} -.ant-divider-horizontal.ant-divider-with-text::before, -.ant-divider-horizontal.ant-divider-with-text::after { - position: relative; - top: 50%; - width: 50%; - border-top: 1px solid #f0f0f0; - -webkit-transform: translateY(50%); - transform: translateY(50%); - content: ''; -} -.ant-divider-horizontal.ant-divider-with-text-left::before { - top: 50%; - width: 5%; -} -.ant-divider-horizontal.ant-divider-with-text-left::after { - top: 50%; - width: 95%; -} -.ant-divider-horizontal.ant-divider-with-text-right::before { - top: 50%; - width: 95%; -} -.ant-divider-horizontal.ant-divider-with-text-right::after { - top: 50%; - width: 5%; -} -.ant-divider-inner-text { - display: inline-block; - padding: 0 1em; -} -.ant-divider-dashed { - background: none; - border-color: #f0f0f0; - border-style: dashed; - border-width: 1px 0 0; -} -.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed { - border-top: 0; -} -.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::before, -.ant-divider-horizontal.ant-divider-with-text.ant-divider-dashed::after { - border-style: dashed none none; -} -.ant-divider-vertical.ant-divider-dashed { - border-width: 0 0 0 1px; -} -.ant-divider-plain.ant-divider-with-text { - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - font-size: 14px; -} -.ant-divider-rtl { - direction: rtl; -} -.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left::before { - width: 95%; -} -.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-left::after { - width: 5%; -} -.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right::before { - width: 5%; -} -.ant-divider-rtl.ant-divider-horizontal.ant-divider-with-text-right::after { - width: 95%; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-drawer { - position: fixed; - z-index: 1000; - width: 0%; - height: 100%; - -webkit-transition: height 0s ease 0.3s, width 0s ease 0.3s, -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: height 0s ease 0.3s, width 0s ease 0.3s, -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), height 0s ease 0.3s, width 0s ease 0.3s; - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), height 0s ease 0.3s, width 0s ease 0.3s, -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); -} -.ant-drawer > * { - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-box-shadow 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); -} -.ant-drawer-content-wrapper { - position: absolute; - width: 100%; - height: 100%; -} -.ant-drawer .ant-drawer-content { - width: 100%; - height: 100%; -} -.ant-drawer-left, -.ant-drawer-right { - top: 0; - width: 0%; - height: 100%; -} -.ant-drawer-left .ant-drawer-content-wrapper, -.ant-drawer-right .ant-drawer-content-wrapper { - height: 100%; -} -.ant-drawer-left.ant-drawer-open, -.ant-drawer-right.ant-drawer-open { - width: 100%; - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); -} -.ant-drawer-left { - left: 0; -} -.ant-drawer-left .ant-drawer-content-wrapper { - left: 0; -} -.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper { - -webkit-box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03); - box-shadow: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), 12px 0 48px 16px rgba(0, 0, 0, 0.03); -} -.ant-drawer-right { - right: 0; -} -.ant-drawer-right .ant-drawer-content-wrapper { - right: 0; -} -.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper { - -webkit-box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03); - box-shadow: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), -12px 0 48px 16px rgba(0, 0, 0, 0.03); -} -.ant-drawer-right.ant-drawer-open.no-mask { - right: 1px; - -webkit-transform: translateX(1px); - transform: translateX(1px); -} -.ant-drawer-top, -.ant-drawer-bottom { - left: 0; - width: 100%; - height: 0%; -} -.ant-drawer-top .ant-drawer-content-wrapper, -.ant-drawer-bottom .ant-drawer-content-wrapper { - width: 100%; -} -.ant-drawer-top.ant-drawer-open, -.ant-drawer-bottom.ant-drawer-open { - height: 100%; - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - transition: transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1), -webkit-transform 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); -} -.ant-drawer-top { - top: 0; -} -.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper { - -webkit-box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03); - box-shadow: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), 0 12px 48px 16px rgba(0, 0, 0, 0.03); -} -.ant-drawer-bottom { - bottom: 0; -} -.ant-drawer-bottom .ant-drawer-content-wrapper { - bottom: 0; -} -.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper { - -webkit-box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03); - box-shadow: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), 0 -12px 48px 16px rgba(0, 0, 0, 0.03); -} -.ant-drawer-bottom.ant-drawer-open.no-mask { - bottom: 1px; - -webkit-transform: translateY(1px); - transform: translateY(1px); -} -.ant-drawer.ant-drawer-open .ant-drawer-mask { - height: 100%; - opacity: 1; - -webkit-transition: none; - transition: none; - -webkit-animation: antdDrawerFadeIn 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - animation: antdDrawerFadeIn 0.3s cubic-bezier(0.7, 0.3, 0.1, 1); - pointer-events: auto; -} -.ant-drawer-title { - margin: 0; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - font-size: 16px; - line-height: 22px; -} -.ant-drawer-content { - position: relative; - z-index: 1; - overflow: auto; - background-color: #fff; - background-clip: padding-box; - border: 0; -} -.ant-drawer-close { - position: absolute; - top: 0; - right: 0; - z-index: 10; - display: block; - padding: 20px; - color: rgba(0, 0, 0, 0.45); - font-weight: 700; - font-size: 16px; - font-style: normal; - line-height: 1; - text-align: center; - text-transform: none; - text-decoration: none; - background: transparent; - border: 0; - outline: 0; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - text-rendering: auto; -} -.ant-drawer-close:focus, -.ant-drawer-close:hover { - color: rgba(0, 0, 0, 0.75); - text-decoration: none; -} -.ant-drawer-header-no-title .ant-drawer-close { - margin-right: var(--scroll-bar); - /* stylelint-disable-next-line function-calc-no-invalid */ - padding-right: calc(20px - var(--scroll-bar)); -} -.ant-drawer-header { - position: relative; - padding: 16px 24px; - color: rgba(0, 0, 0, 0.65); - background: #fff; - border-bottom: 1px solid #f0f0f0; - border-radius: 2px 2px 0 0; -} -.ant-drawer-header-no-title { - color: rgba(0, 0, 0, 0.65); - background: #fff; -} -.ant-drawer-wrapper-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - width: 100%; - height: 100%; -} -.ant-drawer-body { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - padding: 24px; - overflow: auto; - font-size: 14px; - line-height: 1.5715; - word-wrap: break-word; -} -.ant-drawer-footer { - -ms-flex-negative: 0; - flex-shrink: 0; - padding: 10px 10px; - border-top: 1px solid #f0f0f0; -} -.ant-drawer-mask { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 0; - background-color: rgba(0, 0, 0, 0.45); - opacity: 0; - filter: alpha(opacity=45); - -webkit-transition: opacity 0.3s linear, height 0s ease 0.3s; - transition: opacity 0.3s linear, height 0s ease 0.3s; - pointer-events: none; -} -.ant-drawer-open-content { - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-drawer .ant-picker-clear { - background: #fff; -} -@-webkit-keyframes antdDrawerFadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -@keyframes antdDrawerFadeIn { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} -.ant-drawer-rtl { - direction: rtl; -} -.ant-drawer-rtl .ant-drawer-close { - right: auto; - left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-form-item .ant-mentions, -.ant-form-item textarea.ant-input { - height: auto; -} -.ant-form-item .ant-upload { - background: transparent; -} -.ant-form-item .ant-upload.ant-upload-drag { - background: #fafafa; -} -.ant-form-item input[type='radio'], -.ant-form-item input[type='checkbox'] { - width: 14px; - height: 14px; -} -.ant-form-item .ant-radio-inline, -.ant-form-item .ant-checkbox-inline { - display: inline-block; - margin-left: 8px; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.ant-form-item .ant-radio-inline:first-child, -.ant-form-item .ant-checkbox-inline:first-child { - margin-left: 0; -} -.ant-form-item .ant-checkbox-vertical, -.ant-form-item .ant-radio-vertical { - display: block; -} -.ant-form-item .ant-checkbox-vertical + .ant-checkbox-vertical, -.ant-form-item .ant-radio-vertical + .ant-radio-vertical { - margin-left: 0; -} -.ant-form-item .ant-input-number + .ant-form-text { - margin-left: 8px; -} -.ant-form-item .ant-input-number-handler-wrap { - z-index: 2; -} -.ant-form-item .ant-select, -.ant-form-item .ant-cascader-picker { - width: 100%; -} -.ant-form-item .ant-input-group .ant-select, -.ant-form-item .ant-input-group .ant-cascader-picker { - width: auto; -} -.ant-form-inline { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} -.ant-form-inline .ant-form-item { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - margin-right: 16px; - margin-bottom: 0; -} -.ant-form-inline .ant-form-item-with-help { - margin-bottom: 24px; -} -.ant-form-inline .ant-form-item > .ant-form-item-label, -.ant-form-inline .ant-form-item > .ant-form-item-control { - display: inline-block; - vertical-align: top; -} -.ant-form-inline .ant-form-item > .ant-form-item-label { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-form-inline .ant-form-item .ant-form-text { - display: inline-block; -} -.ant-form-inline .ant-form-item .ant-form-item-has-feedback { - display: inline-block; -} -.ant-form-horizontal .ant-form-item-label { - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; -} -.ant-form-horizontal .ant-form-item-control { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; -} -.ant-form-vertical .ant-form-item { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.ant-form-vertical .ant-form-item-label > label { - height: auto; -} -.ant-form-vertical .ant-form-item-label, -.ant-col-24.ant-form-item-label, -.ant-col-xl-24.ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; -} -.ant-form-vertical .ant-form-item-label > label, -.ant-col-24.ant-form-item-label > label, -.ant-col-xl-24.ant-form-item-label > label { - margin: 0; -} -.ant-form-vertical .ant-form-item-label > label::after, -.ant-col-24.ant-form-item-label > label::after, -.ant-col-xl-24.ant-form-item-label > label::after { - display: none; -} -.ant-form-rtl.ant-form-vertical .ant-form-item-label, -.ant-form-rtl.ant-col-24.ant-form-item-label, -.ant-form-rtl.ant-col-xl-24.ant-form-item-label { - text-align: right; -} -@media (max-width: 575px) { - .ant-form-item .ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; - } - .ant-form-item .ant-form-item-label > label { - margin: 0; - } - .ant-form-item .ant-form-item-label > label::after { - display: none; - } - .ant-form-rtl.ant-form-item .ant-form-item-label { - text-align: right; - } - .ant-form .ant-form-item { - -ms-flex-wrap: wrap; - flex-wrap: wrap; - } - .ant-form .ant-form-item .ant-form-item-label, - .ant-form .ant-form-item .ant-form-item-control { - -webkit-box-flex: 0; - -ms-flex: 0 0 100%; - flex: 0 0 100%; - max-width: 100%; - } - .ant-col-xs-24.ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; - } - .ant-col-xs-24.ant-form-item-label > label { - margin: 0; - } - .ant-col-xs-24.ant-form-item-label > label::after { - display: none; - } - .ant-form-rtl.ant-col-xs-24.ant-form-item-label { - text-align: right; - } -} -@media (max-width: 767px) { - .ant-col-sm-24.ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; - } - .ant-col-sm-24.ant-form-item-label > label { - margin: 0; - } - .ant-col-sm-24.ant-form-item-label > label::after { - display: none; - } - .ant-form-rtl.ant-col-sm-24.ant-form-item-label { - text-align: right; - } -} -@media (max-width: 991px) { - .ant-col-md-24.ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; - } - .ant-col-md-24.ant-form-item-label > label { - margin: 0; - } - .ant-col-md-24.ant-form-item-label > label::after { - display: none; - } - .ant-form-rtl.ant-col-md-24.ant-form-item-label { - text-align: right; - } -} -@media (max-width: 1199px) { - .ant-col-lg-24.ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; - } - .ant-col-lg-24.ant-form-item-label > label { - margin: 0; - } - .ant-col-lg-24.ant-form-item-label > label::after { - display: none; - } - .ant-form-rtl.ant-col-lg-24.ant-form-item-label { - text-align: right; - } -} -@media (max-width: 1599px) { - .ant-col-xl-24.ant-form-item-label { - margin: 0; - padding: 0 0 8px; - line-height: 1.5715; - white-space: initial; - text-align: left; - } - .ant-col-xl-24.ant-form-item-label > label { - margin: 0; - } - .ant-col-xl-24.ant-form-item-label > label::after { - display: none; - } - .ant-form-rtl.ant-col-xl-24.ant-form-item-label { - text-align: right; - } -} -.ant-form-item { - /* Some non-status related component style is in `components.less` */ -} -.ant-form-item-has-feedback .ant-input { - padding-right: 24px; -} -.ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input-suffix { - padding-right: 18px; -} -.ant-form-item-has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix { - right: 28px; -} -.ant-form-item-has-feedback .ant-switch { - margin: 2px 0 4px; -} -.ant-form-item-has-feedback > .ant-select .ant-select-arrow, -.ant-form-item-has-feedback > .ant-select .ant-select-selection__clear, -.ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow, -.ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection__clear { - right: 28px; -} -.ant-form-item-has-feedback > .ant-select .ant-select-selection-selected-value, -.ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value { - padding-right: 42px; -} -.ant-form-item-has-feedback .ant-cascader-picker-arrow { - margin-right: 17px; -} -.ant-form-item-has-feedback .ant-cascader-picker-clear { - right: 28px; -} -.ant-form-item-has-feedback .ant-picker { - padding-right: 29.2px; -} -.ant-form-item-has-feedback .ant-picker-large { - padding-right: 29.2px; -} -.ant-form-item-has-feedback .ant-picker-small { - padding-right: 25.2px; -} -.ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon, -.ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon, -.ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon, -.ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon { - position: absolute; - top: 50%; - right: 0; - z-index: 1; - width: 32px; - height: 20px; - margin-top: -10px; - font-size: 14px; - line-height: 20px; - text-align: center; - visibility: visible; - -webkit-animation: zoomIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46); - animation: zoomIn 0.3s cubic-bezier(0.12, 0.4, 0.29, 1.46); - pointer-events: none; -} -.ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon svg, -.ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon svg, -.ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon svg, -.ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon svg { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - margin: auto; -} -.ant-form-item-has-success.ant-form-item-has-feedback .ant-form-item-children-icon { - color: #52c41a; - -webkit-animation-name: diffZoomIn1 !important; - animation-name: diffZoomIn1 !important; -} -.ant-form-item-has-warning .ant-form-item-explain, -.ant-form-item-has-warning .ant-form-item-split { - color: #faad14; -} -.ant-form-item-has-warning .ant-input, -.ant-form-item-has-warning .ant-input-affix-wrapper, -.ant-form-item-has-warning .ant-input:hover, -.ant-form-item-has-warning .ant-input-affix-wrapper:hover { - border-color: #faad14; -} -.ant-form-item-has-warning .ant-input:focus, -.ant-form-item-has-warning .ant-input-affix-wrapper:focus, -.ant-form-item-has-warning .ant-input-focused, -.ant-form-item-has-warning .ant-input-affix-wrapper-focused { - border-color: #ffc53d; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); - box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); -} -.ant-form-item-has-warning .ant-input:not(.ant-form-item-has-warning .ant-input-disabled) { - background-color: #fff; -} -.ant-form-item-has-warning .ant-input-affix-wrapper:not(.ant-form-item-has-warning .ant-input-affix-wrapper-disabled) { - background-color: #fff; -} -.ant-form-item-has-warning .ant-input-affix-wrapper input:focus { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.ant-form-item-has-warning .ant-calendar-picker-open .ant-calendar-picker-input { - border-color: #ffc53d; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); - box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); -} -.ant-form-item-has-warning .ant-input-prefix { - color: #faad14; -} -.ant-form-item-has-warning .ant-input-group-addon { - color: #faad14; - border-color: #faad14; -} -.ant-form-item-has-warning .has-feedback { - color: #faad14; -} -.ant-form-item-has-warning.ant-form-item-has-feedback .ant-form-item-children-icon { - color: #faad14; - -webkit-animation-name: diffZoomIn3 !important; - animation-name: diffZoomIn3 !important; -} -.ant-form-item-has-warning .ant-select:not(.ant-select-borderless) .ant-select-selector { - border-color: #faad14 !important; -} -.ant-form-item-has-warning .ant-select:not(.ant-select-borderless).ant-select-open .ant-select-selector, -.ant-form-item-has-warning .ant-select:not(.ant-select-borderless).ant-select-focused .ant-select-selector { - border-color: #ffc53d; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); - box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); -} -.ant-form-item-has-warning .ant-input-number, -.ant-form-item-has-warning .ant-picker { - border-color: #faad14; -} -.ant-form-item-has-warning .ant-input-number-focused, -.ant-form-item-has-warning .ant-picker-focused, -.ant-form-item-has-warning .ant-input-number:focus, -.ant-form-item-has-warning .ant-picker:focus { - border-color: #ffc53d; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); - box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); -} -.ant-form-item-has-warning .ant-input-number:not([disabled]):hover, -.ant-form-item-has-warning .ant-picker:not([disabled]):hover { - border-color: #faad14; -} -.ant-form-item-has-warning .ant-cascader-picker:focus .ant-cascader-input { - border-color: #ffc53d; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); - box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2); -} -.ant-form-item-has-error .ant-form-item-explain, -.ant-form-item-has-error .ant-form-item-split { - color: #ff4d4f; -} -.ant-form-item-has-error .ant-input, -.ant-form-item-has-error .ant-input-affix-wrapper, -.ant-form-item-has-error .ant-input:hover, -.ant-form-item-has-error .ant-input-affix-wrapper:hover { - border-color: #ff4d4f; -} -.ant-form-item-has-error .ant-input:focus, -.ant-form-item-has-error .ant-input-affix-wrapper:focus, -.ant-form-item-has-error .ant-input-focused, -.ant-form-item-has-error .ant-input-affix-wrapper-focused { - border-color: #ff7875; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); - box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); -} -.ant-form-item-has-error .ant-input:not(.ant-form-item-has-error .ant-input-disabled) { - background-color: #fff; -} -.ant-form-item-has-error .ant-input-affix-wrapper:not(.ant-form-item-has-error .ant-input-affix-wrapper-disabled) { - background-color: #fff; -} -.ant-form-item-has-error .ant-input-affix-wrapper input:focus { - -webkit-box-shadow: none !important; - box-shadow: none !important; -} -.ant-form-item-has-error .ant-calendar-picker-open .ant-calendar-picker-input { - border-color: #ff7875; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); - box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); -} -.ant-form-item-has-error .ant-input-prefix { - color: #ff4d4f; -} -.ant-form-item-has-error .ant-input-group-addon { - color: #ff4d4f; - border-color: #ff4d4f; -} -.ant-form-item-has-error .has-feedback { - color: #ff4d4f; -} -.ant-form-item-has-error.ant-form-item-has-feedback .ant-form-item-children-icon { - color: #ff4d4f; - -webkit-animation-name: diffZoomIn2 !important; - animation-name: diffZoomIn2 !important; -} -.ant-form-item-has-error .ant-select:not(.ant-select-borderless) .ant-select-selector { - border-color: #ff4d4f !important; -} -.ant-form-item-has-error .ant-select:not(.ant-select-borderless).ant-select-open .ant-select-selector, -.ant-form-item-has-error .ant-select:not(.ant-select-borderless).ant-select-focused .ant-select-selector { - border-color: #ff7875; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); - box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); -} -.ant-form-item-has-error .ant-input-group-addon .ant-select.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { - border: 0; -} -.ant-form-item-has-error .ant-select.ant-select-auto-complete .ant-input:focus { - border-color: #ff4d4f; -} -.ant-form-item-has-error .ant-input-number, -.ant-form-item-has-error .ant-picker { - border-color: #ff4d4f; -} -.ant-form-item-has-error .ant-input-number-focused, -.ant-form-item-has-error .ant-picker-focused, -.ant-form-item-has-error .ant-input-number:focus, -.ant-form-item-has-error .ant-picker:focus { - border-color: #ff7875; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); - box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); -} -.ant-form-item-has-error .ant-input-number:not([disabled]):hover, -.ant-form-item-has-error .ant-picker:not([disabled]):hover { - border-color: #ff4d4f; -} -.ant-form-item-has-error .ant-mention-wrapper .ant-mention-editor, -.ant-form-item-has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover { - border-color: #ff4d4f; -} -.ant-form-item-has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, -.ant-form-item-has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus { - border-color: #ff7875; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); - box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); -} -.ant-form-item-has-error .ant-cascader-picker:focus .ant-cascader-input { - border-color: #ff7875; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); - box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2); -} -.ant-form-item-has-error .ant-transfer-list { - border-color: #ff4d4f; -} -.ant-form-item-has-error .ant-transfer-list-search:not([disabled]) { - border-color: #d9d9d9; -} -.ant-form-item-has-error .ant-transfer-list-search:not([disabled]):hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-form-item-has-error .ant-transfer-list-search:not([disabled]):focus { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-form-item-has-error-leave .ant-form-item-explain { - color: #ff4d4f; -} -.ant-form-item-is-validating.ant-form-item-has-feedback .ant-form-item-children-icon { - display: inline-block; - color: #1890ff; -} -.ant-form { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -.ant-form legend { - display: block; - width: 100%; - margin-bottom: 20px; - padding: 0; - color: rgba(0, 0, 0, 0.45); - font-size: 16px; - line-height: inherit; - border: 0; - border-bottom: 1px solid #d9d9d9; -} -.ant-form label { - font-size: 14px; -} -.ant-form input[type='search'] { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.ant-form input[type='radio'], -.ant-form input[type='checkbox'] { - line-height: normal; -} -.ant-form input[type='file'] { - display: block; -} -.ant-form input[type='range'] { - display: block; - width: 100%; -} -.ant-form select[multiple], -.ant-form select[size] { - height: auto; -} -.ant-form input[type='file']:focus, -.ant-form input[type='radio']:focus, -.ant-form input[type='checkbox']:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.ant-form output { - display: block; - padding-top: 15px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; -} -.ant-form .ant-form-text { - display: inline-block; - padding-right: 8px; -} -.ant-form-small .ant-form-item-label > label { - height: 24px; -} -.ant-form-small .ant-form-item-control-input { - min-height: 24px; -} -.ant-form-large .ant-form-item-label > label { - height: 40px; -} -.ant-form-large .ant-form-item-control-input { - min-height: 40px; -} -.ant-form-item { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - margin-bottom: 24px; - vertical-align: top; -} -.ant-form-item-with-help { - margin-bottom: 0; -} -.ant-form-item-hidden { - display: none; -} -.ant-form-item-label { - display: inline-block; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - overflow: hidden; - white-space: nowrap; - text-align: right; - vertical-align: middle; -} -.ant-form-item-label-left { - text-align: left; -} -.ant-form-item-label > label { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - height: 32px; - color: rgba(0, 0, 0, 0.85); - font-size: 14px; -} -.ant-form-item-label > label > .anticon { - font-size: 14px; - vertical-align: top; -} -.ant-form-item-label > label.ant-form-item-required::before { - display: inline-block; - margin-right: 4px; - color: #ff4d4f; - font-size: 14px; - font-family: SimSun, sans-serif; - line-height: 1; - content: '*'; -} -.ant-form-hide-required-mark .ant-form-item-label > label.ant-form-item-required::before { - display: none; -} -.ant-form-item-label > label::after { - content: ':'; - position: relative; - top: -0.5px; - margin: 0 8px 0 2px; -} -.ant-form-item-label > label.ant-form-item-no-colon::after { - content: ' '; -} -.ant-form-item-control { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} -.ant-form-item-control:first-child:not([class^='ant-col-']):not([class*=' ant-col-']) { - width: 100%; -} -.ant-form-item-control-input { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-height: 32px; -} -.ant-form-item-control-input-content { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - max-width: 100%; -} -.ant-form-item-explain, -.ant-form-item-extra { - clear: both; - min-height: 24px; - padding-top: 0px; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - line-height: 1.5715; - -webkit-transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); - transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); -} -.show-help-enter, -.show-help-appear { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.show-help-leave { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.show-help-enter.show-help-enter-active, -.show-help-appear.show-help-appear-active { - -webkit-animation-name: antShowHelpIn; - animation-name: antShowHelpIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.show-help-leave.show-help-leave-active { - -webkit-animation-name: antShowHelpOut; - animation-name: antShowHelpOut; - -webkit-animation-play-state: running; - animation-play-state: running; - pointer-events: none; -} -.show-help-enter, -.show-help-appear { - opacity: 0; - -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); -} -.show-help-leave { - -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); -} -@-webkit-keyframes antShowHelpIn { - 0% { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - opacity: 0; - } - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } -} -@keyframes antShowHelpIn { - 0% { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - opacity: 0; - } - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - opacity: 1; - } -} -@-webkit-keyframes antShowHelpOut { - to { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - opacity: 0; - } -} -@keyframes antShowHelpOut { - to { - -webkit-transform: translateY(-5px); - transform: translateY(-5px); - opacity: 0; - } -} -@-webkit-keyframes diffZoomIn1 { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@keyframes diffZoomIn1 { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@-webkit-keyframes diffZoomIn2 { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@keyframes diffZoomIn2 { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@-webkit-keyframes diffZoomIn3 { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -@keyframes diffZoomIn3 { - 0% { - -webkit-transform: scale(0); - transform: scale(0); - } - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} -.ant-form-rtl { - direction: rtl; -} -.ant-form-rtl .ant-form-item-label { - text-align: left; -} -.ant-form-rtl .ant-form-item-label > label.ant-form-item-required::before { - margin-right: 0; - margin-left: 4px; -} -.ant-form-rtl .ant-form-item-label > label::after { - margin: 0 2px 0 8px; -} -.ant-col-rtl .ant-form-item-control:first-child { - width: 100%; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-input { - padding-right: 11px; - padding-left: 24px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input-suffix { - padding-right: 11px; - padding-left: 18px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-input-affix-wrapper .ant-input { - padding: 0; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix { - right: auto; - left: 28px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-input-number { - padding-left: 18px; -} -.ant-form-rtl .ant-form-item-has-feedback > .ant-select .ant-select-arrow, -.ant-form-rtl .ant-form-item-has-feedback > .ant-select .ant-select-selection__clear, -.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow, -.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection__clear { - right: auto; - left: 28px; -} -.ant-form-rtl .ant-form-item-has-feedback > .ant-select .ant-select-selection-selected-value, -.ant-form-rtl .ant-form-item-has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value { - padding-right: 0; - padding-left: 42px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-arrow { - margin-right: 0; - margin-left: 17px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-cascader-picker-clear { - right: auto; - left: 28px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-picker { - padding-right: 11px; - padding-left: 29.2px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-picker-large { - padding-right: 11px; - padding-left: 29.2px; -} -.ant-form-rtl .ant-form-item-has-feedback .ant-picker-small { - padding-right: 7px; - padding-left: 25.2px; -} -.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-success .ant-form-item-children-icon, -.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-warning .ant-form-item-children-icon, -.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-has-error .ant-form-item-children-icon, -.ant-form-rtl .ant-form-item-has-feedback.ant-form-item-is-validating .ant-form-item-children-icon { - right: auto; - left: 0; -} -.ant-form-rtl.ant-form-inline .ant-form-item { - margin-right: 0; - margin-left: 16px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-input-number { - -webkit-box-sizing: border-box; - box-sizing: border-box; - font-variant: tabular-nums; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - width: 100%; - min-width: 0; - padding: 4px 11px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; - background-color: #fff; - background-image: none; - -webkit-transition: all 0.3s; - transition: all 0.3s; - display: inline-block; - width: 90px; - margin: 0; - padding: 0; - border: 1px solid #d9d9d9; - border-radius: 2px; -} -.ant-input-number::-moz-placeholder { - opacity: 1; -} -.ant-input-number::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-input-number:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input-number::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input-number::placeholder { - color: #bfbfbf; -} -.ant-input-number:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-input-number:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-input-number:placeholder-shown { - text-overflow: ellipsis; -} -.ant-input-number:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-input-number:focus, -.ant-input-number-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-input-number-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input-number-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-input-number[disabled] { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input-number[disabled]:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -textarea.ant-input-number { - max-width: 100%; - height: auto; - min-height: 32px; - line-height: 1.5715; - vertical-align: bottom; - -webkit-transition: all 0.3s, height 0s; - transition: all 0.3s, height 0s; -} -.ant-input-number-lg { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-input-number-sm { - padding: 0px 7px; -} -.ant-input-number-handler { - position: relative; - display: block; - width: 100%; - height: 50%; - overflow: hidden; - color: rgba(0, 0, 0, 0.45); - font-weight: bold; - line-height: 0; - text-align: center; - -webkit-transition: all 0.1s linear; - transition: all 0.1s linear; -} -.ant-input-number-handler:active { - background: #f4f4f4; -} -.ant-input-number-handler:hover .ant-input-number-handler-up-inner, -.ant-input-number-handler:hover .ant-input-number-handler-down-inner { - color: #40a9ff; -} -.ant-input-number-handler-up-inner, -.ant-input-number-handler-down-inner { - display: inline-block; - color: inherit; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - position: absolute; - right: 4px; - width: 12px; - height: 12px; - color: rgba(0, 0, 0, 0.45); - line-height: 12px; - -webkit-transition: all 0.1s linear; - transition: all 0.1s linear; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-input-number-handler-up-inner > *, -.ant-input-number-handler-down-inner > * { - line-height: 1; -} -.ant-input-number-handler-up-inner svg, -.ant-input-number-handler-down-inner svg { - display: inline-block; -} -.ant-input-number-handler-up-inner::before, -.ant-input-number-handler-down-inner::before { - display: none; -} -.ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon, -.ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon, -.ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon, -.ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon { - display: block; -} -.ant-input-number:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-input-number:hover + .ant-form-item-children-icon { - opacity: 0; - -webkit-transition: opacity 0.24s linear 0.24s; - transition: opacity 0.24s linear 0.24s; -} -.ant-input-number-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-input-number-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-input-number-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-input-number-disabled .ant-input-number-input { - cursor: not-allowed; -} -.ant-input-number-disabled .ant-input-number-handler-wrap { - display: none; -} -.ant-input-number-input { - width: 100%; - height: 30px; - padding: 0 11px; - text-align: left; - background-color: transparent; - border: 0; - border-radius: 2px; - outline: 0; - -webkit-transition: all 0.3s linear; - transition: all 0.3s linear; - -moz-appearance: textfield !important; -} -.ant-input-number-input::-moz-placeholder { - opacity: 1; -} -.ant-input-number-input::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-input-number-input:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input-number-input::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-input-number-input::placeholder { - color: #bfbfbf; -} -.ant-input-number-input:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-input-number-input:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-input-number-input:placeholder-shown { - text-overflow: ellipsis; -} -.ant-input-number-input[type='number']::-webkit-inner-spin-button, -.ant-input-number-input[type='number']::-webkit-outer-spin-button { - margin: 0; - -webkit-appearance: none; -} -.ant-input-number-lg { - padding: 0; - font-size: 16px; -} -.ant-input-number-lg input { - height: 38px; -} -.ant-input-number-sm { - padding: 0; -} -.ant-input-number-sm input { - height: 22px; - padding: 0 7px; -} -.ant-input-number-handler-wrap { - position: absolute; - top: 0; - right: 0; - width: 22px; - height: 100%; - background: #fff; - border-left: 1px solid #d9d9d9; - border-radius: 0 2px 2px 0; - opacity: 0; - -webkit-transition: opacity 0.24s linear 0.1s; - transition: opacity 0.24s linear 0.1s; -} -.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner, -.ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner { - display: inline-block; - font-size: 7px; - min-width: auto; - margin-right: 0; -} -.ant-input-number-handler-wrap:hover .ant-input-number-handler { - height: 40%; -} -.ant-input-number:hover .ant-input-number-handler-wrap { - opacity: 1; -} -.ant-input-number-handler-up { - border-top-right-radius: 2px; - cursor: pointer; -} -.ant-input-number-handler-up-inner { - top: 50%; - margin-top: -5px; - text-align: center; -} -.ant-input-number-handler-up:hover { - height: 60% !important; -} -.ant-input-number-handler-down { - top: 0; - border-top: 1px solid #d9d9d9; - border-bottom-right-radius: 2px; - cursor: pointer; -} -.ant-input-number-handler-down-inner { - top: 50%; - text-align: center; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} -.ant-input-number-handler-down:hover { - height: 60% !important; -} -.ant-input-number-handler-up-disabled, -.ant-input-number-handler-down-disabled { - cursor: not-allowed; -} -.ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner, -.ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner { - color: rgba(0, 0, 0, 0.25); -} -.ant-input-number-rtl { - direction: rtl; -} -.ant-input-number-rtl .ant-input-number-handler-wrap { - right: auto; - left: 0; - border-right: 1px solid #d9d9d9; - border-left: 0; - border-radius: 2px 0 0 2px; -} -.ant-input-number-rtl .ant-input-number-input { - direction: ltr; - text-align: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-layout { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - /* fix firefox can't set height smaller than content on flex item */ - min-height: 0; - background: #f0f2f5; -} -.ant-layout, -.ant-layout * { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} -.ant-layout.ant-layout-has-sider { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; -} -.ant-layout.ant-layout-has-sider > .ant-layout, -.ant-layout.ant-layout-has-sider > .ant-layout-content { - overflow-x: hidden; -} -.ant-layout-header, -.ant-layout-footer { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; -} -.ant-layout-header { - height: 64px; - padding: 0 50px; - color: rgba(0, 0, 0, 0.65); - line-height: 64px; - background: #001529; -} -.ant-layout-footer { - padding: 24px 50px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - background: #f0f2f5; -} -.ant-layout-content { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - /* fix firefox can't set height smaller than content on flex item */ - min-height: 0; -} -.ant-layout-sider { - position: relative; - /* fix firefox can't set width smaller than content on flex item */ - min-width: 0; - background: #001529; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} -.ant-layout-sider-children { - height: 100%; - margin-top: -0.1px; - padding-top: 0.1px; -} -.ant-layout-sider-has-trigger { - padding-bottom: 48px; -} -.ant-layout-sider-right { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; -} -.ant-layout-sider-trigger { - position: fixed; - bottom: 0; - z-index: 1; - height: 48px; - color: #fff; - line-height: 48px; - text-align: center; - background: #002140; - cursor: pointer; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} -.ant-layout-sider-zero-width > * { - overflow: hidden; -} -.ant-layout-sider-zero-width-trigger { - position: absolute; - top: 64px; - right: -36px; - z-index: 1; - width: 36px; - height: 42px; - color: #fff; - font-size: 18px; - line-height: 42px; - text-align: center; - background: #001529; - border-radius: 0 2px 2px 0; - cursor: pointer; - -webkit-transition: background 0.3s ease; - transition: background 0.3s ease; -} -.ant-layout-sider-zero-width-trigger:hover { - background: #192c3e; -} -.ant-layout-sider-zero-width-trigger-right { - left: -36px; - border-radius: 2px 0 0 2px; -} -.ant-layout-sider-light { - background: #fff; -} -.ant-layout-sider-light .ant-layout-sider-trigger { - color: rgba(0, 0, 0, 0.65); - background: #fff; -} -.ant-layout-sider-light .ant-layout-sider-zero-width-trigger { - color: rgba(0, 0, 0, 0.65); - background: #fff; -} -.ant-layout-rtl { - direction: rtl; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-list { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; -} -.ant-list * { - outline: none; -} -.ant-list-pagination { - margin-top: 24px; - text-align: right; -} -.ant-list-pagination .ant-pagination-options { - text-align: left; -} -.ant-list-more { - margin-top: 12px; - text-align: center; -} -.ant-list-more button { - padding-right: 32px; - padding-left: 32px; -} -.ant-list-spin { - min-height: 40px; - text-align: center; -} -.ant-list-empty-text { - padding: 16px; - color: rgba(0, 0, 0, 0.25); - font-size: 14px; - text-align: center; -} -.ant-list-items { - margin: 0; - padding: 0; - list-style: none; -} -.ant-list-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 12px 0; - color: rgba(0, 0, 0, 0.65); -} -.ant-list-item-meta { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - max-width: 100%; -} -.ant-list-item-meta-avatar { - margin-right: 16px; -} -.ant-list-item-meta-content { - -webkit-box-flex: 1; - -ms-flex: 1 0; - flex: 1 0; - width: 0; - color: rgba(0, 0, 0, 0.65); -} -.ant-list-item-meta-title { - margin-bottom: 4px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; -} -.ant-list-item-meta-title > a { - color: rgba(0, 0, 0, 0.65); - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-list-item-meta-title > a:hover { - color: #1890ff; -} -.ant-list-item-meta-description { - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - line-height: 1.5715; -} -.ant-list-item-action { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-left: 48px; - padding: 0; - font-size: 0; - list-style: none; -} -.ant-list-item-action > li { - position: relative; - display: inline-block; - padding: 0 8px; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - line-height: 1.5715; - text-align: center; - cursor: pointer; -} -.ant-list-item-action > li:first-child { - padding-left: 0; -} -.ant-list-item-action-split { - position: absolute; - top: 50%; - right: 0; - width: 1px; - height: 14px; - margin-top: -7px; - background-color: #f0f0f0; -} -.ant-list-header { - background: transparent; -} -.ant-list-footer { - background: transparent; -} -.ant-list-header, -.ant-list-footer { - padding-top: 12px; - padding-bottom: 12px; -} -.ant-list-empty { - padding: 16px 0; - color: rgba(0, 0, 0, 0.45); - font-size: 12px; - text-align: center; -} -.ant-list-split .ant-list-item { - border-bottom: 1px solid #f0f0f0; -} -.ant-list-split .ant-list-item:last-child { - border-bottom: none; -} -.ant-list-split .ant-list-header { - border-bottom: 1px solid #f0f0f0; -} -.ant-list-split.ant-list-empty .ant-list-footer { - border-top: 1px solid #f0f0f0; -} -.ant-list-loading .ant-list-spin-nested-loading { - min-height: 32px; -} -.ant-list-split.ant-list-something-after-last-item .ant-spin-container > .ant-list-items > .ant-list-item:last-child { - border-bottom: 1px solid #f0f0f0; -} -.ant-list-lg .ant-list-item { - padding: 16px 24px; -} -.ant-list-sm .ant-list-item { - padding: 8px 16px; -} -.ant-list-vertical .ant-list-item { - -webkit-box-align: initial; - -ms-flex-align: initial; - align-items: initial; -} -.ant-list-vertical .ant-list-item-main { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} -.ant-list-vertical .ant-list-item-extra { - margin-left: 40px; -} -.ant-list-vertical .ant-list-item-meta { - margin-bottom: 16px; -} -.ant-list-vertical .ant-list-item-meta-title { - margin-bottom: 12px; - color: rgba(0, 0, 0, 0.85); - font-size: 16px; - line-height: 24px; -} -.ant-list-vertical .ant-list-item-action { - margin-top: 16px; - margin-left: auto; -} -.ant-list-vertical .ant-list-item-action > li { - padding: 0 16px; -} -.ant-list-vertical .ant-list-item-action > li:first-child { - padding-left: 0; -} -.ant-list-grid .ant-col > .ant-list-item { - display: block; - max-width: 100%; - margin-bottom: 16px; - padding-top: 0; - padding-bottom: 0; - border-bottom: none; -} -.ant-list-item-no-flex { - display: block; -} -.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action { - float: right; -} -.ant-list-bordered { - border: 1px solid #d9d9d9; - border-radius: 2px; -} -.ant-list-bordered .ant-list-header { - padding-right: 24px; - padding-left: 24px; -} -.ant-list-bordered .ant-list-footer { - padding-right: 24px; - padding-left: 24px; -} -.ant-list-bordered .ant-list-item { - padding-right: 24px; - padding-left: 24px; -} -.ant-list-bordered .ant-list-pagination { - margin: 16px 24px; -} -.ant-list-bordered.ant-list-sm .ant-list-item { - padding: 8px 16px; -} -.ant-list-bordered.ant-list-sm .ant-list-header, -.ant-list-bordered.ant-list-sm .ant-list-footer { - padding: 8px 16px; -} -.ant-list-bordered.ant-list-lg .ant-list-item { - padding: 16px 24px; -} -.ant-list-bordered.ant-list-lg .ant-list-header, -.ant-list-bordered.ant-list-lg .ant-list-footer { - padding: 16px 24px; -} -@media screen and (max-width: 768px) { - .ant-list-item-action { - margin-left: 24px; - } - .ant-list-vertical .ant-list-item-extra { - margin-left: 24px; - } -} -@media screen and (max-width: 576px) { - .ant-list-item { - -ms-flex-wrap: wrap; - flex-wrap: wrap; - } - .ant-list-item-action { - margin-left: 12px; - } - .ant-list-vertical .ant-list-item { - -ms-flex-wrap: wrap-reverse; - flex-wrap: wrap-reverse; - } - .ant-list-vertical .ant-list-item-main { - min-width: 220px; - } - .ant-list-vertical .ant-list-item-extra { - margin: auto auto 16px; - } -} -.ant-list-rtl { - direction: rtl; - text-align: right; -} -.ant-list-rtl .ReactVirtualized__List .ant-list-item { - direction: rtl; -} -.ant-list-rtl .ant-list-pagination { - text-align: left; -} -.ant-list-rtl .ant-list-item-meta-avatar { - margin-right: 0; - margin-left: 16px; -} -.ant-list-rtl .ant-list-item-action { - margin-right: 48px; - margin-left: 0; -} -.ant-list-rtl .ant-list-item-action > li:first-child { - padding-right: 0; - padding-left: 8px; -} -.ant-list-rtl .ant-list-item-action-split { - right: auto; - left: 0; -} -.ant-list-rtl.ant-list-vertical .ant-list-item-extra { - margin-right: 40px; - margin-left: 0; -} -.ant-list-rtl.ant-list-vertical .ant-list-item-action { - margin-right: auto; -} -.ant-list-rtl .ant-list-vertical .ant-list-item-action > li:first-child { - padding-right: 0; - padding-left: 16px; -} -.ant-list-rtl .ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action { - float: left; -} -@media screen and (max-width: 768px) { - .ant-list-rtl .ant-list-item-action { - margin-right: 24px; - margin-left: 0; - } - .ant-list-rtl .ant-list-vertical .ant-list-item-extra { - margin-right: 24px; - margin-left: 0; - } -} -@media screen and (max-width: 576px) { - .ant-list-rtl .ant-list-item-action { - margin-right: 22px; - margin-left: 0; - } - .ant-list-rtl.ant-list-vertical .ant-list-item-extra { - margin: auto auto 16px; - } -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-spin { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - display: none; - color: #1890ff; - text-align: center; - vertical-align: middle; - opacity: 0; - -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); - transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), -webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.ant-spin-spinning { - position: static; - display: inline-block; - opacity: 1; -} -.ant-spin-nested-loading { - position: relative; -} -.ant-spin-nested-loading > div > .ant-spin { - position: absolute; - top: 0; - left: 0; - z-index: 4; - display: block; - width: 100%; - height: 100%; - max-height: 400px; -} -.ant-spin-nested-loading > div > .ant-spin .ant-spin-dot { - position: absolute; - top: 50%; - left: 50%; - margin: -10px; -} -.ant-spin-nested-loading > div > .ant-spin .ant-spin-text { - position: absolute; - top: 50%; - width: 100%; - padding-top: 5px; - text-shadow: 0 1px 2px #fff; -} -.ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot { - margin-top: -20px; -} -.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot { - margin: -7px; -} -.ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text { - padding-top: 2px; -} -.ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot { - margin-top: -17px; -} -.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot { - margin: -16px; -} -.ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text { - padding-top: 11px; -} -.ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot { - margin-top: -26px; -} -.ant-spin-container { - position: relative; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; -} -.ant-spin-container::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 10; - display: none \9; - width: 100%; - height: 100%; - background: #fff; - opacity: 0; - -webkit-transition: all 0.3s; - transition: all 0.3s; - content: ''; - pointer-events: none; -} -.ant-spin-blur { - clear: both; - overflow: hidden; - opacity: 0.5; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - pointer-events: none; -} -.ant-spin-blur::after { - opacity: 0.4; - pointer-events: auto; -} -.ant-spin-tip { - color: rgba(0, 0, 0, 0.45); -} -.ant-spin-dot { - position: relative; - display: inline-block; - font-size: 20px; - width: 1em; - height: 1em; -} -.ant-spin-dot-item { - position: absolute; - display: block; - width: 9px; - height: 9px; - background-color: #1890ff; - border-radius: 100%; - -webkit-transform: scale(0.75); - transform: scale(0.75); - -webkit-transform-origin: 50% 50%; - transform-origin: 50% 50%; - opacity: 0.3; - -webkit-animation: antSpinMove 1s infinite linear alternate; - animation: antSpinMove 1s infinite linear alternate; -} -.ant-spin-dot-item:nth-child(1) { - top: 0; - left: 0; -} -.ant-spin-dot-item:nth-child(2) { - top: 0; - right: 0; - -webkit-animation-delay: 0.4s; - animation-delay: 0.4s; -} -.ant-spin-dot-item:nth-child(3) { - right: 0; - bottom: 0; - -webkit-animation-delay: 0.8s; - animation-delay: 0.8s; -} -.ant-spin-dot-item:nth-child(4) { - bottom: 0; - left: 0; - -webkit-animation-delay: 1.2s; - animation-delay: 1.2s; -} -.ant-spin-dot-spin { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - -webkit-animation: antRotate 1.2s infinite linear; - animation: antRotate 1.2s infinite linear; -} -.ant-spin-sm .ant-spin-dot { - font-size: 14px; -} -.ant-spin-sm .ant-spin-dot i { - width: 6px; - height: 6px; -} -.ant-spin-lg .ant-spin-dot { - font-size: 32px; -} -.ant-spin-lg .ant-spin-dot i { - width: 14px; - height: 14px; -} -.ant-spin.ant-spin-show-text .ant-spin-text { - display: block; -} -@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { - /* IE10+ */ - .ant-spin-blur { - background: #fff; - opacity: 0.5; - } -} -@-webkit-keyframes antSpinMove { - to { - opacity: 1; - } -} -@keyframes antSpinMove { - to { - opacity: 1; - } -} -@-webkit-keyframes antRotate { - to { - -webkit-transform: rotate(405deg); - transform: rotate(405deg); - } -} -@keyframes antRotate { - to { - -webkit-transform: rotate(405deg); - transform: rotate(405deg); - } -} -.ant-spin-rtl { - direction: rtl; -} -.ant-spin-rtl .ant-spin-dot-spin { - -webkit-transform: rotate(-45deg); - transform: rotate(-45deg); - -webkit-animation-name: antRotateRtl; - animation-name: antRotateRtl; -} -@-webkit-keyframes antRotateRtl { - to { - -webkit-transform: rotate(-405deg); - transform: rotate(-405deg); - } -} -@keyframes antRotateRtl { - to { - -webkit-transform: rotate(-405deg); - transform: rotate(-405deg); - } -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-pagination { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -.ant-pagination ul, -.ant-pagination ol { - margin: 0; - padding: 0; - list-style: none; -} -.ant-pagination::after { - display: block; - clear: both; - height: 0; - overflow: hidden; - visibility: hidden; - content: ' '; -} -.ant-pagination-total-text { - display: inline-block; - height: 32px; - margin-right: 8px; - line-height: 30px; - vertical-align: middle; -} -.ant-pagination-item { - display: inline-block; - min-width: 32px; - height: 32px; - margin-right: 8px; - font-family: Arial; - line-height: 30px; - text-align: center; - vertical-align: middle; - list-style: none; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - outline: 0; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-pagination-item a { - display: block; - padding: 0 6px; - color: rgba(0, 0, 0, 0.65); - -webkit-transition: none; - transition: none; -} -.ant-pagination-item a:hover { - text-decoration: none; -} -.ant-pagination-item:focus, -.ant-pagination-item:hover { - border-color: #1890ff; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-pagination-item:focus a, -.ant-pagination-item:hover a { - color: #1890ff; -} -.ant-pagination-item-active { - font-weight: 500; - background: #fff; - border-color: #1890ff; -} -.ant-pagination-item-active a { - color: #1890ff; -} -.ant-pagination-item-active:focus, -.ant-pagination-item-active:hover { - border-color: #40a9ff; -} -.ant-pagination-item-active:focus a, -.ant-pagination-item-active:hover a { - color: #40a9ff; -} -.ant-pagination-jump-prev, -.ant-pagination-jump-next { - outline: 0; -} -.ant-pagination-jump-prev .ant-pagination-item-container, -.ant-pagination-jump-next .ant-pagination-item-container { - position: relative; -} -.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, -.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { - color: #1890ff; - font-size: 12px; - letter-spacing: -1px; - opacity: 0; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} -.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg, -.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg { - top: 0; - right: 0; - bottom: 0; - left: 0; - margin: auto; -} -.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis, -.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; - margin: auto; - color: rgba(0, 0, 0, 0.25); - letter-spacing: 2px; - text-align: center; - text-indent: 0.13em; - opacity: 1; - -webkit-transition: all 0.2s; - transition: all 0.2s; -} -.ant-pagination-jump-prev:focus .ant-pagination-item-link-icon, -.ant-pagination-jump-next:focus .ant-pagination-item-link-icon, -.ant-pagination-jump-prev:hover .ant-pagination-item-link-icon, -.ant-pagination-jump-next:hover .ant-pagination-item-link-icon { - opacity: 1; -} -.ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis, -.ant-pagination-jump-next:focus .ant-pagination-item-ellipsis, -.ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis, -.ant-pagination-jump-next:hover .ant-pagination-item-ellipsis { - opacity: 0; -} -.ant-pagination-prev, -.ant-pagination-jump-prev, -.ant-pagination-jump-next { - margin-right: 8px; -} -.ant-pagination-prev, -.ant-pagination-next, -.ant-pagination-jump-prev, -.ant-pagination-jump-next { - display: inline-block; - min-width: 32px; - height: 32px; - color: rgba(0, 0, 0, 0.65); - font-family: Arial; - line-height: 32px; - text-align: center; - vertical-align: middle; - list-style: none; - border-radius: 2px; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-pagination-prev, -.ant-pagination-next { - outline: 0; -} -.ant-pagination-prev button, -.ant-pagination-next button { - color: rgba(0, 0, 0, 0.65); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-pagination-prev:hover button, -.ant-pagination-next:hover button { - border-color: #40a9ff; -} -.ant-pagination-prev .ant-pagination-item-link, -.ant-pagination-next .ant-pagination-item-link { - display: block; - width: 100%; - height: 100%; - font-size: 12px; - text-align: center; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - outline: none; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-pagination-prev:focus .ant-pagination-item-link, -.ant-pagination-next:focus .ant-pagination-item-link, -.ant-pagination-prev:hover .ant-pagination-item-link, -.ant-pagination-next:hover .ant-pagination-item-link { - color: #1890ff; - border-color: #1890ff; -} -.ant-pagination-disabled, -.ant-pagination-disabled:hover, -.ant-pagination-disabled:focus { - cursor: not-allowed; -} -.ant-pagination-disabled .ant-pagination-item-link, -.ant-pagination-disabled:hover .ant-pagination-item-link, -.ant-pagination-disabled:focus .ant-pagination-item-link { - color: rgba(0, 0, 0, 0.25); - border-color: #d9d9d9; - cursor: not-allowed; -} -.ant-pagination-slash { - margin: 0 10px 0 5px; -} -.ant-pagination-options { - display: inline-block; - margin-left: 16px; - vertical-align: middle; -} -@media all and (-ms-high-contrast: none) { - .ant-pagination-options *::-ms-backdrop, - .ant-pagination-options { - vertical-align: top; - } -} -.ant-pagination-options-size-changer.ant-select { - display: inline-block; - width: auto; - margin-right: 8px; -} -.ant-pagination-options-quick-jumper { - display: inline-block; - height: 32px; - line-height: 32px; - vertical-align: top; -} -.ant-pagination-options-quick-jumper input { - position: relative; - display: inline-block; - width: 100%; - min-width: 0; - padding: 4px 11px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - line-height: 1.5715; - background-color: #fff; - background-image: none; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s; - transition: all 0.3s; - width: 50px; - margin: 0 8px; -} -.ant-pagination-options-quick-jumper input::-moz-placeholder { - opacity: 1; -} -.ant-pagination-options-quick-jumper input::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-pagination-options-quick-jumper input:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-pagination-options-quick-jumper input::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-pagination-options-quick-jumper input::placeholder { - color: #bfbfbf; -} -.ant-pagination-options-quick-jumper input:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-pagination-options-quick-jumper input:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-pagination-options-quick-jumper input:placeholder-shown { - text-overflow: ellipsis; -} -.ant-pagination-options-quick-jumper input:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-pagination-options-quick-jumper input:focus, -.ant-pagination-options-quick-jumper input-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-pagination-options-quick-jumper input-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-pagination-options-quick-jumper input-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-pagination-options-quick-jumper input[disabled] { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-pagination-options-quick-jumper input[disabled]:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -textarea.ant-pagination-options-quick-jumper input { - max-width: 100%; - height: auto; - min-height: 32px; - line-height: 1.5715; - vertical-align: bottom; - -webkit-transition: all 0.3s, height 0s; - transition: all 0.3s, height 0s; -} -.ant-pagination-options-quick-jumper input-lg { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-pagination-options-quick-jumper input-sm { - padding: 0px 7px; -} -.ant-pagination-simple .ant-pagination-prev, -.ant-pagination-simple .ant-pagination-next { - height: 24px; - line-height: 24px; - vertical-align: top; -} -.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link, -.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link { - height: 24px; - background-color: transparent; - border: 0; -} -.ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link::after, -.ant-pagination-simple .ant-pagination-next .ant-pagination-item-link::after { - height: 24px; - line-height: 24px; -} -.ant-pagination-simple .ant-pagination-simple-pager { - display: inline-block; - height: 24px; - margin-right: 8px; -} -.ant-pagination-simple .ant-pagination-simple-pager input { - -webkit-box-sizing: border-box; - box-sizing: border-box; - height: 100%; - margin-right: 8px; - padding: 0 6px; - text-align: center; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - outline: none; - -webkit-transition: border-color 0.3s; - transition: border-color 0.3s; -} -.ant-pagination-simple .ant-pagination-simple-pager input:hover { - border-color: #1890ff; -} -.ant-pagination.mini .ant-pagination-total-text, -.ant-pagination.mini .ant-pagination-simple-pager { - height: 24px; - line-height: 24px; -} -.ant-pagination.mini .ant-pagination-item { - min-width: 24px; - height: 24px; - margin: 0; - line-height: 22px; -} -.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) { - background: transparent; - border-color: transparent; -} -.ant-pagination.mini .ant-pagination-prev, -.ant-pagination.mini .ant-pagination-next { - min-width: 24px; - height: 24px; - margin: 0; - line-height: 24px; -} -.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, -.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link { - background: transparent; - border-color: transparent; -} -.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link::after, -.ant-pagination.mini .ant-pagination-next .ant-pagination-item-link::after { - height: 24px; - line-height: 24px; -} -.ant-pagination.mini .ant-pagination-jump-prev, -.ant-pagination.mini .ant-pagination-jump-next { - height: 24px; - margin-right: 0; - line-height: 24px; -} -.ant-pagination.mini .ant-pagination-options { - margin-left: 2px; -} -.ant-pagination.mini .ant-pagination-options-size-changer { - top: 0px; -} -.ant-pagination.mini .ant-pagination-options-quick-jumper { - height: 24px; - line-height: 24px; -} -.ant-pagination.mini .ant-pagination-options-quick-jumper input { - padding: 0px 7px; - width: 44px; -} -.ant-pagination.ant-pagination-disabled { - cursor: not-allowed; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item { - background: #f5f5f5; - border-color: #d9d9d9; - cursor: not-allowed; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item a { - color: rgba(0, 0, 0, 0.25); - background: transparent; - border: none; - cursor: not-allowed; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item-active { - background: #dbdbdb; - border-color: transparent; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a { - color: #fff; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item-link { - color: rgba(0, 0, 0, 0.25); - background: #f5f5f5; - border-color: #d9d9d9; - cursor: not-allowed; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item-link-icon { - opacity: 0; -} -.ant-pagination.ant-pagination-disabled .ant-pagination-item-ellipsis { - opacity: 1; -} -@media only screen and (max-width: 992px) { - .ant-pagination-item-after-jump-prev, - .ant-pagination-item-before-jump-next { - display: none; - } -} -@media only screen and (max-width: 576px) { - .ant-pagination-options { - display: none; - } -} -.ant-pagination-rtl { - direction: rtl; -} -.ant-pagination-rtl .ant-pagination-total-text { - margin-right: 0; - margin-left: 8px; -} -.ant-pagination-rtl .ant-pagination-item { - margin-right: 0; - margin-left: 8px; -} -.ant-pagination-rtl .ant-pagination-prev, -.ant-pagination-rtl .ant-pagination-jump-prev, -.ant-pagination-rtl .ant-pagination-jump-next { - margin-right: 0; - margin-left: 8px; -} -.ant-pagination-rtl .ant-pagination-slash { - margin: 0 5px 0 10px; -} -.ant-pagination-rtl .ant-pagination-options { - margin-right: 16px; - margin-left: 0; -} -.ant-pagination-rtl .ant-pagination-options-size-changer.ant-select { - margin-right: 0; - margin-left: 8px; -} -.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager { - margin-right: 0; - margin-left: 8px; -} -.ant-pagination-rtl.ant-pagination-simple .ant-pagination-simple-pager input { - margin-right: 0; - margin-left: 8px; -} -.ant-pagination-rtl.ant-pagination.mini .ant-pagination-options { - margin-right: 2px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-mentions { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - font-variant: tabular-nums; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - width: 100%; - min-width: 0; - padding: 4px 11px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - background-color: #fff; - background-image: none; - border: 1px solid #d9d9d9; - border-radius: 2px; - -webkit-transition: all 0.3s; - transition: all 0.3s; - position: relative; - display: inline-block; - height: auto; - padding: 0; - overflow: hidden; - line-height: 1.5715; - white-space: pre-wrap; - vertical-align: bottom; -} -.ant-mentions::-moz-placeholder { - opacity: 1; -} -.ant-mentions::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-mentions:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-mentions::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-mentions::placeholder { - color: #bfbfbf; -} -.ant-mentions:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-mentions:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-mentions:placeholder-shown { - text-overflow: ellipsis; -} -.ant-mentions:hover { - border-color: #40a9ff; - border-right-width: 1px !important; -} -.ant-mentions:focus, -.ant-mentions-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-mentions-disabled { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-mentions-disabled:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-mentions[disabled] { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-mentions[disabled]:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -textarea.ant-mentions { - max-width: 100%; - height: auto; - min-height: 32px; - line-height: 1.5715; - vertical-align: bottom; - -webkit-transition: all 0.3s, height 0s; - transition: all 0.3s, height 0s; -} -.ant-mentions-lg { - padding: 6.5px 11px; - font-size: 16px; -} -.ant-mentions-sm { - padding: 0px 7px; -} -.ant-mentions-disabled > textarea { - color: rgba(0, 0, 0, 0.25); - background-color: #f5f5f5; - cursor: not-allowed; - opacity: 1; -} -.ant-mentions-disabled > textarea:hover { - border-color: #d9d9d9; - border-right-width: 1px !important; -} -.ant-mentions-focused { - border-color: #40a9ff; - border-right-width: 1px !important; - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-mentions > textarea, -.ant-mentions-measure { - min-height: 30px; - margin: 0; - padding: 4px 11px; - overflow: inherit; - overflow-x: hidden; - overflow-y: auto; - font-weight: inherit; - font-size: inherit; - font-family: inherit; - font-style: inherit; - font-variant: inherit; - font-size-adjust: inherit; - font-stretch: inherit; - line-height: inherit; - direction: inherit; - letter-spacing: inherit; - white-space: inherit; - text-align: inherit; - vertical-align: top; - word-wrap: break-word; - word-break: inherit; - -moz-tab-size: inherit; - -o-tab-size: inherit; - tab-size: inherit; -} -.ant-mentions > textarea { - width: 100%; - border: none; - outline: none; - resize: none; -} -.ant-mentions > textarea::-moz-placeholder { - opacity: 1; -} -.ant-mentions > textarea::-webkit-input-placeholder { - color: #bfbfbf; -} -.ant-mentions > textarea:-ms-input-placeholder { - color: #bfbfbf; -} -.ant-mentions > textarea::-ms-input-placeholder { - color: #bfbfbf; -} -.ant-mentions > textarea::placeholder { - color: #bfbfbf; -} -.ant-mentions > textarea:-moz-placeholder-shown { - text-overflow: ellipsis; -} -.ant-mentions > textarea:-ms-input-placeholder { - text-overflow: ellipsis; -} -.ant-mentions > textarea:placeholder-shown { - text-overflow: ellipsis; -} -.ant-mentions > textarea:-moz-read-only { - cursor: default; -} -.ant-mentions > textarea:read-only { - cursor: default; -} -.ant-mentions-measure { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: -1; - color: transparent; - pointer-events: none; -} -.ant-mentions-measure > span { - display: inline-block; - min-height: 1em; -} -.ant-mentions-dropdown { - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - top: -9999px; - left: -9999px; - z-index: 1050; - -webkit-box-sizing: border-box; - box-sizing: border-box; - font-size: 14px; - font-variant: initial; - background-color: #fff; - border-radius: 2px; - outline: none; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-mentions-dropdown-hidden { - display: none; -} -.ant-mentions-dropdown-menu { - max-height: 250px; - margin-bottom: 0; - padding-left: 0; - overflow: auto; - list-style: none; - outline: none; -} -.ant-mentions-dropdown-menu-item { - position: relative; - display: block; - min-width: 100px; - padding: 5px 12px; - overflow: hidden; - color: rgba(0, 0, 0, 0.65); - font-weight: normal; - line-height: 1.5715; - white-space: nowrap; - text-overflow: ellipsis; - cursor: pointer; - -webkit-transition: background 0.3s ease; - transition: background 0.3s ease; -} -.ant-mentions-dropdown-menu-item:hover { - background-color: #f5f5f5; -} -.ant-mentions-dropdown-menu-item:first-child { - border-radius: 2px 2px 0 0; -} -.ant-mentions-dropdown-menu-item:last-child { - border-radius: 0 0 2px 2px; -} -.ant-mentions-dropdown-menu-item-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-mentions-dropdown-menu-item-disabled:hover { - color: rgba(0, 0, 0, 0.25); - background-color: #fff; - cursor: not-allowed; -} -.ant-mentions-dropdown-menu-item-selected { - color: rgba(0, 0, 0, 0.65); - font-weight: 600; - background-color: #fafafa; -} -.ant-mentions-dropdown-menu-item-active { - background-color: #f5f5f5; -} -.ant-mentions-rtl { - direction: rtl; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-message { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: fixed; - top: 16px; - left: 0; - z-index: 1010; - width: 100%; - pointer-events: none; -} -.ant-message-notice { - padding: 8px; - text-align: center; -} -.ant-message-notice:first-child { - margin-top: -8px; -} -.ant-message-notice-content { - display: inline-block; - padding: 10px 16px; - background: #fff; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - pointer-events: all; -} -.ant-message-success .anticon { - color: #52c41a; -} -.ant-message-error .anticon { - color: #ff4d4f; -} -.ant-message-warning .anticon { - color: #faad14; -} -.ant-message-info .anticon, -.ant-message-loading .anticon { - color: #1890ff; -} -.ant-message .anticon { - position: relative; - top: 1px; - margin-right: 8px; - font-size: 16px; -} -.ant-message-notice.move-up-leave.move-up-leave-active { - -webkit-animation-name: MessageMoveOut; - animation-name: MessageMoveOut; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; -} -@-webkit-keyframes MessageMoveOut { - 0% { - max-height: 150px; - padding: 8px; - opacity: 1; - } - 100% { - max-height: 0; - padding: 0; - opacity: 0; - } -} -@keyframes MessageMoveOut { - 0% { - max-height: 150px; - padding: 8px; - opacity: 1; - } - 100% { - max-height: 0; - padding: 0; - opacity: 0; - } -} -.ant-message-rtl { - direction: rtl; -} -.ant-message-rtl span { - direction: rtl; -} -.ant-message-rtl .anticon { - margin-right: 0; - margin-left: 8px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-modal { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - top: 100px; - width: auto; - margin: 0 auto; - padding-bottom: 24px; - pointer-events: none; -} -.ant-modal-wrap { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1000; - overflow: auto; - outline: 0; - -webkit-overflow-scrolling: touch; -} -.ant-modal-title { - margin: 0; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - font-size: 16px; - line-height: 22px; - word-wrap: break-word; -} -.ant-modal-content { - position: relative; - background-color: #fff; - background-clip: padding-box; - border: 0; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - pointer-events: auto; -} -.ant-modal-close { - position: absolute; - top: 0; - right: 0; - z-index: 10; - padding: 0; - color: rgba(0, 0, 0, 0.45); - font-weight: 700; - line-height: 1; - text-decoration: none; - background: transparent; - border: 0; - outline: 0; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-modal-close-x { - display: block; - width: 56px; - height: 56px; - font-size: 16px; - font-style: normal; - line-height: 56px; - text-align: center; - text-transform: none; - text-rendering: auto; -} -.ant-modal-close:focus, -.ant-modal-close:hover { - color: rgba(0, 0, 0, 0.75); - text-decoration: none; -} -.ant-modal-header { - padding: 16px 24px; - color: rgba(0, 0, 0, 0.65); - background: #fff; - border-bottom: 1px solid #f0f0f0; - border-radius: 2px 2px 0 0; -} -.ant-modal-body { - padding: 24px; - font-size: 14px; - line-height: 1.5715; - word-wrap: break-word; -} -.ant-modal-footer { - padding: 10px 16px; - text-align: right; - background: transparent; - border-top: 1px solid #f0f0f0; - border-radius: 0 0 2px 2px; -} -.ant-modal-footer button + button { - margin-bottom: 0; - margin-left: 8px; -} -.ant-modal.zoom-enter, -.ant-modal.zoom-appear { - -webkit-transform: none; - transform: none; - opacity: 0; - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-modal-mask { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1000; - height: 100%; - background-color: rgba(0, 0, 0, 0.45); - filter: alpha(opacity=50); -} -.ant-modal-mask-hidden { - display: none; -} -.ant-modal-open { - overflow: hidden; -} -.ant-modal-centered { - text-align: center; -} -.ant-modal-centered::before { - display: inline-block; - width: 0; - height: 100%; - vertical-align: middle; - content: ''; -} -.ant-modal-centered .ant-modal { - top: 0; - display: inline-block; - text-align: left; - vertical-align: middle; -} -@media (max-width: 767px) { - .ant-modal { - max-width: calc(100vw - 16px); - margin: 8px auto; - } - .ant-modal-centered .ant-modal { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - } -} -.ant-modal-confirm .ant-modal-header { - display: none; -} -.ant-modal-confirm .ant-modal-close { - display: none; -} -.ant-modal-confirm .ant-modal-body { - padding: 32px 32px 24px; -} -.ant-modal-confirm-body-wrapper::before { - display: table; - content: ''; -} -.ant-modal-confirm-body-wrapper::after { - display: table; - clear: both; - content: ''; -} -.ant-modal-confirm-body .ant-modal-confirm-title { - display: block; - overflow: hidden; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - font-size: 16px; - line-height: 1.4; -} -.ant-modal-confirm-body .ant-modal-confirm-content { - margin-top: 8px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; -} -.ant-modal-confirm-body > .anticon { - float: left; - margin-right: 16px; - font-size: 22px; -} -.ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content { - margin-left: 38px; -} -.ant-modal-confirm .ant-modal-confirm-btns { - float: right; - margin-top: 24px; -} -.ant-modal-confirm .ant-modal-confirm-btns button + button { - margin-bottom: 0; - margin-left: 8px; -} -.ant-modal-confirm-error .ant-modal-confirm-body > .anticon { - color: #ff4d4f; -} -.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon, -.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon { - color: #faad14; -} -.ant-modal-confirm-info .ant-modal-confirm-body > .anticon { - color: #1890ff; -} -.ant-modal-confirm-success .ant-modal-confirm-body > .anticon { - color: #52c41a; -} -.ant-modal-wrap-rtl { - direction: rtl; -} -.ant-modal-wrap-rtl .ant-modal-close { - right: initial; - left: 0; -} -.ant-modal-wrap-rtl .ant-modal-footer { - text-align: left; -} -.ant-modal-wrap-rtl .ant-modal-footer button + button { - margin-right: 8px; - margin-left: 0; -} -.ant-modal-wrap-rtl .ant-modal-confirm-body { - direction: rtl; -} -.ant-modal-wrap-rtl .ant-modal-confirm-body > .anticon { - float: right; - margin-right: 0; - margin-left: 16px; -} -.ant-modal-wrap-rtl .ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content { - margin-right: 38px; - margin-left: 0; -} -.ant-modal-wrap-rtl .ant-modal-confirm-btns { - float: left; -} -.ant-modal-wrap-rtl .ant-modal-confirm-btns button + button { - margin-right: 8px; - margin-left: 0; -} -.ant-modal-wrap-rtl.ant-modal-centered .ant-modal { - text-align: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-notification { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: fixed; - z-index: 1010; - max-width: calc(100vw - 32px); - margin-right: 24px; -} -.ant-notification-topLeft, -.ant-notification-bottomLeft { - margin-right: 0; - margin-left: 24px; -} -.ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active, -.ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active, -.ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active, -.ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active { - -webkit-animation-name: NotificationLeftFadeIn; - animation-name: NotificationLeftFadeIn; -} -.ant-notification-close-icon { - font-size: 14px; - cursor: pointer; -} -.ant-notification-hook-holder, -.ant-notification-notice { - position: relative; - width: 384px; - margin-bottom: 16px; - margin-left: auto; - overflow: hidden; - background: #fff; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-notification-topLeft .ant-notification-hook-holder, -.ant-notification-topLeft .ant-notification-notice, -.ant-notification-bottomLeft .ant-notification-hook-holder, -.ant-notification-bottomLeft .ant-notification-notice { - margin-right: auto; - margin-left: 0; -} -.ant-notification-hook-holder > .ant-notification-notice { - margin-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-notification-notice { - padding: 16px 24px; - line-height: 1.5715; -} -.ant-notification-notice-message { - display: inline-block; - margin-bottom: 8px; - color: rgba(0, 0, 0, 0.85); - font-size: 16px; - line-height: 24px; -} -.ant-notification-notice-message-single-line-auto-margin { - display: block; - width: calc(384px - 24px * 2 - 24px - 48px - 100%); - max-width: 4px; - background-color: transparent; - pointer-events: none; -} -.ant-notification-notice-message-single-line-auto-margin::before { - display: block; - content: ''; -} -.ant-notification-notice-description { - font-size: 14px; -} -.ant-notification-notice-closable .ant-notification-notice-message { - padding-right: 24px; -} -.ant-notification-notice-with-icon .ant-notification-notice-message { - margin-bottom: 4px; - margin-left: 48px; - font-size: 16px; -} -.ant-notification-notice-with-icon .ant-notification-notice-description { - margin-left: 48px; - font-size: 14px; -} -.ant-notification-notice-icon { - position: absolute; - margin-left: 4px; - font-size: 24px; - line-height: 24px; -} -.anticon.ant-notification-notice-icon-success { - color: #52c41a; -} -.anticon.ant-notification-notice-icon-info { - color: #1890ff; -} -.anticon.ant-notification-notice-icon-warning { - color: #faad14; -} -.anticon.ant-notification-notice-icon-error { - color: #ff4d4f; -} -.ant-notification-notice-close { - position: absolute; - top: 16px; - right: 22px; - color: rgba(0, 0, 0, 0.45); - outline: none; -} -.ant-notification-notice-close:hover { - color: rgba(0, 0, 0, 0.67); -} -.ant-notification-notice-btn { - float: right; - margin-top: 16px; -} -.ant-notification .notification-fade-effect { - -webkit-animation-duration: 0.24s; - animation-duration: 0.24s; - -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} -.ant-notification-fade-enter, -.ant-notification-fade-appear { - opacity: 0; - -webkit-animation-duration: 0.24s; - animation-duration: 0.24s; - -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.ant-notification-fade-leave { - -webkit-animation-duration: 0.24s; - animation-duration: 0.24s; - -webkit-animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - animation-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); - -webkit-animation-fill-mode: both; - animation-fill-mode: both; - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-play-state: paused; - animation-play-state: paused; -} -.ant-notification-fade-enter.ant-notification-fade-enter-active, -.ant-notification-fade-appear.ant-notification-fade-appear-active { - -webkit-animation-name: NotificationFadeIn; - animation-name: NotificationFadeIn; - -webkit-animation-play-state: running; - animation-play-state: running; -} -.ant-notification-fade-leave.ant-notification-fade-leave-active { - -webkit-animation-name: NotificationFadeOut; - animation-name: NotificationFadeOut; - -webkit-animation-play-state: running; - animation-play-state: running; -} -@-webkit-keyframes NotificationFadeIn { - 0% { - left: 384px; - opacity: 0; - } - 100% { - left: 0; - opacity: 1; - } -} -@keyframes NotificationFadeIn { - 0% { - left: 384px; - opacity: 0; - } - 100% { - left: 0; - opacity: 1; - } -} -@-webkit-keyframes NotificationLeftFadeIn { - 0% { - right: 384px; - opacity: 0; - } - 100% { - right: 0; - opacity: 1; - } -} -@keyframes NotificationLeftFadeIn { - 0% { - right: 384px; - opacity: 0; - } - 100% { - right: 0; - opacity: 1; - } -} -@-webkit-keyframes NotificationFadeOut { - 0% { - max-height: 150px; - margin-bottom: 16px; - padding-top: 16px; - padding-bottom: 16px; - opacity: 1; - } - 100% { - max-height: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - opacity: 0; - } -} -@keyframes NotificationFadeOut { - 0% { - max-height: 150px; - margin-bottom: 16px; - padding-top: 16px; - padding-bottom: 16px; - opacity: 1; - } - 100% { - max-height: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; - opacity: 0; - } -} -.ant-notification-rtl { - direction: rtl; -} -.ant-notification-rtl .ant-notification-notice-closable .ant-notification-notice-message { - padding-right: 0; - padding-left: 24px; -} -.ant-notification-rtl .ant-notification-notice-with-icon .ant-notification-notice-message { - margin-right: 48px; - margin-left: 0; -} -.ant-notification-rtl .ant-notification-notice-with-icon .ant-notification-notice-description { - margin-right: 48px; - margin-left: 0; -} -.ant-notification-rtl .ant-notification-notice-icon { - margin-right: 4px; - margin-left: 0; -} -.ant-notification-rtl .ant-notification-notice-close { - right: auto; - left: 22px; -} -.ant-notification-rtl .ant-notification-notice-btn { - float: left; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-page-header { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - padding: 16px 24px; - background-color: #fff; -} -.ant-page-header-ghost { - background-color: inherit; -} -.ant-page-header.has-breadcrumb { - padding-top: 12px; -} -.ant-page-header.has-footer { - padding-bottom: 0; -} -.ant-page-header-back { - margin-right: 16px; - font-size: 16px; - line-height: 1; -} -.ant-page-header-back-button { - color: #1890ff; - text-decoration: none; - outline: none; - -webkit-transition: color 0.3s; - transition: color 0.3s; - color: #000; - cursor: pointer; -} -.ant-page-header-back-button:focus, -.ant-page-header-back-button:hover { - color: #40a9ff; -} -.ant-page-header-back-button:active { - color: #096dd9; -} -.ant-page-header .ant-divider-vertical { - height: 14px; - margin: 0 12px; - vertical-align: middle; -} -.ant-breadcrumb + .ant-page-header-heading { - margin-top: 8px; -} -.ant-page-header-heading { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} -.ant-page-header-heading-left { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: 4px 0; - overflow: hidden; -} -.ant-page-header-heading-title { - margin-right: 12px; - margin-bottom: 0; - color: rgba(0, 0, 0, 0.85); - font-weight: 600; - font-size: 20px; - line-height: 32px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-page-header-heading .ant-avatar { - margin-right: 12px; -} -.ant-page-header-heading-sub-title { - margin-right: 12px; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - line-height: 1.5715; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-page-header-heading-extra { - margin: 4px 0; - white-space: nowrap; -} -.ant-page-header-heading-extra > * { - margin-left: 12px; - white-space: unset; -} -.ant-page-header-heading-extra > *:first-child { - margin-left: 0; -} -.ant-page-header-content { - padding-top: 12px; -} -.ant-page-header-footer { - margin-top: 16px; -} -.ant-page-header-footer .ant-tabs > .ant-tabs-nav { - margin: 0; -} -.ant-page-header-footer .ant-tabs > .ant-tabs-nav::before { - border: none; -} -.ant-page-header-footer .ant-tabs .ant-tabs-tab { - padding: 8px 0; - font-size: 16px; -} -.ant-page-header-compact .ant-page-header-heading { - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} -.ant-page-header-rtl { - direction: rtl; -} -.ant-page-header-rtl .ant-page-header-back { - float: right; - margin-right: 0; - margin-left: 16px; -} -.ant-page-header-rtl .ant-page-header-heading-title { - margin-right: 0; - margin-left: 12px; -} -.ant-page-header-rtl .ant-page-header-heading .ant-avatar { - margin-right: 0; - margin-left: 12px; -} -.ant-page-header-rtl .ant-page-header-heading-sub-title { - float: right; - margin-right: 0; - margin-left: 12px; -} -.ant-page-header-rtl .ant-page-header-heading-tags { - float: right; -} -.ant-page-header-rtl .ant-page-header-heading-extra { - float: left; -} -.ant-page-header-rtl .ant-page-header-heading-extra > * { - margin-right: 12px; - margin-left: 0; -} -.ant-page-header-rtl .ant-page-header-heading-extra > *:first-child { - margin-right: 0; -} -.ant-page-header-rtl .ant-page-header-footer .ant-tabs-bar .ant-tabs-nav { - float: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-popover { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: absolute; - top: 0; - left: 0; - z-index: 1030; - font-weight: normal; - white-space: normal; - text-align: left; - cursor: auto; - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} -.ant-popover::after { - position: absolute; - background: rgba(255, 255, 255, 0.01); - content: ''; -} -.ant-popover-hidden { - display: none; -} -.ant-popover-placement-top, -.ant-popover-placement-topLeft, -.ant-popover-placement-topRight { - padding-bottom: 10px; -} -.ant-popover-placement-right, -.ant-popover-placement-rightTop, -.ant-popover-placement-rightBottom { - padding-left: 10px; -} -.ant-popover-placement-bottom, -.ant-popover-placement-bottomLeft, -.ant-popover-placement-bottomRight { - padding-top: 10px; -} -.ant-popover-placement-left, -.ant-popover-placement-leftTop, -.ant-popover-placement-leftBottom { - padding-right: 10px; -} -.ant-popover-inner { - background-color: #fff; - background-clip: padding-box; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.15) \9; - box-shadow: 0 0 8px rgba(0, 0, 0, 0.15) \9; -} -@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { - .ant-popover { - /* IE10+ */ - } - .ant-popover-inner { - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - } -} -.ant-popover-title { - min-width: 177px; - min-height: 32px; - margin: 0; - padding: 5px 16px 4px; - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - border-bottom: 1px solid #f0f0f0; -} -.ant-popover-inner-content { - padding: 12px 16px; - color: rgba(0, 0, 0, 0.65); -} -.ant-popover-message { - position: relative; - padding: 4px 0 12px; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; -} -.ant-popover-message > .anticon { - position: absolute; - top: 8.0005px; - color: #faad14; - font-size: 14px; -} -.ant-popover-message-title { - padding-left: 22px; -} -.ant-popover-buttons { - margin-bottom: 4px; - text-align: right; -} -.ant-popover-buttons button { - margin-left: 8px; -} -.ant-popover-arrow { - position: absolute; - display: block; - width: 8.48528137px; - height: 8.48528137px; - background: transparent; - border-style: solid; - border-width: 4.24264069px; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); -} -.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow { - bottom: 6.2px; - border-top-color: transparent; - border-right-color: #fff; - border-bottom-color: #fff; - border-left-color: transparent; - -webkit-box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); - box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07); -} -.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg); -} -.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow { - left: 16px; -} -.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow { - right: 16px; -} -.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow { - left: 6px; - border-top-color: transparent; - border-right-color: transparent; - border-bottom-color: #fff; - border-left-color: #fff; - -webkit-box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); - box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07); -} -.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow { - top: 50%; - -webkit-transform: translateY(-50%) rotate(45deg); - transform: translateY(-50%) rotate(45deg); -} -.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow { - top: 12px; -} -.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow { - bottom: 12px; -} -.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow { - top: 6px; - border-top-color: #fff; - border-right-color: transparent; - border-bottom-color: transparent; - border-left-color: #fff; - -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); - box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.06); -} -.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow { - left: 50%; - -webkit-transform: translateX(-50%) rotate(45deg); - transform: translateX(-50%) rotate(45deg); -} -.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow { - left: 16px; -} -.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow { - right: 16px; -} -.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow, -.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow { - right: 6px; - border-top-color: #fff; - border-right-color: #fff; - border-bottom-color: transparent; - border-left-color: transparent; - -webkit-box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); - box-shadow: 3px -3px 7px rgba(0, 0, 0, 0.07); -} -.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow { - top: 50%; - -webkit-transform: translateY(-50%) rotate(45deg); - transform: translateY(-50%) rotate(45deg); -} -.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow { - top: 12px; -} -.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow { - bottom: 12px; -} -.ant-popover-rtl { - direction: rtl; - text-align: right; -} -.ant-popover-rtl .ant-popover-message-title { - padding-right: 22px; - padding-left: 16px; -} -.ant-popover-rtl .ant-popover-buttons { - text-align: left; -} -.ant-popover-rtl .ant-popover-buttons button { - margin-right: 8px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-popconfirm { - z-index: 1060; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-progress { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; -} -.ant-progress-line { - position: relative; - width: 100%; - font-size: 14px; -} -.ant-progress-steps { - display: inline-block; -} -.ant-progress-steps-outer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-progress-steps-item { - -ms-flex-negative: 0; - flex-shrink: 0; - min-width: 2px; - margin-right: 2px; - background: #f3f3f3; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-progress-steps-item-active { - background: #1890ff; -} -.ant-progress-small.ant-progress-line, -.ant-progress-small.ant-progress-line .ant-progress-text .anticon { - font-size: 12px; -} -.ant-progress-outer { - display: inline-block; - width: 100%; - margin-right: 0; - padding-right: 0; -} -.ant-progress-show-info .ant-progress-outer { - margin-right: calc(-2em - 8px); - padding-right: calc(2em + 8px); -} -.ant-progress-inner { - position: relative; - display: inline-block; - width: 100%; - overflow: hidden; - vertical-align: middle; - background-color: #f5f5f5; - border-radius: 100px; -} -.ant-progress-circle-trail { - stroke: #f5f5f5; -} -.ant-progress-circle-path { - -webkit-animation: ant-progress-appear 0.3s; - animation: ant-progress-appear 0.3s; -} -.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path { - stroke: #1890ff; -} -.ant-progress-success-bg, -.ant-progress-bg { - position: relative; - background-color: #1890ff; - border-radius: 100px; - -webkit-transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s; - transition: all 0.4s cubic-bezier(0.08, 0.82, 0.17, 1) 0s; -} -.ant-progress-success-bg { - position: absolute; - top: 0; - left: 0; - background-color: #52c41a; -} -.ant-progress-text { - display: inline-block; - width: 2em; - margin-left: 8px; - color: rgba(0, 0, 0, 0.45); - font-size: 1em; - line-height: 1; - white-space: nowrap; - text-align: left; - vertical-align: middle; - word-break: normal; -} -.ant-progress-text .anticon { - font-size: 14px; -} -.ant-progress-status-active .ant-progress-bg::before { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: #fff; - border-radius: 10px; - opacity: 0; - -webkit-animation: ant-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite; - animation: ant-progress-active 2.4s cubic-bezier(0.23, 1, 0.32, 1) infinite; - content: ''; -} -.ant-progress-status-exception .ant-progress-bg { - background-color: #ff4d4f; -} -.ant-progress-status-exception .ant-progress-text { - color: #ff4d4f; -} -.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path { - stroke: #ff4d4f; -} -.ant-progress-status-success .ant-progress-bg { - background-color: #52c41a; -} -.ant-progress-status-success .ant-progress-text { - color: #52c41a; -} -.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path { - stroke: #52c41a; -} -.ant-progress-circle .ant-progress-inner { - position: relative; - line-height: 1; - background-color: transparent; -} -.ant-progress-circle .ant-progress-text { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 1em; - line-height: 1; - white-space: normal; - text-align: center; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} -.ant-progress-circle .ant-progress-text .anticon { - font-size: 1.16666667em; -} -.ant-progress-circle.ant-progress-status-exception .ant-progress-text { - color: #ff4d4f; -} -.ant-progress-circle.ant-progress-status-success .ant-progress-text { - color: #52c41a; -} -@-webkit-keyframes ant-progress-active { - 0% { - width: 0; - opacity: 0.1; - } - 20% { - width: 0; - opacity: 0.5; - } - 100% { - width: 100%; - opacity: 0; - } -} -@keyframes ant-progress-active { - 0% { - width: 0; - opacity: 0.1; - } - 20% { - width: 0; - opacity: 0.5; - } - 100% { - width: 100%; - opacity: 0; - } -} -.ant-progress-rtl { - direction: rtl; -} -.ant-progress-rtl.ant-progress-show-info .ant-progress-outer { - margin-right: 0; - margin-left: calc(-2em - 8px); - padding-right: 0; - padding-left: calc(2em + 8px); -} -.ant-progress-rtl .ant-progress-success-bg { - right: 0; - left: auto; -} -.ant-progress-rtl.ant-progress-line .ant-progress-text, -.ant-progress-rtl.ant-progress-steps .ant-progress-text { - margin-right: 8px; - margin-left: 0; - text-align: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-rate { - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; - margin: 0; - padding: 0; - color: #fadb14; - font-size: 20px; - line-height: unset; - list-style: none; - outline: none; -} -.ant-rate-disabled .ant-rate-star { - cursor: default; -} -.ant-rate-disabled .ant-rate-star:hover { - -webkit-transform: scale(1); - transform: scale(1); -} -.ant-rate-star { - position: relative; - display: inline-block; - margin: 0; - padding: 0; - color: inherit; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-rate-star:not(:last-child) { - margin-right: 8px; -} -.ant-rate-star > div:focus { - outline: 0; -} -.ant-rate-star > div:hover, -.ant-rate-star > div:focus { - -webkit-transform: scale(1.1); - transform: scale(1.1); -} -.ant-rate-star-first, -.ant-rate-star-second { - color: #f0f0f0; - -webkit-transition: all 0.3s; - transition: all 0.3s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-rate-star-first .anticon, -.ant-rate-star-second .anticon { - vertical-align: middle; -} -.ant-rate-star-first { - position: absolute; - top: 0; - left: 0; - width: 50%; - height: 100%; - overflow: hidden; - opacity: 0; -} -.ant-rate-star-half .ant-rate-star-first, -.ant-rate-star-half .ant-rate-star-second { - opacity: 1; -} -.ant-rate-star-half .ant-rate-star-first, -.ant-rate-star-full .ant-rate-star-second { - color: inherit; -} -.ant-rate-text { - display: inline-block; - margin: 0 8px; - font-size: 14px; -} -.ant-rate-rtl { - direction: rtl; -} -.ant-rate-rtl .ant-rate-star:not(:last-child) { - margin-right: 0; - margin-left: 8px; -} -.ant-rate-rtl .ant-rate-star-first { - right: 0; - left: auto; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-result { - padding: 48px 32px; -} -.ant-result-success .ant-result-icon > .anticon { - color: #52c41a; -} -.ant-result-error .ant-result-icon > .anticon { - color: #ff4d4f; -} -.ant-result-info .ant-result-icon > .anticon { - color: #1890ff; -} -.ant-result-warning .ant-result-icon > .anticon { - color: #faad14; -} -.ant-result-image { - width: 250px; - height: 295px; - margin: auto; -} -.ant-result-icon { - margin-bottom: 24px; - text-align: center; -} -.ant-result-icon > .anticon { - font-size: 72px; -} -.ant-result-title { - color: rgba(0, 0, 0, 0.85); - font-size: 24px; - line-height: 1.8; - text-align: center; -} -.ant-result-subtitle { - color: rgba(0, 0, 0, 0.45); - font-size: 14px; - line-height: 1.6; - text-align: center; -} -.ant-result-extra { - margin: 24px 0 0 0; - text-align: center; -} -.ant-result-extra > * { - margin-right: 8px; -} -.ant-result-extra > *:last-child { - margin-right: 0; -} -.ant-result-content { - margin-top: 24px; - padding: 24px 40px; - background-color: #fafafa; -} -.ant-result-rtl { - direction: rtl; -} -.ant-result-rtl .ant-result-extra > * { - margin-right: 0; - margin-left: 8px; -} -.ant-result-rtl .ant-result-extra > *:last-child { - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-skeleton { - display: table; - width: 100%; -} -.ant-skeleton-header { - display: table-cell; - padding-right: 16px; - vertical-align: top; -} -.ant-skeleton-header .ant-skeleton-avatar { - display: inline-block; - vertical-align: top; - background: #f2f2f2; - width: 32px; - height: 32px; - line-height: 32px; -} -.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle { - border-radius: 50%; -} -.ant-skeleton-header .ant-skeleton-avatar-lg { - width: 40px; - height: 40px; - line-height: 40px; -} -.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle { - border-radius: 50%; -} -.ant-skeleton-header .ant-skeleton-avatar-sm { - width: 24px; - height: 24px; - line-height: 24px; -} -.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle { - border-radius: 50%; -} -.ant-skeleton-content { - display: table-cell; - width: 100%; - vertical-align: top; -} -.ant-skeleton-content .ant-skeleton-title { - width: 100%; - height: 16px; - margin-top: 16px; - background: #f2f2f2; -} -.ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph { - margin-top: 24px; -} -.ant-skeleton-content .ant-skeleton-paragraph { - padding: 0; -} -.ant-skeleton-content .ant-skeleton-paragraph > li { - width: 100%; - height: 16px; - list-style: none; - background: #f2f2f2; -} -.ant-skeleton-content .ant-skeleton-paragraph > li:last-child:not(:first-child):not(:nth-child(2)) { - width: 61%; -} -.ant-skeleton-content .ant-skeleton-paragraph > li + li { - margin-top: 16px; -} -.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title { - margin-top: 12px; -} -.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph { - margin-top: 28px; -} -.ant-skeleton-round .ant-skeleton-content .ant-skeleton-title, -.ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph > li { - border-radius: 100px; -} -.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, -.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li { - background: -webkit-gradient(linear, left top, right top, color-stop(25%, #f2f2f2), color-stop(37%, #e6e6e6), color-stop(63%, #f2f2f2)); - background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); - background-size: 400% 100%; - -webkit-animation: ant-skeleton-loading 1.4s ease infinite; - animation: ant-skeleton-loading 1.4s ease infinite; -} -.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar { - background: -webkit-gradient(linear, left top, right top, color-stop(25%, #f2f2f2), color-stop(37%, #e6e6e6), color-stop(63%, #f2f2f2)); - background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); - background-size: 400% 100%; - -webkit-animation: ant-skeleton-loading 1.4s ease infinite; - animation: ant-skeleton-loading 1.4s ease infinite; -} -.ant-skeleton.ant-skeleton-active .ant-skeleton-button { - background: -webkit-gradient(linear, left top, right top, color-stop(25%, #f2f2f2), color-stop(37%, #e6e6e6), color-stop(63%, #f2f2f2)); - background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); - background-size: 400% 100%; - -webkit-animation: ant-skeleton-loading 1.4s ease infinite; - animation: ant-skeleton-loading 1.4s ease infinite; -} -.ant-skeleton.ant-skeleton-active .ant-skeleton-input { - background: -webkit-gradient(linear, left top, right top, color-stop(25%, #f2f2f2), color-stop(37%, #e6e6e6), color-stop(63%, #f2f2f2)); - background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); - background-size: 400% 100%; - -webkit-animation: ant-skeleton-loading 1.4s ease infinite; - animation: ant-skeleton-loading 1.4s ease infinite; -} -.ant-skeleton.ant-skeleton-active .ant-skeleton-image { - background: -webkit-gradient(linear, left top, right top, color-stop(25%, #f2f2f2), color-stop(37%, #e6e6e6), color-stop(63%, #f2f2f2)); - background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%); - background-size: 400% 100%; - -webkit-animation: ant-skeleton-loading 1.4s ease infinite; - animation: ant-skeleton-loading 1.4s ease infinite; -} -.ant-skeleton-element { - display: inline-block; - width: auto; -} -.ant-skeleton-element .ant-skeleton-button { - display: inline-block; - vertical-align: top; - background: #f2f2f2; - border-radius: 2px; - width: 64px; - height: 32px; - line-height: 32px; -} -.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle { - width: 32px; - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round { - border-radius: 32px; -} -.ant-skeleton-element .ant-skeleton-button-lg { - width: 80px; - height: 40px; - line-height: 40px; -} -.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-circle { - width: 40px; - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-button-lg.ant-skeleton-button-round { - border-radius: 40px; -} -.ant-skeleton-element .ant-skeleton-button-sm { - width: 48px; - height: 24px; - line-height: 24px; -} -.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-circle { - width: 24px; - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-button-sm.ant-skeleton-button-round { - border-radius: 24px; -} -.ant-skeleton-element .ant-skeleton-avatar { - display: inline-block; - vertical-align: top; - background: #f2f2f2; - width: 32px; - height: 32px; - line-height: 32px; -} -.ant-skeleton-element .ant-skeleton-avatar.ant-skeleton-avatar-circle { - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-avatar-lg { - width: 40px; - height: 40px; - line-height: 40px; -} -.ant-skeleton-element .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle { - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-avatar-sm { - width: 24px; - height: 24px; - line-height: 24px; -} -.ant-skeleton-element .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle { - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-input { - display: inline-block; - vertical-align: top; - background: #f2f2f2; - width: 100%; - height: 32px; - line-height: 32px; -} -.ant-skeleton-element .ant-skeleton-input-lg { - width: 100%; - height: 40px; - line-height: 40px; -} -.ant-skeleton-element .ant-skeleton-input-sm { - width: 100%; - height: 24px; - line-height: 24px; -} -.ant-skeleton-element .ant-skeleton-image { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - vertical-align: top; - background: #f2f2f2; - width: 96px; - height: 96px; - line-height: 96px; -} -.ant-skeleton-element .ant-skeleton-image.ant-skeleton-image-circle { - border-radius: 50%; -} -.ant-skeleton-element .ant-skeleton-image-path { - fill: #bfbfbf; -} -.ant-skeleton-element .ant-skeleton-image-svg { - width: 48px; - height: 48px; - line-height: 48px; - max-width: 192px; - max-height: 192px; -} -.ant-skeleton-element .ant-skeleton-image-svg.ant-skeleton-image-circle { - border-radius: 50%; -} -@-webkit-keyframes ant-skeleton-loading { - 0% { - background-position: 100% 50%; - } - 100% { - background-position: 0 50%; - } -} -@keyframes ant-skeleton-loading { - 0% { - background-position: 100% 50%; - } - 100% { - background-position: 0 50%; - } -} -.ant-skeleton-rtl { - direction: rtl; -} -.ant-skeleton-rtl .ant-skeleton-header { - padding-right: 0; - padding-left: 16px; -} -.ant-skeleton-rtl.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, -.ant-skeleton-rtl.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li { - -webkit-animation-name: ant-skeleton-loading-rtl; - animation-name: ant-skeleton-loading-rtl; -} -.ant-skeleton-rtl.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar { - -webkit-animation-name: ant-skeleton-loading-rtl; - animation-name: ant-skeleton-loading-rtl; -} -@-webkit-keyframes ant-skeleton-loading-rtl { - 0% { - background-position: 0% 50%; - } - 100% { - background-position: 100% 50%; - } -} -@keyframes ant-skeleton-loading-rtl { - 0% { - background-position: 0% 50%; - } - 100% { - background-position: 100% 50%; - } -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-slider { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - height: 12px; - margin: 10px 6px 10px; - padding: 4px 0; - cursor: pointer; - -ms-touch-action: none; - touch-action: none; -} -.ant-slider-vertical { - width: 12px; - height: 100%; - margin: 6px 10px; - padding: 0 4px; -} -.ant-slider-vertical .ant-slider-rail { - width: 4px; - height: 100%; -} -.ant-slider-vertical .ant-slider-track { - width: 4px; -} -.ant-slider-vertical .ant-slider-handle { - margin-top: -6px; - margin-left: -5px; -} -.ant-slider-vertical .ant-slider-mark { - top: 0; - left: 12px; - width: 18px; - height: 100%; -} -.ant-slider-vertical .ant-slider-mark-text { - left: 4px; - white-space: nowrap; -} -.ant-slider-vertical .ant-slider-step { - width: 4px; - height: 100%; -} -.ant-slider-vertical .ant-slider-dot { - top: auto; - left: 2px; - margin-bottom: -4px; -} -.ant-slider-tooltip .ant-tooltip-inner { - min-width: unset; -} -.ant-slider-rtl.ant-slider-vertical .ant-slider-handle { - margin-right: -5px; - margin-left: 0; -} -.ant-slider-rtl.ant-slider-vertical .ant-slider-mark { - right: 12px; - left: auto; -} -.ant-slider-rtl.ant-slider-vertical .ant-slider-mark-text { - right: 4px; - left: auto; -} -.ant-slider-rtl.ant-slider-vertical .ant-slider-dot { - right: 2px; - left: auto; -} -.ant-slider-with-marks { - margin-bottom: 28px; -} -.ant-slider-rail { - position: absolute; - width: 100%; - height: 4px; - background-color: #f5f5f5; - border-radius: 2px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; -} -.ant-slider-track { - position: absolute; - height: 4px; - background-color: #91d5ff; - border-radius: 2px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; -} -.ant-slider-handle { - position: absolute; - width: 14px; - height: 14px; - margin-top: -5px; - background-color: #fff; - border: solid 2px #91d5ff; - border-radius: 50%; - -webkit-box-shadow: 0; - box-shadow: 0; - cursor: pointer; - -webkit-transition: border-color 0.3s, -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); - transition: border-color 0.3s, -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); - transition: border-color 0.3s, box-shadow 0.6s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); - transition: border-color 0.3s, box-shadow 0.6s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28), -webkit-box-shadow 0.6s, -webkit-transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); -} -.ant-slider-handle-dragging.ant-slider-handle-dragging.ant-slider-handle-dragging { - border-color: #46a6ff; - -webkit-box-shadow: 0 0 0 5px rgba(24, 144, 255, 0.12); - box-shadow: 0 0 0 5px rgba(24, 144, 255, 0.12); -} -.ant-slider-handle:focus { - border-color: #46a6ff; - outline: none; - -webkit-box-shadow: 0 0 0 5px rgba(24, 144, 255, 0.12); - box-shadow: 0 0 0 5px rgba(24, 144, 255, 0.12); -} -.ant-slider-handle.ant-tooltip-open { - border-color: #1890ff; -} -.ant-slider:hover .ant-slider-rail { - background-color: #e1e1e1; -} -.ant-slider:hover .ant-slider-track { - background-color: #69c0ff; -} -.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) { - border-color: #69c0ff; -} -.ant-slider-mark { - position: absolute; - top: 14px; - left: 0; - width: 100%; - font-size: 14px; -} -.ant-slider-mark-text { - position: absolute; - display: inline-block; - color: rgba(0, 0, 0, 0.45); - text-align: center; - word-break: keep-all; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-slider-mark-text-active { - color: rgba(0, 0, 0, 0.65); -} -.ant-slider-step { - position: absolute; - width: 100%; - height: 4px; - background: transparent; -} -.ant-slider-dot { - position: absolute; - top: -2px; - width: 8px; - height: 8px; - margin-left: -4px; - background-color: #fff; - border: 2px solid #f0f0f0; - border-radius: 50%; - cursor: pointer; -} -.ant-slider-dot:first-child { - margin-left: -4px; -} -.ant-slider-dot:last-child { - margin-left: -4px; -} -.ant-slider-dot-active { - border-color: #8cc8ff; -} -.ant-slider-disabled { - cursor: not-allowed; -} -.ant-slider-disabled .ant-slider-track { - background-color: rgba(0, 0, 0, 0.25) !important; -} -.ant-slider-disabled .ant-slider-handle, -.ant-slider-disabled .ant-slider-dot { - background-color: #fff; - border-color: rgba(0, 0, 0, 0.25) !important; - -webkit-box-shadow: none; - box-shadow: none; - cursor: not-allowed; -} -.ant-slider-disabled .ant-slider-mark-text, -.ant-slider-disabled .ant-slider-dot { - cursor: not-allowed !important; -} -.ant-slider-rtl { - direction: rtl; -} -.ant-slider-rtl .ant-slider-mark { - right: 0; - left: auto; -} -.ant-slider-rtl .ant-slider-dot { - margin-right: -4px; - margin-left: 0; -} -.ant-slider-rtl .ant-slider-dot:first-child { - margin-right: -4px; - margin-left: 0; -} -.ant-slider-rtl .ant-slider-dot:last-child { - margin-right: -4px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-space { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} -.ant-space-vertical { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.ant-space-align-center { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-space-align-start { - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} -.ant-space-align-end { - -webkit-box-align: end; - -ms-flex-align: end; - align-items: flex-end; -} -.ant-space-align-baseline { - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; -} -.ant-space-rtl { - direction: rtl; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-statistic { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; -} -.ant-statistic-title { - margin-bottom: 4px; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; -} -.ant-statistic-content { - color: rgba(0, 0, 0, 0.85); - font-size: 24px; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; -} -.ant-statistic-content-value { - display: inline-block; - direction: ltr; -} -.ant-statistic-content-value-decimal { - font-size: 16px; -} -.ant-statistic-content-prefix, -.ant-statistic-content-suffix { - display: inline-block; -} -.ant-statistic-content-prefix { - margin-right: 4px; -} -.ant-statistic-content-suffix { - margin-left: 4px; - font-size: 16px; -} -.ant-statistic-rtl { - direction: rtl; -} -.ant-statistic-rtl .ant-statistic-content-prefix { - margin-right: 0; - margin-left: 4px; -} -.ant-statistic-rtl .ant-statistic-content-suffix { - margin-right: 4px; - margin-left: 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-steps { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; - font-size: 0; - text-align: initial; -} -.ant-steps-item { - position: relative; - display: inline-block; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow: hidden; - vertical-align: top; -} -.ant-steps-item-container { - outline: none; -} -.ant-steps-item:last-child { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-tail, -.ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - display: none; -} -.ant-steps-item-icon, -.ant-steps-item-content { - display: inline-block; - vertical-align: top; -} -.ant-steps-item-icon { - width: 32px; - height: 32px; - margin: 0 8px 0 0; - font-size: 16px; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - line-height: 32px; - text-align: center; - border: 1px solid rgba(0, 0, 0, 0.25); - border-radius: 32px; - -webkit-transition: background-color 0.3s, border-color 0.3s; - transition: background-color 0.3s, border-color 0.3s; -} -.ant-steps-item-icon > .ant-steps-icon { - position: relative; - top: -1px; - color: #1890ff; - line-height: 1; -} -.ant-steps-item-tail { - position: absolute; - top: 12px; - left: 0; - width: 100%; - padding: 0 10px; -} -.ant-steps-item-tail::after { - display: inline-block; - width: 100%; - height: 1px; - background: #f0f0f0; - border-radius: 1px; - -webkit-transition: background 0.3s; - transition: background 0.3s; - content: ''; -} -.ant-steps-item-title { - position: relative; - display: inline-block; - padding-right: 16px; - color: rgba(0, 0, 0, 0.65); - font-size: 16px; - line-height: 32px; -} -.ant-steps-item-title::after { - position: absolute; - top: 16px; - left: 100%; - display: block; - width: 9999px; - height: 1px; - background: #f0f0f0; - content: ''; -} -.ant-steps-item-subtitle { - display: inline; - margin-left: 8px; - color: rgba(0, 0, 0, 0.45); - font-weight: normal; - font-size: 14px; -} -.ant-steps-item-description { - color: rgba(0, 0, 0, 0.45); - font-size: 14px; -} -.ant-steps-item-wait .ant-steps-item-icon { - background-color: #fff; - border-color: rgba(0, 0, 0, 0.25); -} -.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon { - color: rgba(0, 0, 0, 0.25); -} -.ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { - background: rgba(0, 0, 0, 0.25); -} -.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title { - color: rgba(0, 0, 0, 0.45); -} -.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - background-color: #f0f0f0; -} -.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description { - color: rgba(0, 0, 0, 0.45); -} -.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after { - background-color: #f0f0f0; -} -.ant-steps-item-process .ant-steps-item-icon { - background-color: #fff; - border-color: #1890ff; -} -.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { - color: #1890ff; -} -.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { - background: #1890ff; -} -.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title { - color: rgba(0, 0, 0, 0.85); -} -.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - background-color: #f0f0f0; -} -.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description { - color: rgba(0, 0, 0, 0.65); -} -.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail::after { - background-color: #f0f0f0; -} -.ant-steps-item-process .ant-steps-item-icon { - background: #1890ff; -} -.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { - color: #fff; -} -.ant-steps-item-process .ant-steps-item-title { - font-weight: 500; -} -.ant-steps-item-finish .ant-steps-item-icon { - background-color: #fff; - border-color: #1890ff; -} -.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon { - color: #1890ff; -} -.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { - background: #1890ff; -} -.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title { - color: rgba(0, 0, 0, 0.65); -} -.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - background-color: #1890ff; -} -.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description { - color: rgba(0, 0, 0, 0.45); -} -.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after { - background-color: #1890ff; -} -.ant-steps-item-error .ant-steps-item-icon { - background-color: #fff; - border-color: #ff4d4f; -} -.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon { - color: #ff4d4f; -} -.ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot { - background: #ff4d4f; -} -.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title { - color: #ff4d4f; -} -.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - background-color: #f0f0f0; -} -.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description { - color: #ff4d4f; -} -.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-tail::after { - background-color: #f0f0f0; -} -.ant-steps-item.ant-steps-next-error .ant-steps-item-title::after { - background: #ff4d4f; -} -.ant-steps-item-disabled { - cursor: not-allowed; -} -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] { - cursor: pointer; -} -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-title, -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-subtitle, -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-description, -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button'] .ant-steps-item-icon .ant-steps-icon { - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-title, -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-subtitle, -.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role='button']:hover .ant-steps-item-description { - color: #1890ff; -} -.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon { - border-color: #1890ff; -} -.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role='button']:hover .ant-steps-item-icon .ant-steps-icon { - color: #1890ff; -} -.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item { - margin-right: 16px; - white-space: nowrap; -} -.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child { - margin-right: 0; -} -.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title { - padding-right: 0; -} -.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail { - display: none; -} -.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description { - max-width: 140px; - white-space: normal; -} -.ant-steps-item-custom .ant-steps-item-icon { - height: auto; - background: none; - border: 0; -} -.ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon { - top: 0px; - left: 0.5px; - width: 32px; - height: 32px; - font-size: 24px; - line-height: 32px; -} -.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon { - color: #1890ff; -} -.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon { - width: auto; - background: none; -} -.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item { - margin-right: 12px; -} -.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child { - margin-right: 0; -} -.ant-steps-small .ant-steps-item-icon { - width: 24px; - height: 24px; - margin: 0 8px 0 0; - font-size: 12px; - line-height: 24px; - text-align: center; - border-radius: 24px; -} -.ant-steps-small .ant-steps-item-title { - padding-right: 12px; - font-size: 14px; - line-height: 24px; -} -.ant-steps-small .ant-steps-item-title::after { - top: 12px; -} -.ant-steps-small .ant-steps-item-description { - color: rgba(0, 0, 0, 0.45); - font-size: 14px; -} -.ant-steps-small .ant-steps-item-tail { - top: 8px; -} -.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon { - width: inherit; - height: inherit; - line-height: inherit; - background: none; - border: 0; - border-radius: 0; -} -.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon { - font-size: 24px; - line-height: 24px; - -webkit-transform: none; - transform: none; -} -.ant-steps-vertical { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.ant-steps-vertical .ant-steps-item { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - overflow: visible; -} -.ant-steps-vertical .ant-steps-item-icon { - float: left; - margin-right: 16px; -} -.ant-steps-vertical .ant-steps-item-content { - display: block; - min-height: 48px; - overflow: hidden; -} -.ant-steps-vertical .ant-steps-item-title { - line-height: 32px; -} -.ant-steps-vertical .ant-steps-item-description { - padding-bottom: 12px; -} -.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - position: absolute; - top: 0; - left: 16px; - width: 1px; - height: 100%; - padding: 38px 0 6px; -} -.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail::after { - width: 1px; - height: 100%; -} -.ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail { - display: block; -} -.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - display: none; -} -.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail { - position: absolute; - top: 0; - left: 12px; - padding: 30px 0 6px; -} -.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title { - line-height: 24px; -} -.ant-steps-rtl.ant-steps-vertical .ant-steps-item-icon { - float: right; - margin-right: 0; - margin-left: 16px; -} -.ant-steps-rtl.ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - right: 16px; - left: auto; -} -.ant-steps-rtl.ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail { - right: 12px; - left: auto; -} -@media (max-width: 480px) { - .ant-steps-horizontal.ant-steps-label-horizontal { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - } - .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item { - display: block; - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; - overflow: visible; - } - .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon { - float: left; - margin-right: 16px; - } - .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-content { - display: block; - min-height: 48px; - overflow: hidden; - } - .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-title { - line-height: 32px; - } - .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-description { - padding-bottom: 12px; - } - .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - position: absolute; - top: 0; - left: 16px; - width: 1px; - height: 100%; - padding: 38px 0 6px; - } - .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail::after { - width: 1px; - height: 100%; - } - .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail { - display: block; - } - .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title::after { - display: none; - } - .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-tail { - position: absolute; - top: 0; - left: 12px; - padding: 30px 0 6px; - } - .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-title { - line-height: 24px; - } - .ant-steps-rtl.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon { - float: right; - margin-right: 0; - margin-left: 16px; - } - .ant-steps-rtl.ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - right: 16px; - left: auto; - } - .ant-steps-rtl.ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-tail { - right: 12px; - left: auto; - } -} -.ant-steps-label-vertical .ant-steps-item { - overflow: visible; -} -.ant-steps-label-vertical .ant-steps-item-tail { - margin-left: 58px; - padding: 3.5px 24px; -} -.ant-steps-label-vertical .ant-steps-item-content { - display: block; - width: 116px; - margin-top: 8px; - text-align: center; -} -.ant-steps-label-vertical .ant-steps-item-icon { - display: inline-block; - margin-left: 42px; -} -.ant-steps-label-vertical .ant-steps-item-title { - padding-right: 0; - padding-left: 0; -} -.ant-steps-label-vertical .ant-steps-item-title::after { - display: none; -} -.ant-steps-label-vertical .ant-steps-item-subtitle { - display: block; - margin-bottom: 4px; - margin-left: 0; - line-height: 1.5715; -} -.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon { - margin-left: 46px; -} -.ant-steps-dot .ant-steps-item-title, -.ant-steps-dot.ant-steps-small .ant-steps-item-title { - line-height: 1.5715; -} -.ant-steps-dot .ant-steps-item-tail, -.ant-steps-dot.ant-steps-small .ant-steps-item-tail { - top: 2px; - width: 100%; - margin: 0 0 0 70px; - padding: 0; -} -.ant-steps-dot .ant-steps-item-tail::after, -.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after { - width: calc(100% - 20px); - height: 3px; - margin-left: 12px; -} -.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot, -.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot { - left: 2px; -} -.ant-steps-dot .ant-steps-item-icon, -.ant-steps-dot.ant-steps-small .ant-steps-item-icon { - width: 8px; - height: 8px; - margin-left: 67px; - padding-right: 0; - line-height: 8px; - background: transparent; - border: 0; -} -.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot, -.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot { - position: relative; - float: left; - width: 100%; - height: 100%; - border-radius: 100px; - -webkit-transition: all 0.3s; - transition: all 0.3s; - /* expand hover area */ -} -.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after, -.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after { - position: absolute; - top: -12px; - left: -26px; - width: 60px; - height: 32px; - background: rgba(0, 0, 0, 0.001); - content: ''; -} -.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon, -.ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon { - position: relative; - top: -1px; - width: 10px; - height: 10px; - line-height: 10px; -} -.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon { - margin-top: 8px; - margin-left: 0; - background: none; -} -.ant-steps-vertical.ant-steps-dot .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - top: 2px; - left: -9px; - margin: 0; - padding: 22px 0 4px; -} -.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot { - left: 0; -} -.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot { - left: -2px; -} -.ant-steps-navigation { - padding-top: 12px; -} -.ant-steps-navigation.ant-steps-small .ant-steps-item-container { - margin-left: -12px; -} -.ant-steps-navigation .ant-steps-item { - overflow: visible; - text-align: center; -} -.ant-steps-navigation .ant-steps-item-container { - display: inline-block; - height: 100%; - margin-left: -16px; - padding-bottom: 12px; - text-align: left; - -webkit-transition: opacity 0.3s; - transition: opacity 0.3s; -} -.ant-steps-navigation .ant-steps-item-container .ant-steps-item-content { - max-width: auto; -} -.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title { - max-width: 100%; - padding-right: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title::after { - display: none; -} -.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button'] { - cursor: pointer; -} -.ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role='button']:hover { - opacity: 0.85; -} -.ant-steps-navigation .ant-steps-item:last-child { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} -.ant-steps-navigation .ant-steps-item:last-child::after { - display: none; -} -.ant-steps-navigation .ant-steps-item::after { - position: absolute; - top: 50%; - left: 100%; - display: inline-block; - width: 12px; - height: 12px; - margin-top: -14px; - margin-left: -2px; - border: 1px solid rgba(0, 0, 0, 0.25); - border-bottom: none; - border-left: none; - -webkit-transform: rotate(45deg); - transform: rotate(45deg); - content: ''; -} -.ant-steps-navigation .ant-steps-item::before { - position: absolute; - bottom: 0; - left: 50%; - display: inline-block; - width: 0; - height: 2px; - background-color: #1890ff; - -webkit-transition: width 0.3s, left 0.3s; - transition: width 0.3s, left 0.3s; - -webkit-transition-timing-function: ease-out; - transition-timing-function: ease-out; - content: ''; -} -.ant-steps-navigation .ant-steps-item.ant-steps-item-active::before { - left: 0; - width: 100%; -} -@media (max-width: 480px) { - .ant-steps-navigation > .ant-steps-item { - margin-right: 0 !important; - } - .ant-steps-navigation > .ant-steps-item::before { - display: none; - } - .ant-steps-navigation > .ant-steps-item.ant-steps-item-active::before { - top: 0; - right: 0; - left: unset; - display: block; - width: 3px; - height: calc(100% - 24px); - } - .ant-steps-navigation > .ant-steps-item::after { - position: relative; - top: -2px; - left: 50%; - display: block; - width: 8px; - height: 8px; - margin-bottom: 8px; - text-align: center; - -webkit-transform: rotate(135deg); - transform: rotate(135deg); - } - .ant-steps-navigation > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - visibility: hidden; - } -} -.ant-steps-rtl { - direction: rtl; -} -.ant-steps.ant-steps-rtl .ant-steps-item-icon { - margin-right: 0; - margin-left: 8px; -} -.ant-steps-rtl .ant-steps-item-tail { - right: 0; - left: auto; -} -.ant-steps-rtl .ant-steps-item-title { - padding-right: 0; - padding-left: 16px; -} -.ant-steps-rtl .ant-steps-item-title::after { - right: 100%; - left: auto; -} -.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item { - margin-right: 0; - margin-left: 16px; -} -.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child { - margin-left: 0; -} -.ant-steps-rtl.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title { - padding-left: 0; -} -.ant-steps-rtl .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon { - right: 0.5px; - left: auto; -} -.ant-steps-rtl.ant-steps-navigation.ant-steps-small .ant-steps-item-container { - margin-right: -12px; - margin-left: 0; -} -.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container { - margin-right: -16px; - margin-left: 0; - text-align: right; -} -.ant-steps-rtl.ant-steps-navigation .ant-steps-item-container .ant-steps-item-title { - padding-left: 0; -} -.ant-steps-rtl.ant-steps-navigation .ant-steps-item::after { - right: 100%; - left: auto; - margin-right: -2px; - margin-left: 0; - -webkit-transform: rotate(225deg); - transform: rotate(225deg); -} -.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item { - margin-right: 0; - margin-left: 12px; -} -.ant-steps-rtl.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child { - margin-left: 0; -} -.ant-steps-rtl.ant-steps-small .ant-steps-item-title { - padding-right: 0; - padding-left: 12px; -} -.ant-steps-rtl.ant-steps-label-vertical .ant-steps-item-title { - padding-left: 0; -} -.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail, -.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail { - margin: 0 70px 0 0; -} -.ant-steps-rtl.ant-steps-dot .ant-steps-item-tail::after, -.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-tail::after { - margin-right: 12px; - margin-left: 0; -} -.ant-steps-rtl.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot, -.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot { - right: 2px; - left: auto; -} -.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon, -.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon { - margin-right: 67px; - margin-left: 0; -} -.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot, -.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot { - /* expand hover area */ -} -.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot, -.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot { - float: right; -} -.ant-steps-rtl.ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot::after, -.ant-steps-rtl.ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot::after { - right: -26px; - left: auto; -} -.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon { - margin-right: 0; - margin-left: 16px; -} -.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail { - right: -9px; - left: auto; -} -.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot { - right: 0; - left: auto; -} -.ant-steps-rtl.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot { - right: -2px; - left: auto; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-switch { - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: inline-block; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-width: 44px; - height: 22px; - line-height: 22px; - vertical-align: middle; - background-color: rgba(0, 0, 0, 0.25); - border: 0; - border-radius: 100px; - cursor: pointer; - -webkit-transition: all 0.2s; - transition: all 0.2s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-switch:focus { - outline: 0; - -webkit-box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1); -} -.ant-switch-checked:focus { - -webkit-box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); - box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); -} -.ant-switch:focus:hover { - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-switch-checked { - background-color: #1890ff; -} -.ant-switch-loading, -.ant-switch-disabled { - cursor: not-allowed; - opacity: 0.4; -} -.ant-switch-loading *, -.ant-switch-disabled * { - -webkit-box-shadow: none; - box-shadow: none; - cursor: not-allowed; -} -.ant-switch-inner { - display: block; - margin: 0 7px 0 25px; - color: #fff; - font-size: 12px; - -webkit-transition: margin 0.2s; - transition: margin 0.2s; -} -.ant-switch-checked .ant-switch-inner { - margin: 0 25px 0 7px; -} -.ant-switch-handle { - position: absolute; - top: 2px; - left: 2px; - width: 18px; - height: 18px; - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} -.ant-switch-handle::before { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - background-color: #fff; - border-radius: 9px; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2); - box-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2); - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - content: ''; -} -.ant-switch-checked .ant-switch-handle { - left: calc(100% - 18px - 2px); -} -.ant-switch:not(.ant-switch-disabled):active .ant-switch-handle::before { - right: -30%; - left: 0; -} -.ant-switch:not(.ant-switch-disabled):active.ant-switch-checked .ant-switch-handle::before { - right: 0; - left: -30%; -} -.ant-switch-loading-icon { - position: absolute; - top: 50%; - left: 50%; - color: rgba(0, 0, 0, 0.65); - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} -.ant-switch-checked .ant-switch-loading-icon { - color: #1890ff; -} -.ant-switch-small { - min-width: 28px; - height: 16px; - line-height: 16px; -} -.ant-switch-small .ant-switch-inner { - margin: 0 5px 0 18px; - font-size: 12px; -} -.ant-switch-small .ant-switch-handle { - width: 12px; - height: 12px; -} -.ant-switch-small .ant-switch-loading-icon { - -webkit-transform: translate(-50%, -50%) scale(0.66667); - transform: translate(-50%, -50%) scale(0.66667); -} -.ant-switch-small.ant-switch-checked .ant-switch-inner { - margin: 0 18px 0 5px; -} -.ant-switch-small.ant-switch-checked .ant-switch-handle { - left: calc(100% - 12px - 2px); -} -.ant-switch-rtl { - direction: rtl; -} -.ant-switch-rtl .ant-switch-inner { - margin: 0 25px 0 7px; -} -.ant-switch-rtl .ant-switch-handle { - right: 2px; - left: auto; -} -.ant-switch-rtl:not(.ant-switch-rtl-disabled):active .ant-switch-handle::before { - right: 0; - left: -30%; -} -.ant-switch-rtl:not(.ant-switch-rtl-disabled):active.ant-switch-checked .ant-switch-handle::before { - right: -30%; - left: 0; -} -.ant-switch-rtl.ant-switch-checked .ant-switch-inner { - margin: 0 7px 0 25px; -} -.ant-switch-rtl.ant-switch-checked .ant-switch-handle { - right: calc(100% - 18px - 2px); -} -.ant-switch-rtl.ant-switch-small.ant-switch-checked .ant-switch-handle { - right: calc(100% - 12px - 2px); -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-table.ant-table-middle { - font-size: 14px; -} -.ant-table.ant-table-middle .ant-table-title, -.ant-table.ant-table-middle .ant-table-footer, -.ant-table.ant-table-middle .ant-table-thead > tr > th, -.ant-table.ant-table-middle .ant-table-tbody > tr > td, -.ant-table.ant-table-middle tfoot > tr > th, -.ant-table.ant-table-middle tfoot > tr > td { - padding: 12px 8px; -} -.ant-table.ant-table-middle .ant-table-thead th.ant-table-column-has-sorters { - padding: 0; -} -.ant-table.ant-table-middle .ant-table-thead .ant-table-filter-column { - margin: -12px -8px; -} -.ant-table.ant-table-middle .ant-table-thead .ant-table-filter-column-title { - padding: 12px 2.3em 12px 8px; -} -.ant-table.ant-table-middle .ant-table-thead .ant-table-column-sorters { - padding: 12px 8px; -} -.ant-table.ant-table-middle .ant-table-expanded-row-fixed { - margin: -12px -8px; -} -.ant-table.ant-table-middle .ant-table-tbody .ant-table-wrapper:only-child .ant-table { - margin: -12px -8px -12px 25px; -} -.ant-table.ant-table-small { - font-size: 14px; -} -.ant-table.ant-table-small .ant-table-title, -.ant-table.ant-table-small .ant-table-footer, -.ant-table.ant-table-small .ant-table-thead > tr > th, -.ant-table.ant-table-small .ant-table-tbody > tr > td, -.ant-table.ant-table-small tfoot > tr > th, -.ant-table.ant-table-small tfoot > tr > td { - padding: 8px 8px; -} -.ant-table.ant-table-small .ant-table-thead th.ant-table-column-has-sorters { - padding: 0; -} -.ant-table.ant-table-small .ant-table-thead .ant-table-filter-column { - margin: -8px -8px; -} -.ant-table.ant-table-small .ant-table-thead .ant-table-filter-column-title { - padding: 8px 2.3em 8px 8px; -} -.ant-table.ant-table-small .ant-table-thead .ant-table-column-sorters { - padding: 8px 8px; -} -.ant-table.ant-table-small .ant-table-expanded-row-fixed { - margin: -8px -8px; -} -.ant-table.ant-table-small .ant-table-tbody .ant-table-wrapper:only-child .ant-table { - margin: -8px -8px -8px 25px; -} -.ant-table-small .ant-table-thead > tr > th { - background-color: #fafafa; -} -.ant-table-small .ant-table-selection-column { - width: 46px; - min-width: 46px; -} -.ant-table.ant-table-bordered > .ant-table-title { - border: 1px solid #f0f0f0; - border-bottom: 0; -} -.ant-table.ant-table-bordered > .ant-table-container { - border: 1px solid #f0f0f0; - border-right: 0; - border-bottom: 0; -} -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > td, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > td, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > td { - border-right: 1px solid #f0f0f0; -} -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr:not(:last-child) > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr:not(:last-child) > th, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr:not(:last-child) > th { - border-bottom: 1px solid #f0f0f0; -} -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > thead > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > thead > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > thead > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tfoot > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tfoot > tr > .ant-table-cell-fix-right-first::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tfoot > tr > .ant-table-cell-fix-right-first::after { - border-right: 1px solid #f0f0f0; -} -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td > .ant-table-expanded-row-fixed, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed { - margin: -16px -17px; -} -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table > tbody > tr > td > .ant-table-expanded-row-fixed::after, -.ant-table.ant-table-bordered > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed::after { - position: absolute; - top: 0; - right: 1px; - bottom: 0; - border-right: 1px solid #f0f0f0; - content: ''; -} -.ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-expanded-row > td, -.ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-placeholder > td { - border-right: 0; -} -.ant-table.ant-table-bordered.ant-table-middle > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed, -.ant-table.ant-table-bordered.ant-table-middle > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed { - margin: -12px -9px; -} -.ant-table.ant-table-bordered.ant-table-small > .ant-table-container > .ant-table-content > table > tbody > tr > td > .ant-table-expanded-row-fixed, -.ant-table.ant-table-bordered.ant-table-small > .ant-table-container > .ant-table-body > table > tbody > tr > td > .ant-table-expanded-row-fixed { - margin: -8px -9px; -} -.ant-table.ant-table-bordered > .ant-table-footer { - border: 1px solid #f0f0f0; - border-top: 0; -} -.ant-table-cell .ant-table-container:first-child { - border-top: 0; -} -.ant-table-cell-scrollbar { - -webkit-box-shadow: 0 1px 0 1px #fafafa; - box-shadow: 0 1px 0 1px #fafafa; -} -.ant-table-wrapper { - max-width: 100%; -} -.ant-table-wrapper::before { - display: table; - content: ''; -} -.ant-table-wrapper::after { - display: table; - clear: both; - content: ''; -} -.ant-table { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - z-index: 0; - clear: both; - font-size: 14px; - background: #fff; - border-radius: 2px; -} -.ant-table table { - width: 100%; - text-align: left; - border-radius: 2px 2px 0 0; - border-collapse: separate; - border-spacing: 0; -} -.ant-table-thead > tr > th, -.ant-table-tbody > tr > td, -.ant-table tfoot > tr > th, -.ant-table tfoot > tr > td { - position: relative; - padding: 16px 16px; - overflow-wrap: break-word; -} -.ant-table-cell-ellipsis { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: keep-all; -} -.ant-table-cell-ellipsis.ant-table-cell-fix-left-last, -.ant-table-cell-ellipsis.ant-table-cell-fix-right-first { - overflow: visible; -} -.ant-table-cell-ellipsis.ant-table-cell-fix-left-last .ant-table-cell-content, -.ant-table-cell-ellipsis.ant-table-cell-fix-right-first .ant-table-cell-content { - display: block; - overflow: hidden; - text-overflow: ellipsis; -} -.ant-table-title { - padding: 16px 16px; -} -.ant-table-footer { - padding: 16px 16px; - color: rgba(0, 0, 0, 0.85); - background: #fafafa; -} -.ant-table-thead > tr > th { - color: rgba(0, 0, 0, 0.85); - font-weight: 500; - text-align: left; - background: #fafafa; - border-bottom: 1px solid #f0f0f0; - -webkit-transition: background 0.3s ease; - transition: background 0.3s ease; -} -.ant-table-thead > tr > th[colspan]:not([colspan='1']) { - text-align: center; -} -.ant-table-thead > tr:not(:last-child) > th[colspan] { - border-bottom: 0; -} -.ant-table-tbody > tr > td { - border-bottom: 1px solid #f0f0f0; - -webkit-transition: background 0.3s; - transition: background 0.3s; -} -.ant-table-tbody > tr.ant-table-row:hover > td { - background: #fafafa; -} -.ant-table-tbody > tr.ant-table-row-selected > td { - background: #e6f7ff; - border-color: rgba(0, 0, 0, 0.03); -} -.ant-table-tbody > tr.ant-table-row-selected:hover > td { - background: #dcf4ff; -} -.ant-table-tbody > tr .ant-table-wrapper:only-child .ant-table { - margin: -16px -16px -16px 33px; -} -.ant-table-tbody > tr .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td { - border-bottom: 0; -} -.ant-table-tbody > tr .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:first-child, -.ant-table-tbody > tr .ant-table-wrapper:only-child .ant-table-tbody > tr:last-child > td:last-child { - border-radius: 0; -} -.ant-table tfoot > tr > th, -.ant-table tfoot > tr > td { - border-bottom: 1px solid #f0f0f0; -} -.ant-table-pagination.ant-pagination { - margin: 16px 0; -} -.ant-table-pagination-left { - float: left; -} -.ant-table-pagination-center { - text-align: center; -} -.ant-table-pagination-right { - float: right; -} -.ant-table-thead th.ant-table-column-has-sorters { - padding: 0; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-table-thead th.ant-table-column-has-sorters:hover { - background: #f2f2f2; -} -.ant-table-thead th.ant-table-column-has-sorters:hover .ant-table-filter-trigger-container { - background: #f7f7f7; -} -.ant-table-thead th.ant-table-column-sort { - background: #f5f5f5; -} -td.ant-table-column-sort { - background: #fafafa; -} -.ant-table-column-sorters-with-tooltip { - display: inline-block; - width: 100%; -} -.ant-table-column-sorters { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 16px 16px; -} -.ant-table-column-sorter { - margin-top: 0.15em; - margin-bottom: -0.15em; - margin-left: 8px; - color: #bfbfbf; -} -.ant-table-column-sorter-full { - margin-top: -0.2em; - margin-bottom: 0; -} -.ant-table-column-sorter-inner { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.ant-table-column-sorter-up, -.ant-table-column-sorter-down { - display: inline-block; - font-size: 11px; -} -.ant-table-column-sorter-up.active, -.ant-table-column-sorter-down.active { - color: #1890ff; -} -.ant-table-column-sorter-up + .ant-table-column-sorter-down { - margin-top: -0.3em; -} -.ant-table-filter-column { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: -16px -16px; -} -.ant-table-filter-column-title { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - padding: 16px 2.3em 16px 16px; -} -.ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column { - margin: 0; -} -.ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column-title { - padding: 0 2.3em 0 0; -} -.ant-table-filter-trigger-container { - position: absolute; - top: 0; - right: 0; - bottom: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - -ms-flex-item-align: stretch; - align-self: stretch; - cursor: pointer; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; -} -.ant-table-filter-trigger-container-open, -.ant-table-filter-trigger-container:hover, -.ant-table-thead th.ant-table-column-has-sorters:hover .ant-table-filter-trigger-container:hover { - background: #e5e5e5; -} -.ant-table-filter-trigger { - display: block; - width: 2.3em; - color: #bfbfbf; - font-size: 12px; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-table-filter-trigger .anticon { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} -.ant-table-filter-trigger-container-open .ant-table-filter-trigger, -.ant-table-filter-trigger:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-table-filter-trigger.active { - color: #1890ff; -} -.ant-table-filter-dropdown { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - min-width: 120px; - background-color: #fff; - border-radius: 2px; - -webkit-box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); -} -.ant-table-filter-dropdown .ant-dropdown-menu { - max-height: 264px; - overflow-x: hidden; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; -} -.ant-table-filter-dropdown-submenu > ul { - max-height: calc(100vh - 130px); - overflow-x: hidden; - overflow-y: auto; -} -.ant-table-filter-dropdown .ant-checkbox-wrapper + span, -.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span { - padding-left: 8px; -} -.ant-table-filter-dropdown-btns { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 7px 8px 7px 3px; - overflow: hidden; - background-color: inherit; - border-top: 1px solid #f0f0f0; -} -.ant-table .ant-table-selection-col { - width: 60px; -} -table tr th.ant-table-selection-column, -table tr td.ant-table-selection-column { - padding-right: 8px; - padding-left: 8px; - text-align: center; -} -table tr th.ant-table-selection-column .ant-radio-wrapper, -table tr td.ant-table-selection-column .ant-radio-wrapper { - margin-right: 0; -} -.ant-table-selection { - position: relative; -} -.ant-table-selection-extra { - position: absolute; - top: 0; - right: 0; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-table-selection-extra .anticon { - display: inline-block; - font-size: 10px; - color: #bfbfbf; -} -.ant-table-selection-extra .anticon:hover { - color: #a6a6a6; -} -.ant-table-expand-icon-col { - width: 48px; -} -.ant-table-row-expand-icon-cell { - text-align: center; -} -.ant-table-row-indent { - float: left; - height: 1px; -} -.ant-table-row-expand-icon { - color: #1890ff; - text-decoration: none; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - float: left; - -webkit-box-sizing: border-box; - box-sizing: border-box; - width: 17px; - height: 17px; - padding: 0; - color: inherit; - line-height: 12px; - vertical-align: -2px; - background: #fff; - border: 1px solid #f0f0f0; - border-radius: 2px; - outline: none; - -webkit-transition: all 0.3s; - transition: all 0.3s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-table-row-expand-icon:focus, -.ant-table-row-expand-icon:hover { - color: #40a9ff; -} -.ant-table-row-expand-icon:active { - color: #096dd9; -} -.ant-table-row-expand-icon:focus, -.ant-table-row-expand-icon:hover, -.ant-table-row-expand-icon:active { - border-color: currentColor; -} -.ant-table-row-expand-icon::before, -.ant-table-row-expand-icon::after { - position: absolute; - background: currentColor; - -webkit-transition: -webkit-transform 0.3s ease-out; - transition: -webkit-transform 0.3s ease-out; - transition: transform 0.3s ease-out; - transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; - content: ''; -} -.ant-table-row-expand-icon::before { - top: 7px; - right: 3px; - left: 3px; - height: 1px; -} -.ant-table-row-expand-icon::after { - top: 3px; - bottom: 3px; - left: 7px; - width: 1px; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} -.ant-table-row-expand-icon-collapsed::before { - -webkit-transform: rotate(-180deg); - transform: rotate(-180deg); -} -.ant-table-row-expand-icon-collapsed::after { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); -} -.ant-table-row-expand-icon-spaced { - background: transparent; - border: 0; - visibility: hidden; -} -.ant-table-row-expand-icon-spaced::before, -.ant-table-row-expand-icon-spaced::after { - display: none; - content: none; -} -.ant-table-row-indent + .ant-table-row-expand-icon { - margin-top: 2.5005px; - margin-right: 8px; -} -tr.ant-table-expanded-row > td, -tr.ant-table-expanded-row:hover > td { - background: #fbfbfb; -} -tr.ant-table-expanded-row .ant-descriptions-view table { - width: auto; -} -.ant-table .ant-table-expanded-row-fixed { - position: relative; - margin: -16px -16px; - padding: 16px 16px; -} -.ant-table-tbody > tr.ant-table-placeholder { - text-align: center; -} -.ant-table-empty .ant-table-tbody > tr.ant-table-placeholder { - color: rgba(0, 0, 0, 0.25); -} -.ant-table-tbody > tr.ant-table-placeholder:hover > td { - background: #fff; -} -.ant-table-cell-fix-left, -.ant-table-cell-fix-right { - position: -webkit-sticky !important; - position: sticky !important; - z-index: 2; - background: #fff; -} -.ant-table-cell-fix-left-first::after, -.ant-table-cell-fix-left-last::after { - position: absolute; - top: 0; - right: 0; - bottom: -1px; - width: 30px; - -webkit-transform: translateX(100%); - transform: translateX(100%); - -webkit-transition: -webkit-box-shadow 0.3s; - transition: -webkit-box-shadow 0.3s; - transition: box-shadow 0.3s; - transition: box-shadow 0.3s, -webkit-box-shadow 0.3s; - content: ''; - pointer-events: none; -} -.ant-table-cell-fix-right-first::after, -.ant-table-cell-fix-right-last::after { - position: absolute; - top: 0; - bottom: -1px; - left: 0; - width: 30px; - -webkit-transform: translateX(-100%); - transform: translateX(-100%); - -webkit-transition: -webkit-box-shadow 0.3s; - transition: -webkit-box-shadow 0.3s; - transition: box-shadow 0.3s; - transition: box-shadow 0.3s, -webkit-box-shadow 0.3s; - content: ''; - pointer-events: none; -} -.ant-table .ant-table-container::before, -.ant-table .ant-table-container::after { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - width: 30px; - -webkit-transition: -webkit-box-shadow 0.3s; - transition: -webkit-box-shadow 0.3s; - transition: box-shadow 0.3s; - transition: box-shadow 0.3s, -webkit-box-shadow 0.3s; - content: ''; - pointer-events: none; -} -.ant-table .ant-table-container::before { - left: 0; -} -.ant-table .ant-table-container::after { - right: 0; -} -.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container { - position: relative; -} -.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before { - -webkit-box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15); - box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15); -} -.ant-table-ping-left .ant-table-cell-fix-left-first::after, -.ant-table-ping-left .ant-table-cell-fix-left-last::after { - -webkit-box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15); - box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.15); -} -.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container { - position: relative; -} -.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after { - -webkit-box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15); - box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15); -} -.ant-table-ping-right .ant-table-cell-fix-right-first::after, -.ant-table-ping-right .ant-table-cell-fix-right-last::after { - -webkit-box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15); - box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.15); -} -@media all and (-ms-high-contrast: none) { - .ant-table-ping-left .ant-table-cell-fix-left-last::after { - -webkit-box-shadow: none !important; - box-shadow: none !important; - } - .ant-table-ping-right .ant-table-cell-fix-right-first::after { - -webkit-box-shadow: none !important; - box-shadow: none !important; - } -} -.ant-table { - /* title + table */ - /* table */ - /* table + footer */ -} -.ant-table-title { - border-radius: 2px 2px 0 0; -} -.ant-table-title + .ant-table-container { - border-top-left-radius: 0; - border-top-right-radius: 0; -} -.ant-table-title + .ant-table-container table > thead > tr:first-child th:first-child { - border-radius: 0; -} -.ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child { - border-radius: 0; -} -.ant-table-container { - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} -.ant-table-container table > thead > tr:first-child th:first-child { - border-top-left-radius: 2px; -} -.ant-table-container table > thead > tr:first-child th:last-child { - border-top-right-radius: 2px; -} -.ant-table-footer { - border-radius: 0 0 2px 2px; -} -.ant-table-wrapper-rtl { - direction: rtl; -} -.ant-table-rtl { - direction: rtl; -} -.ant-table-wrapper-rtl .ant-table table { - text-align: right; -} -.ant-table-wrapper-rtl .ant-table-thead > tr > th[colspan]:not([colspan='1']) { - text-align: center; -} -.ant-table-wrapper-rtl .ant-table-thead > tr > th { - text-align: right; -} -.ant-table-tbody > tr .ant-table-wrapper:only-child .ant-table-rtl { - margin: -16px 33px -16px -16px; -} -.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination { - float: left; -} -.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-left { - float: left; -} -.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-right { - float: right; -} -.ant-table-wrapper.ant-table-wrapper-rtl .ant-table-pagination-center { - float: initial; - text-align: center; -} -.ant-table-wrapper-rtl .ant-table-column-sorter { - margin-right: 8px; - margin-left: 0; -} -.ant-table-wrapper-rtl .ant-table-filter-column-title { - padding: 16px 16px 16px 2.3em; -} -.ant-table-rtl .ant-table-thead tr th.ant-table-column-has-sorters .ant-table-filter-column-title { - padding: 0 0 0 2.3em; -} -.ant-table-wrapper-rtl .ant-table-filter-trigger-container { - right: auto; - left: 0; -} -.ant-dropdown-rtl .ant-table-filter-dropdown .ant-checkbox-wrapper + span, -.ant-dropdown-rtl .ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span, -.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown .ant-checkbox-wrapper + span, -.ant-dropdown-menu-submenu-rtl.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span { - padding-right: 8px; - padding-left: 0; -} -.ant-table-wrapper-rtl .ant-table-selection { - text-align: center; -} -.ant-table-wrapper-rtl .ant-table-selection-extra { - right: auto; - left: 0; -} -.ant-table-wrapper-rtl .ant-table-row-indent { - float: right; -} -.ant-table-wrapper-rtl .ant-table-row-expand-icon { - float: right; -} -.ant-table-wrapper-rtl .ant-table-row-indent + .ant-table-row-expand-icon { - margin-right: 0; - margin-left: 8px; -} -.ant-table-wrapper-rtl .ant-table-row-expand-icon::after { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::before { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} -.ant-table-wrapper-rtl .ant-table-row-expand-icon-collapsed::after { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-timeline { - -webkit-box-sizing: border-box; - box-sizing: border-box; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - margin: 0; - padding: 0; - list-style: none; -} -.ant-timeline-item { - position: relative; - margin: 0; - padding-bottom: 20px; - font-size: 14px; - list-style: none; -} -.ant-timeline-item-tail { - position: absolute; - top: 10px; - left: 4px; - height: calc(100% - 10px); - border-left: 2px solid #f0f0f0; -} -.ant-timeline-item-pending .ant-timeline-item-head { - font-size: 12px; - background-color: transparent; -} -.ant-timeline-item-pending .ant-timeline-item-tail { - display: none; -} -.ant-timeline-item-head { - position: absolute; - width: 10px; - height: 10px; - background-color: #fff; - border: 2px solid transparent; - border-radius: 100px; -} -.ant-timeline-item-head-blue { - color: #1890ff; - border-color: #1890ff; -} -.ant-timeline-item-head-red { - color: #ff4d4f; - border-color: #ff4d4f; -} -.ant-timeline-item-head-green { - color: #52c41a; - border-color: #52c41a; -} -.ant-timeline-item-head-gray { - color: rgba(0, 0, 0, 0.25); - border-color: rgba(0, 0, 0, 0.25); -} -.ant-timeline-item-head-custom { - position: absolute; - top: 5.5px; - left: 5px; - width: auto; - height: auto; - margin-top: 0; - padding: 3px 1px; - line-height: 1; - text-align: center; - border: 0; - border-radius: 0; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} -.ant-timeline-item-content { - position: relative; - top: -7.001px; - margin: 0 0 0 26px; - word-break: break-word; -} -.ant-timeline-item-last > .ant-timeline-item-tail { - display: none; -} -.ant-timeline-item-last > .ant-timeline-item-content { - min-height: 48px; -} -.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail, -.ant-timeline.ant-timeline-right .ant-timeline-item-tail, -.ant-timeline.ant-timeline-label .ant-timeline-item-tail, -.ant-timeline.ant-timeline-alternate .ant-timeline-item-head, -.ant-timeline.ant-timeline-right .ant-timeline-item-head, -.ant-timeline.ant-timeline-label .ant-timeline-item-head, -.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom, -.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom, -.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom { - left: 50%; -} -.ant-timeline.ant-timeline-alternate .ant-timeline-item-head, -.ant-timeline.ant-timeline-right .ant-timeline-item-head, -.ant-timeline.ant-timeline-label .ant-timeline-item-head { - margin-left: -4px; -} -.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom, -.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom, -.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom { - margin-left: 1px; -} -.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content, -.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content, -.ant-timeline.ant-timeline-label .ant-timeline-item-left .ant-timeline-item-content { - left: calc(50% - 4px); - width: calc(50% - 14px); - text-align: left; -} -.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content, -.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content, -.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-content { - width: calc(50% - 12px); - margin: 0; - text-align: right; -} -.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail, -.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head, -.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom { - left: calc(100% - 4px - 2px); -} -.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content { - width: calc(100% - 18px); -} -.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail { - display: block; - height: calc(100% - 14px); - border-left: 2px dotted #f0f0f0; -} -.ant-timeline.ant-timeline-reverse .ant-timeline-item-last .ant-timeline-item-tail { - display: none; -} -.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail { - top: 15px; - display: block; - height: calc(100% - 15px); - border-left: 2px dotted #f0f0f0; -} -.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-content { - min-height: 48px; -} -.ant-timeline.ant-timeline-label .ant-timeline-item-label { - position: absolute; - top: -7.001px; - width: calc(50% - 12px); - text-align: right; -} -.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-label { - left: calc(50% + 14px); - width: calc(50% - 14px); - text-align: left; -} -.ant-timeline-rtl { - direction: rtl; -} -.ant-timeline-rtl .ant-timeline-item-tail { - right: 4px; - left: auto; - border-right: 2px solid #f0f0f0; - border-left: none; -} -.ant-timeline-rtl .ant-timeline-item-head-custom { - right: 5px; - left: auto; - -webkit-transform: translate(50%, -50%); - transform: translate(50%, -50%); -} -.ant-timeline-rtl .ant-timeline-item-content { - margin: 0 18px 0 0; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-tail, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-tail, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-tail, -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head, -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom { - right: 50%; - left: auto; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head { - margin-right: -4px; - margin-left: 0; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-head-custom, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-head-custom, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-head-custom { - margin-right: 1px; - margin-left: 0; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-left .ant-timeline-item-content, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-left .ant-timeline-item-content, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-left .ant-timeline-item-content { - right: calc(50% - 4px); - left: auto; - text-align: right; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-alternate .ant-timeline-item-right .ant-timeline-item-content, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content, -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-content { - text-align: left; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-tail, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head, -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-head-custom { - right: 0; - left: auto; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-right .ant-timeline-item-right .ant-timeline-item-content { - width: 100%; - margin-right: 18px; - text-align: right; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-pending .ant-timeline-item-last .ant-timeline-item-tail { - border-right: 2px dotted #f0f0f0; - border-left: none; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-reverse .ant-timeline-item-pending .ant-timeline-item-tail { - border-right: 2px dotted #f0f0f0; - border-left: none; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-label { - text-align: left; -} -.ant-timeline-rtl.ant-timeline.ant-timeline-label .ant-timeline-item-right .ant-timeline-item-label { - right: calc(50% + 14px); - text-align: right; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -@-webkit-keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -@keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -.ant-transfer-customize-list .ant-transfer-list { - -webkit-box-flex: 1; - -ms-flex: 1 1 50%; - flex: 1 1 50%; - width: auto; - height: auto; - min-height: 200px; -} -.ant-transfer-customize-list .ant-table-wrapper .ant-table-small { - border: 0; - border-radius: 0; -} -.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th { - background: #fafafa; -} -.ant-transfer-customize-list .ant-table-wrapper .ant-table-small > .ant-table-content .ant-table-row:last-child td { - border-bottom: 1px solid #f0f0f0; -} -.ant-transfer-customize-list .ant-table-wrapper .ant-table-small .ant-table-body { - margin: 0; -} -.ant-transfer-customize-list .ant-table-wrapper .ant-table-pagination.ant-pagination { - margin: 16px 0 4px; -} -.ant-transfer-customize-list .ant-input[disabled] { - background-color: transparent; -} -.ant-transfer { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; -} -.ant-transfer-disabled .ant-transfer-list { - background: #f5f5f5; -} -.ant-transfer-list { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 180px; - height: 200px; - border: 1px solid #d9d9d9; - border-radius: 2px; -} -.ant-transfer-list-with-pagination { - width: 250px; - height: auto; -} -.ant-transfer-list-search { - padding-right: 24px; - padding-left: 8px; -} -.ant-transfer-list-search-action { - position: absolute; - top: 12px; - right: 12px; - bottom: 12px; - width: 28px; - color: rgba(0, 0, 0, 0.25); - line-height: 32px; - text-align: center; -} -.ant-transfer-list-search-action .anticon { - color: rgba(0, 0, 0, 0.25); - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-transfer-list-search-action .anticon:hover { - color: rgba(0, 0, 0, 0.45); -} -span.ant-transfer-list-search-action { - pointer-events: none; -} -.ant-transfer-list-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - height: 40px; - padding: 8px 12px 9px; - color: rgba(0, 0, 0, 0.65); - background: #fff; - border-bottom: 1px solid #f0f0f0; - border-radius: 2px 2px 0 0; -} -.ant-transfer-list-header > *:not(:last-child) { - margin-right: 4px; -} -.ant-transfer-list-header > * { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-transfer-list-header-title { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - overflow: hidden; - white-space: nowrap; - text-align: right; - text-overflow: ellipsis; -} -.ant-transfer-list-header-dropdown { - -webkit-transform: translateY(10%); - transform: translateY(10%); - cursor: pointer; - display: inline-block; - font-size: 10px; -} -.ant-transfer-list-body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - overflow: hidden; - font-size: 14px; -} -.ant-transfer-list-body-search-wrapper { - position: relative; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - padding: 12px; -} -.ant-transfer-list-content { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - margin: 0; - padding: 0; - overflow: auto; - list-style: none; -} -.ant-transfer-list-content-item { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-height: 32px; - padding: 6px 12px; - overflow: hidden; - line-height: 20px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-transfer-list-content-item > *:not(:last-child) { - margin-right: 8px; -} -.ant-transfer-list-content-item > * { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; -} -.ant-transfer-list-content-item-text { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-transfer-list-content-item-remove { - color: #1890ff; - text-decoration: none; - outline: none; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - position: relative; - color: #d9d9d9; -} -.ant-transfer-list-content-item-remove:focus, -.ant-transfer-list-content-item-remove:hover { - color: #40a9ff; -} -.ant-transfer-list-content-item-remove:active { - color: #096dd9; -} -.ant-transfer-list-content-item-remove::after { - position: absolute; - top: -6px; - right: -50%; - bottom: -6px; - left: -50%; - content: ''; -} -.ant-transfer-list-content-item-remove:hover { - color: #40a9ff; -} -.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover { - background-color: #f5f5f5; - cursor: pointer; -} -.ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled).ant-transfer-list-content-item-checked:hover { - background-color: #dcf4ff; -} -.ant-transfer-list-content-show-remove .ant-transfer-list-content-item:not(.ant-transfer-list-content-item-disabled):hover { - background: transparent; - cursor: default; -} -.ant-transfer-list-content-item-checked { - background-color: #e6f7ff; -} -.ant-transfer-list-content-item-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-transfer-list-pagination { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -ms-flex-item-align: end; - align-self: flex-end; - padding: 8px 0; -} -.ant-transfer-list-body-not-found { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - width: 100%; - margin: auto 0; - color: rgba(0, 0, 0, 0.25); - text-align: center; -} -.ant-transfer-list-footer { - border-top: 1px solid #f0f0f0; -} -.ant-transfer-operation { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-item-align: center; - align-self: center; - margin: 0 8px; - overflow: hidden; - vertical-align: middle; -} -.ant-transfer-operation .ant-btn { - display: block; -} -.ant-transfer-operation .ant-btn:first-child { - margin-bottom: 4px; -} -.ant-transfer-operation .ant-btn .anticon { - font-size: 12px; -} -.ant-transfer .ant-empty-image { - max-height: -2px; -} -.ant-transfer-rtl { - direction: rtl; -} -.ant-transfer-rtl .ant-transfer-list-search { - padding-right: 8px; - padding-left: 24px; -} -.ant-transfer-rtl .ant-transfer-list-search-action { - right: auto; - left: 12px; -} -.ant-transfer-rtl .ant-transfer-list-header > *:not(:last-child) { - margin-right: 0; - margin-left: 4px; -} -.ant-transfer-rtl .ant-transfer-list-header { - right: 0; - left: auto; -} -.ant-transfer-rtl .ant-transfer-list-header-title { - text-align: left; -} -.ant-transfer-rtl .ant-transfer-list-content-item > *:not(:last-child) { - margin-right: 0; - margin-left: 8px; -} -.ant-transfer-rtl .ant-transfer-list-footer { - right: 0; - left: auto; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line::before { - height: 14px !important; -} -@-webkit-keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -@keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -.ant-select-tree-checkbox { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - top: -0.09em; - display: inline-block; - line-height: 1; - white-space: nowrap; - vertical-align: middle; - outline: none; - cursor: pointer; -} -.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, -.ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner, -.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner { - border-color: #1890ff; -} -.ant-select-tree-checkbox-checked::after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 1px solid #1890ff; - border-radius: 2px; - visibility: hidden; - -webkit-animation: antCheckboxEffect 0.36s ease-in-out; - animation: antCheckboxEffect 0.36s ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - content: ''; -} -.ant-select-tree-checkbox:hover::after, -.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox::after { - visibility: visible; -} -.ant-select-tree-checkbox-inner { - position: relative; - top: 0; - left: 0; - display: block; - width: 16px; - height: 16px; - direction: ltr; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - border-collapse: separate; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-select-tree-checkbox-inner::after { - position: absolute; - top: 50%; - left: 22%; - display: table; - width: 5.71428571px; - height: 9.14285714px; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(0) translate(-50%, -50%); - transform: rotate(45deg) scale(0) translate(-50%, -50%); - opacity: 0; - -webkit-transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s; - transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s; - content: ' '; -} -.ant-select-tree-checkbox-input { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - width: 100%; - height: 100%; - cursor: pointer; - opacity: 0; -} -.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after { - position: absolute; - display: table; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(1) translate(-50%, -50%); - transform: rotate(45deg) scale(1) translate(-50%, -50%); - opacity: 1; - -webkit-transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; - transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; - content: ' '; -} -.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner { - background-color: #1890ff; - border-color: #1890ff; -} -.ant-select-tree-checkbox-disabled { - cursor: not-allowed; -} -.ant-select-tree-checkbox-disabled.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner::after { - border-color: rgba(0, 0, 0, 0.25); - -webkit-animation-name: none; - animation-name: none; -} -.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-input { - cursor: not-allowed; -} -.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner { - background-color: #f5f5f5; - border-color: #d9d9d9 !important; -} -.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after { - border-color: #f5f5f5; - border-collapse: separate; - -webkit-animation-name: none; - animation-name: none; -} -.ant-select-tree-checkbox-disabled + span { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-select-tree-checkbox-disabled:hover::after, -.ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-disabled::after { - visibility: hidden; -} -.ant-select-tree-checkbox-wrapper { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; - line-height: unset; - cursor: pointer; -} -.ant-select-tree-checkbox-wrapper.ant-select-tree-checkbox-wrapper-disabled { - cursor: not-allowed; -} -.ant-select-tree-checkbox-wrapper + .ant-select-tree-checkbox-wrapper { - margin-left: 8px; -} -.ant-select-tree-checkbox + span { - padding-right: 8px; - padding-left: 8px; -} -.ant-select-tree-checkbox-group { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; -} -.ant-select-tree-checkbox-group-item { - display: inline-block; - margin-right: 8px; -} -.ant-select-tree-checkbox-group-item:last-child { - margin-right: 0; -} -.ant-select-tree-checkbox-group-item + .ant-select-tree-checkbox-group-item { - margin-left: 0; -} -.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner { - background-color: #fff; - border-color: #d9d9d9; -} -.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner::after { - top: 50%; - left: 50%; - width: 8px; - height: 8px; - background-color: #1890ff; - border: 0; - -webkit-transform: translate(-50%, -50%) scale(1); - transform: translate(-50%, -50%) scale(1); - opacity: 1; - content: ' '; -} -.ant-select-tree-checkbox-indeterminate.ant-select-tree-checkbox-disabled .ant-select-tree-checkbox-inner::after { - background-color: rgba(0, 0, 0, 0.25); - border-color: rgba(0, 0, 0, 0.25); -} -.ant-tree-select-dropdown { - padding: 8px 4px 0; -} -.ant-tree-select-dropdown-rtl { - direction: rtl; -} -.ant-tree-select-dropdown .ant-select-tree { - border-radius: 0; -} -.ant-tree-select-dropdown .ant-select-tree-list-holder-inner { - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; -} -.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode { - padding-bottom: 8px; -} -.ant-tree-select-dropdown .ant-select-tree-list-holder-inner .ant-select-tree-treenode .ant-select-tree-node-content-wrapper { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; -} -.ant-select-tree { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - background: #fff; - border-radius: 2px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; -} -.ant-select-tree-focused:not(:hover):not(.ant-select-tree-active-focused) { - background: #e6f7ff; -} -.ant-select-tree-list-holder-inner { - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} -.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner { - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; -} -.ant-select-tree.ant-select-tree-block-node .ant-select-tree-list-holder-inner .ant-select-tree-node-content-wrapper { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; -} -.ant-select-tree .ant-select-tree-treenode { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - padding: 0 0 4px 0; - outline: none; -} -.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-select-tree .ant-select-tree-treenode-disabled .ant-select-tree-node-content-wrapper:hover { - background: transparent; -} -.ant-select-tree .ant-select-tree-treenode-active .ant-select-tree-node-content-wrapper { - background: #f5f5f5; -} -.ant-select-tree-indent { - -ms-flex-item-align: stretch; - align-self: stretch; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-select-tree-indent-unit { - display: inline-block; - width: 24px; -} -.ant-select-tree .ant-select-tree-switcher { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - width: 24px; - height: 24px; - margin: 0; - line-height: 24px; - text-align: center; - cursor: pointer; -} -.ant-select-tree .ant-select-tree-switcher .ant-tree-switcher-icon, -.ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon { - font-size: 10px; - display: inline-block; - vertical-align: baseline; -} -.ant-select-tree .ant-select-tree-switcher .ant-tree-switcher-icon svg, -.ant-select-tree .ant-select-tree-switcher .ant-select-tree-switcher-icon svg { - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -.ant-select-tree .ant-select-tree-switcher-noop { - cursor: default; -} -.ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.ant-select-tree .ant-select-tree-switcher-loading-icon { - color: #1890ff; -} -.ant-select-tree .ant-select-tree-switcher-leaf-line { - z-index: 1; - display: inline-block; - width: 100%; - height: 100%; -} -.ant-select-tree .ant-select-tree-switcher-leaf-line::before { - position: absolute; - height: 24px; - margin-left: -1px; - border-left: 1px solid #d9d9d9; - content: ' '; -} -.ant-select-tree .ant-select-tree-switcher-leaf-line::after { - position: absolute; - width: 10px; - height: 14px; - margin-left: -1px; - border-bottom: 1px solid #d9d9d9; - content: ' '; -} -.ant-select-tree .ant-select-tree-checkbox { - top: initial; - margin: 4px 8px 0 0; -} -.ant-select-tree .ant-select-tree-node-content-wrapper { - min-height: 24px; - margin: 0; - padding: 0 4px; - color: inherit; - line-height: 24px; - background: transparent; - border-radius: 2px; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-select-tree .ant-select-tree-node-content-wrapper:hover { - background-color: #f5f5f5; -} -.ant-select-tree .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected { - background-color: #bae7ff; -} -.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle { - display: inline-block; - width: 24px; - height: 24px; - line-height: 24px; - text-align: center; - vertical-align: top; -} -.ant-select-tree .ant-select-tree-node-content-wrapper .ant-select-tree-iconEle:empty { - display: none; -} -.ant-select-tree-node-content-wrapper[draggable='true'] { - line-height: 20px; - border-top: 2px transparent solid; - border-bottom: 2px transparent solid; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-select-tree .ant-select-tree-treenode.drag-over > [draggable] { - color: white; - background-color: #1890ff; - opacity: 0.8; -} -.ant-select-tree .ant-select-tree-treenode.drag-over-gap-top > [draggable] { - border-top-color: #1890ff; -} -.ant-select-tree .ant-select-tree-treenode.drag-over-gap-bottom > [draggable] { - border-bottom-color: #1890ff; -} -.ant-select-tree-show-line { - /* Motion should hide line of measure */ -} -.ant-select-tree-show-line .ant-select-tree-indent-unit { - position: relative; - height: 100%; -} -.ant-select-tree-show-line .ant-select-tree-indent-unit::before { - position: absolute; - top: calc(100% - 4px); - right: -12px; - bottom: -28px; - border-right: 1px solid #d9d9d9; - content: ''; -} -.ant-select-tree-show-line .ant-select-tree-indent-unit-end::before { - display: none; -} -.ant-select-tree-show-line .ant-select-tree-treenode-motion:not(.ant-motion-collapse-leave):not(.ant-motion-collapse-appear-active) .ant-select-tree-indent-unit::before { - display: none; -} -.ant-select-tree-show-line .ant-select-tree-switcher { - z-index: 1; - background: #fff; -} -.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-switcher_close .ant-select-tree-switcher-icon svg { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -@-webkit-keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -@keyframes antCheckboxEffect { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - opacity: 0.5; - } - 100% { - -webkit-transform: scale(1.6); - transform: scale(1.6); - opacity: 0; - } -} -.ant-tree-treenode-leaf-last .ant-tree-switcher-leaf-line::before { - height: 14px !important; -} -.ant-tree.ant-tree-directory .ant-tree-treenode { - position: relative; -} -.ant-tree.ant-tree-directory .ant-tree-treenode::before { - position: absolute; - top: 0; - right: 0; - bottom: 4px; - left: 0; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; - content: ''; - pointer-events: none; -} -.ant-tree.ant-tree-directory .ant-tree-treenode:hover::before { - background: #f5f5f5; -} -.ant-tree.ant-tree-directory .ant-tree-treenode > * { - z-index: 1; -} -.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-switcher { - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper { - border-radius: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper:hover { - background: transparent; -} -.ant-tree.ant-tree-directory .ant-tree-treenode .ant-tree-node-content-wrapper.ant-tree-node-selected { - color: #fff; - background: transparent; -} -.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before, -.ant-tree.ant-tree-directory .ant-tree-treenode-selected::before { - background: #1890ff; -} -.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher { - color: #fff; -} -.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-node-content-wrapper { - color: #fff; - background: transparent; -} -.ant-tree-checkbox { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - position: relative; - top: -0.09em; - display: inline-block; - line-height: 1; - white-space: nowrap; - vertical-align: middle; - outline: none; - cursor: pointer; -} -.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-inner, -.ant-tree-checkbox:hover .ant-tree-checkbox-inner, -.ant-tree-checkbox-input:focus + .ant-tree-checkbox-inner { - border-color: #1890ff; -} -.ant-tree-checkbox-checked::after { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 1px solid #1890ff; - border-radius: 2px; - visibility: hidden; - -webkit-animation: antCheckboxEffect 0.36s ease-in-out; - animation: antCheckboxEffect 0.36s ease-in-out; - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - content: ''; -} -.ant-tree-checkbox:hover::after, -.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox::after { - visibility: visible; -} -.ant-tree-checkbox-inner { - position: relative; - top: 0; - left: 0; - display: block; - width: 16px; - height: 16px; - direction: ltr; - background-color: #fff; - border: 1px solid #d9d9d9; - border-radius: 2px; - border-collapse: separate; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-tree-checkbox-inner::after { - position: absolute; - top: 50%; - left: 22%; - display: table; - width: 5.71428571px; - height: 9.14285714px; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(0) translate(-50%, -50%); - transform: rotate(45deg) scale(0) translate(-50%, -50%); - opacity: 0; - -webkit-transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s; - transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6), opacity 0.1s; - content: ' '; -} -.ant-tree-checkbox-input { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - width: 100%; - height: 100%; - cursor: pointer; - opacity: 0; -} -.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after { - position: absolute; - display: table; - border: 2px solid #fff; - border-top: 0; - border-left: 0; - -webkit-transform: rotate(45deg) scale(1) translate(-50%, -50%); - transform: rotate(45deg) scale(1) translate(-50%, -50%); - opacity: 1; - -webkit-transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; - transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s; - content: ' '; -} -.ant-tree-checkbox-checked .ant-tree-checkbox-inner { - background-color: #1890ff; - border-color: #1890ff; -} -.ant-tree-checkbox-disabled { - cursor: not-allowed; -} -.ant-tree-checkbox-disabled.ant-tree-checkbox-checked .ant-tree-checkbox-inner::after { - border-color: rgba(0, 0, 0, 0.25); - -webkit-animation-name: none; - animation-name: none; -} -.ant-tree-checkbox-disabled .ant-tree-checkbox-input { - cursor: not-allowed; -} -.ant-tree-checkbox-disabled .ant-tree-checkbox-inner { - background-color: #f5f5f5; - border-color: #d9d9d9 !important; -} -.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after { - border-color: #f5f5f5; - border-collapse: separate; - -webkit-animation-name: none; - animation-name: none; -} -.ant-tree-checkbox-disabled + span { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-tree-checkbox-disabled:hover::after, -.ant-tree-checkbox-wrapper:hover .ant-tree-checkbox-disabled::after { - visibility: hidden; -} -.ant-tree-checkbox-wrapper { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; - line-height: unset; - cursor: pointer; -} -.ant-tree-checkbox-wrapper.ant-tree-checkbox-wrapper-disabled { - cursor: not-allowed; -} -.ant-tree-checkbox-wrapper + .ant-tree-checkbox-wrapper { - margin-left: 8px; -} -.ant-tree-checkbox + span { - padding-right: 8px; - padding-left: 8px; -} -.ant-tree-checkbox-group { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - display: inline-block; -} -.ant-tree-checkbox-group-item { - display: inline-block; - margin-right: 8px; -} -.ant-tree-checkbox-group-item:last-child { - margin-right: 0; -} -.ant-tree-checkbox-group-item + .ant-tree-checkbox-group-item { - margin-left: 0; -} -.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner { - background-color: #fff; - border-color: #d9d9d9; -} -.ant-tree-checkbox-indeterminate .ant-tree-checkbox-inner::after { - top: 50%; - left: 50%; - width: 8px; - height: 8px; - background-color: #1890ff; - border: 0; - -webkit-transform: translate(-50%, -50%) scale(1); - transform: translate(-50%, -50%) scale(1); - opacity: 1; - content: ' '; -} -.ant-tree-checkbox-indeterminate.ant-tree-checkbox-disabled .ant-tree-checkbox-inner::after { - background-color: rgba(0, 0, 0, 0.25); - border-color: rgba(0, 0, 0, 0.25); -} -.ant-tree { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - background: #fff; - border-radius: 2px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; -} -.ant-tree-focused:not(:hover):not(.ant-tree-active-focused) { - background: #e6f7ff; -} -.ant-tree-list-holder-inner { - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} -.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner { - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; -} -.ant-tree.ant-tree-block-node .ant-tree-list-holder-inner .ant-tree-node-content-wrapper { - -webkit-box-flex: 1; - -ms-flex: auto; - flex: auto; -} -.ant-tree .ant-tree-treenode { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - padding: 0 0 4px 0; - outline: none; -} -.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; -} -.ant-tree .ant-tree-treenode-disabled .ant-tree-node-content-wrapper:hover { - background: transparent; -} -.ant-tree .ant-tree-treenode-active .ant-tree-node-content-wrapper { - background: #f5f5f5; -} -.ant-tree-indent { - -ms-flex-item-align: stretch; - align-self: stretch; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-tree-indent-unit { - display: inline-block; - width: 24px; -} -.ant-tree .ant-tree-switcher { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - width: 24px; - height: 24px; - margin: 0; - line-height: 24px; - text-align: center; - cursor: pointer; -} -.ant-tree .ant-tree-switcher .ant-tree-switcher-icon, -.ant-tree .ant-tree-switcher .ant-select-tree-switcher-icon { - font-size: 10px; - display: inline-block; - vertical-align: baseline; -} -.ant-tree .ant-tree-switcher .ant-tree-switcher-icon svg, -.ant-tree .ant-tree-switcher .ant-select-tree-switcher-icon svg { - -webkit-transition: -webkit-transform 0.3s; - transition: -webkit-transform 0.3s; - transition: transform 0.3s; - transition: transform 0.3s, -webkit-transform 0.3s; -} -.ant-tree .ant-tree-switcher-noop { - cursor: default; -} -.ant-tree .ant-tree-switcher_close .ant-tree-switcher-icon svg { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} -.ant-tree .ant-tree-switcher-loading-icon { - color: #1890ff; -} -.ant-tree .ant-tree-switcher-leaf-line { - z-index: 1; - display: inline-block; - width: 100%; - height: 100%; -} -.ant-tree .ant-tree-switcher-leaf-line::before { - position: absolute; - height: 24px; - margin-left: -1px; - border-left: 1px solid #d9d9d9; - content: ' '; -} -.ant-tree .ant-tree-switcher-leaf-line::after { - position: absolute; - width: 10px; - height: 14px; - margin-left: -1px; - border-bottom: 1px solid #d9d9d9; - content: ' '; -} -.ant-tree .ant-tree-checkbox { - top: initial; - margin: 4px 8px 0 0; -} -.ant-tree .ant-tree-node-content-wrapper { - min-height: 24px; - margin: 0; - padding: 0 4px; - color: inherit; - line-height: 24px; - background: transparent; - border-radius: 2px; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-tree .ant-tree-node-content-wrapper:hover { - background-color: #f5f5f5; -} -.ant-tree .ant-tree-node-content-wrapper.ant-tree-node-selected { - background-color: #bae7ff; -} -.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle { - display: inline-block; - width: 24px; - height: 24px; - line-height: 24px; - text-align: center; - vertical-align: top; -} -.ant-tree .ant-tree-node-content-wrapper .ant-tree-iconEle:empty { - display: none; -} -.ant-tree-node-content-wrapper[draggable='true'] { - line-height: 20px; - border-top: 2px transparent solid; - border-bottom: 2px transparent solid; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.ant-tree .ant-tree-treenode.drag-over > [draggable] { - color: white; - background-color: #1890ff; - opacity: 0.8; -} -.ant-tree .ant-tree-treenode.drag-over-gap-top > [draggable] { - border-top-color: #1890ff; -} -.ant-tree .ant-tree-treenode.drag-over-gap-bottom > [draggable] { - border-bottom-color: #1890ff; -} -.ant-tree-show-line { - /* Motion should hide line of measure */ -} -.ant-tree-show-line .ant-tree-indent-unit { - position: relative; - height: 100%; -} -.ant-tree-show-line .ant-tree-indent-unit::before { - position: absolute; - top: calc(100% - 4px); - right: -12px; - bottom: -28px; - border-right: 1px solid #d9d9d9; - content: ''; -} -.ant-tree-show-line .ant-tree-indent-unit-end::before { - display: none; -} -.ant-tree-show-line .ant-tree-treenode-motion:not(.ant-motion-collapse-leave):not(.ant-motion-collapse-appear-active) .ant-tree-indent-unit::before { - display: none; -} -.ant-tree-show-line .ant-tree-switcher { - z-index: 1; - background: #fff; -} -.ant-tree-rtl { - direction: rtl; -} -.ant-tree .ant-tree-treenode-rtl { - direction: rtl; -} -.ant-tree-rtl.ant-tree .ant-tree-switcher_close .ant-tree-switcher-icon svg { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); -} -.ant-tree-rtl.ant-tree-show-line .ant-tree-indent-unit::before { - right: auto; - left: -12px; - border-right: none; - border-left: 1px solid #d9d9d9; -} -.ant-tree-rtl.ant-tree .ant-tree-checkbox { - margin: 4px 0 0 8px; -} -.ant-tree-select-dropdown-rtl .ant-select-tree .ant-select-tree-checkbox { - margin: 4px 0 0 8px; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-typography { - color: rgba(0, 0, 0, 0.65); - overflow-wrap: break-word; -} -.ant-typography.ant-typography-secondary { - color: rgba(0, 0, 0, 0.45); -} -.ant-typography.ant-typography-warning { - color: #faad14; -} -.ant-typography.ant-typography-danger { - color: #ff4d4f; -} -.ant-typography.ant-typography-disabled { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -div.ant-typography, -.ant-typography p { - margin-bottom: 1em; -} -h1.ant-typography, -.ant-typography h1 { - margin-bottom: 0.5em; - color: rgba(0, 0, 0, 0.85); - font-weight: 600; - font-size: 38px; - line-height: 1.23; -} -h2.ant-typography, -.ant-typography h2 { - margin-bottom: 0.5em; - color: rgba(0, 0, 0, 0.85); - font-weight: 600; - font-size: 30px; - line-height: 1.35; -} -h3.ant-typography, -.ant-typography h3 { - margin-bottom: 0.5em; - color: rgba(0, 0, 0, 0.85); - font-weight: 600; - font-size: 24px; - line-height: 1.35; -} -h4.ant-typography, -.ant-typography h4 { - margin-bottom: 0.5em; - color: rgba(0, 0, 0, 0.85); - font-weight: 600; - font-size: 20px; - line-height: 1.4; -} -.ant-typography + h1.ant-typography, -.ant-typography + h2.ant-typography, -.ant-typography + h3.ant-typography, -.ant-typography + h4.ant-typography { - margin-top: 1.2em; -} -.ant-typography div + h1, -.ant-typography ul + h1, -.ant-typography li + h1, -.ant-typography p + h1, -.ant-typography h1 + h1, -.ant-typography h2 + h1, -.ant-typography h3 + h1, -.ant-typography h4 + h1, -.ant-typography div + h2, -.ant-typography ul + h2, -.ant-typography li + h2, -.ant-typography p + h2, -.ant-typography h1 + h2, -.ant-typography h2 + h2, -.ant-typography h3 + h2, -.ant-typography h4 + h2, -.ant-typography div + h3, -.ant-typography ul + h3, -.ant-typography li + h3, -.ant-typography p + h3, -.ant-typography h1 + h3, -.ant-typography h2 + h3, -.ant-typography h3 + h3, -.ant-typography h4 + h3, -.ant-typography div + h4, -.ant-typography ul + h4, -.ant-typography li + h4, -.ant-typography p + h4, -.ant-typography h1 + h4, -.ant-typography h2 + h4, -.ant-typography h3 + h4, -.ant-typography h4 + h4 { - margin-top: 1.2em; -} -a.ant-typography-ellipsis, -span.ant-typography-ellipsis { - display: inline-block; -} -a.ant-typography, -.ant-typography a { - color: #1890ff; - text-decoration: none; - outline: none; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; -} -a.ant-typography:focus, -.ant-typography a:focus, -a.ant-typography:hover, -.ant-typography a:hover { - color: #40a9ff; -} -a.ant-typography:active, -.ant-typography a:active { - color: #096dd9; -} -a.ant-typography:active, -.ant-typography a:active, -a.ant-typography:hover, -.ant-typography a:hover { - text-decoration: none; -} -a.ant-typography[disabled], -.ant-typography a[disabled] { - color: rgba(0, 0, 0, 0.25); - cursor: not-allowed; - pointer-events: none; -} -.ant-typography code { - margin: 0 0.2em; - padding: 0.2em 0.4em 0.1em; - font-size: 85%; - background: rgba(150, 150, 150, 0.1); - border: 1px solid rgba(100, 100, 100, 0.2); - border-radius: 3px; -} -.ant-typography kbd { - margin: 0 0.2em; - padding: 0.15em 0.4em 0.1em; - font-size: 90%; - background: rgba(150, 150, 150, 0.06); - border: 1px solid rgba(100, 100, 100, 0.2); - border-bottom-width: 2px; - border-radius: 3px; -} -.ant-typography mark { - padding: 0; - background-color: #ffe58f; -} -.ant-typography u, -.ant-typography ins { - text-decoration: underline; - -webkit-text-decoration-skip: ink; - text-decoration-skip-ink: auto; -} -.ant-typography s, -.ant-typography del { - text-decoration: line-through; -} -.ant-typography strong { - font-weight: 600; -} -.ant-typography-expand, -.ant-typography-edit, -.ant-typography-copy { - color: #1890ff; - text-decoration: none; - outline: none; - cursor: pointer; - -webkit-transition: color 0.3s; - transition: color 0.3s; - margin-left: 4px; -} -.ant-typography-expand:focus, -.ant-typography-edit:focus, -.ant-typography-copy:focus, -.ant-typography-expand:hover, -.ant-typography-edit:hover, -.ant-typography-copy:hover { - color: #40a9ff; -} -.ant-typography-expand:active, -.ant-typography-edit:active, -.ant-typography-copy:active { - color: #096dd9; -} -.ant-typography-copy-success, -.ant-typography-copy-success:hover, -.ant-typography-copy-success:focus { - color: #52c41a; -} -.ant-typography-edit-content { - position: relative; -} -div.ant-typography-edit-content { - left: -12px; - margin-top: -5px; - margin-bottom: calc(1em - 4px - 2px); -} -.ant-typography-edit-content-confirm { - position: absolute; - right: 10px; - bottom: 8px; - color: rgba(0, 0, 0, 0.45); - pointer-events: none; -} -.ant-typography-edit-content textarea { - -moz-transition: none; -} -.ant-typography ul, -.ant-typography ol { - margin: 0 0 1em 0; - padding: 0; -} -.ant-typography ul li, -.ant-typography ol li { - margin: 0 0 0 20px; - padding: 0 0 0 4px; -} -.ant-typography ul { - list-style-type: circle; -} -.ant-typography ul ul { - list-style-type: disc; -} -.ant-typography ol { - list-style-type: decimal; -} -.ant-typography-ellipsis-single-line { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -a.ant-typography-ellipsis-single-line, -span.ant-typography-ellipsis-single-line { - vertical-align: bottom; -} -.ant-typography-ellipsis-multiple-line { - display: -webkit-box; - -webkit-line-clamp: 3; - /*! autoprefixer: ignore next */ - -webkit-box-orient: vertical; - overflow: hidden; -} -.ant-typography-rtl { - direction: rtl; -} -.ant-typography-rtl .ant-typography-expand, -.ant-typography-rtl .ant-typography-edit, -.ant-typography-rtl .ant-typography-copy { - margin-right: 4px; - margin-left: 0; -} -.ant-typography-rtl .ant-typography-expand { - float: left; -} -div.ant-typography-edit-content.ant-typography-rtl { - right: -12px; - left: auto; -} -.ant-typography-rtl .ant-typography-edit-content-confirm { - right: auto; - left: 10px; -} -.ant-typography-rtl.ant-typography ul li, -.ant-typography-rtl.ant-typography ol li { - margin: 0 20px 0 0; - padding: 0 4px 0 0; -} - -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -/* stylelint-disable no-duplicate-selectors */ -/* stylelint-disable */ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.ant-upload { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - line-height: 1.5715; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - outline: 0; -} -.ant-upload p { - margin: 0; -} -.ant-upload-btn { - display: block; - width: 100%; - outline: none; -} -.ant-upload input[type='file'] { - cursor: pointer; -} -.ant-upload.ant-upload-select { - display: inline-block; -} -.ant-upload.ant-upload-disabled { - cursor: not-allowed; -} -.ant-upload.ant-upload-select-picture-card { - display: table; - float: left; - width: 104px; - height: 104px; - margin-right: 8px; - margin-bottom: 8px; - text-align: center; - vertical-align: top; - background-color: #fafafa; - border: 1px dashed #d9d9d9; - border-radius: 2px; - cursor: pointer; - -webkit-transition: border-color 0.3s ease; - transition: border-color 0.3s ease; -} -.ant-upload.ant-upload-select-picture-card > .ant-upload { - display: table-cell; - width: 100%; - height: 100%; - padding: 8px; - text-align: center; - vertical-align: middle; -} -.ant-upload.ant-upload-select-picture-card:hover { - border-color: #1890ff; -} -.ant-upload-disabled.ant-upload.ant-upload-select-picture-card:hover { - border-color: #d9d9d9; -} -.ant-upload.ant-upload-drag { - position: relative; - width: 100%; - height: 100%; - text-align: center; - background: #fafafa; - border: 1px dashed #d9d9d9; - border-radius: 2px; - cursor: pointer; - -webkit-transition: border-color 0.3s; - transition: border-color 0.3s; -} -.ant-upload.ant-upload-drag .ant-upload { - padding: 16px 0; -} -.ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) { - border-color: #096dd9; -} -.ant-upload.ant-upload-drag.ant-upload-disabled { - cursor: not-allowed; -} -.ant-upload.ant-upload-drag .ant-upload-btn { - display: table; - height: 100%; -} -.ant-upload.ant-upload-drag .ant-upload-drag-container { - display: table-cell; - vertical-align: middle; -} -.ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover { - border-color: #40a9ff; -} -.ant-upload.ant-upload-drag p.ant-upload-drag-icon { - margin-bottom: 20px; -} -.ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon { - color: #40a9ff; - font-size: 48px; -} -.ant-upload.ant-upload-drag p.ant-upload-text { - margin: 0 0 4px; - color: rgba(0, 0, 0, 0.85); - font-size: 16px; -} -.ant-upload.ant-upload-drag p.ant-upload-hint { - color: rgba(0, 0, 0, 0.45); - font-size: 14px; -} -.ant-upload.ant-upload-drag .anticon-plus { - color: rgba(0, 0, 0, 0.25); - font-size: 30px; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-upload.ant-upload-drag .anticon-plus:hover { - color: rgba(0, 0, 0, 0.45); -} -.ant-upload.ant-upload-drag:hover .anticon-plus { - color: rgba(0, 0, 0, 0.45); -} -.ant-upload-picture-card-wrapper { - display: inline-block; - width: 100%; -} -.ant-upload-picture-card-wrapper::before { - display: table; - content: ''; -} -.ant-upload-picture-card-wrapper::after { - display: table; - clear: both; - content: ''; -} -.ant-upload-list { - -webkit-box-sizing: border-box; - box-sizing: border-box; - margin: 0; - padding: 0; - color: rgba(0, 0, 0, 0.65); - font-size: 14px; - font-variant: tabular-nums; - list-style: none; - -webkit-font-feature-settings: 'tnum'; - font-feature-settings: 'tnum'; - line-height: 1.5715; -} -.ant-upload-list::before { - display: table; - content: ''; -} -.ant-upload-list::after { - display: table; - clear: both; - content: ''; -} -.ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-1 { - padding-right: 14px; -} -.ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-2 { - padding-right: 28px; -} -.ant-upload-list-item { - position: relative; - height: 22.001px; - margin-top: 8px; - font-size: 14px; -} -.ant-upload-list-item-name { - display: inline-block; - width: 100%; - padding-left: 22px; - overflow: hidden; - line-height: 1.5715; - white-space: nowrap; - text-overflow: ellipsis; -} -.ant-upload-list-item-name-icon-count-1 { - padding-right: 14px; -} -.ant-upload-list-item-card-actions { - position: absolute; - right: 0; -} -.ant-upload-list-item-card-actions-btn { - opacity: 0; -} -.ant-upload-list-item-card-actions-btn.ant-btn-sm { - height: 20px; - line-height: 1; -} -.ant-upload-list-item-card-actions.picture { - top: 22px; - line-height: 0; -} -.ant-upload-list-item-card-actions-btn:focus, -.ant-upload-list-item-card-actions.picture .ant-upload-list-item-card-actions-btn { - opacity: 1; -} -.ant-upload-list-item-card-actions .anticon { - color: rgba(0, 0, 0, 0.45); -} -.ant-upload-list-item-info { - height: 100%; - padding: 0 12px 0 4px; - -webkit-transition: background-color 0.3s; - transition: background-color 0.3s; -} -.ant-upload-list-item-info > span { - display: block; - width: 100%; - height: 100%; -} -.ant-upload-list-item-info .anticon-loading .anticon, -.ant-upload-list-item-info .ant-upload-text-icon .anticon { - position: absolute; - top: 5px; - color: rgba(0, 0, 0, 0.45); - font-size: 14px; -} -.ant-upload-list-item .anticon-close { - display: inline-block; - font-size: 10px; - position: absolute; - top: 6px; - right: 4px; - color: rgba(0, 0, 0, 0.45); - line-height: 0; - cursor: pointer; - opacity: 0; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-upload-list-item .anticon-close:hover { - color: rgba(0, 0, 0, 0.65); -} -.ant-upload-list-item:hover .ant-upload-list-item-info { - background-color: #f5f5f5; -} -.ant-upload-list-item:hover .anticon-close { - opacity: 1; -} -.ant-upload-list-item:hover .ant-upload-list-item-card-actions-btn { - opacity: 1; -} -.ant-upload-list-item-error, -.ant-upload-list-item-error .ant-upload-text-icon > .anticon, -.ant-upload-list-item-error .ant-upload-list-item-name { - color: #ff4d4f; -} -.ant-upload-list-item-error .ant-upload-list-item-card-actions .anticon { - color: #ff4d4f; -} -.ant-upload-list-item-error .ant-upload-list-item-card-actions-btn { - opacity: 1; -} -.ant-upload-list-item-progress { - position: absolute; - bottom: -12px; - width: 100%; - padding-left: 26px; - font-size: 14px; - line-height: 0; -} -.ant-upload-list-picture .ant-upload-list-item, -.ant-upload-list-picture-card .ant-upload-list-item { - position: relative; - height: 66px; - padding: 8px; - border: 1px solid #d9d9d9; - border-radius: 2px; -} -.ant-upload-list-picture .ant-upload-list-item:hover, -.ant-upload-list-picture-card .ant-upload-list-item:hover { - background: transparent; -} -.ant-upload-list-picture .ant-upload-list-item-error, -.ant-upload-list-picture-card .ant-upload-list-item-error { - border-color: #ff4d4f; -} -.ant-upload-list-picture .ant-upload-list-item-info, -.ant-upload-list-picture-card .ant-upload-list-item-info { - padding: 0; -} -.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, -.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info { - background: transparent; -} -.ant-upload-list-picture .ant-upload-list-item-uploading, -.ant-upload-list-picture-card .ant-upload-list-item-uploading { - border-style: dashed; -} -.ant-upload-list-picture .ant-upload-list-item-thumbnail, -.ant-upload-list-picture-card .ant-upload-list-item-thumbnail { - position: absolute; - top: 8px; - left: 8px; - width: 48px; - height: 48px; - line-height: 54px; - text-align: center; - opacity: 0.8; -} -.ant-upload-list-picture .ant-upload-list-item-thumbnail .anticon, -.ant-upload-list-picture-card .ant-upload-list-item-thumbnail .anticon { - font-size: 26px; -} -.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], -.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] { - fill: #fff2f0; -} -.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], -.ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] { - fill: #ff4d4f; -} -.ant-upload-list-picture .ant-upload-list-item-icon, -.ant-upload-list-picture-card .ant-upload-list-item-icon { - position: absolute; - top: 50%; - left: 50%; - font-size: 26px; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} -.ant-upload-list-picture .ant-upload-list-item-icon .anticon, -.ant-upload-list-picture-card .ant-upload-list-item-icon .anticon { - font-size: 26px; -} -.ant-upload-list-picture .ant-upload-list-item-image, -.ant-upload-list-picture-card .ant-upload-list-item-image { - max-width: 100%; -} -.ant-upload-list-picture .ant-upload-list-item-thumbnail img, -.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img { - display: block; - width: 48px; - height: 48px; - overflow: hidden; -} -.ant-upload-list-picture .ant-upload-list-item-name, -.ant-upload-list-picture-card .ant-upload-list-item-name { - display: inline-block; - -webkit-box-sizing: border-box; - box-sizing: border-box; - max-width: 100%; - margin: 0 0 0 8px; - padding-right: 8px; - padding-left: 48px; - overflow: hidden; - line-height: 44px; - white-space: nowrap; - text-overflow: ellipsis; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-upload-list-picture .ant-upload-list-item-name-icon-count-1, -.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-1 { - padding-right: 18px; -} -.ant-upload-list-picture .ant-upload-list-item-name-icon-count-2, -.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-2 { - padding-right: 36px; -} -.ant-upload-list-picture .ant-upload-list-item-uploading .ant-upload-list-item-name, -.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-name { - line-height: 28px; -} -.ant-upload-list-picture .ant-upload-list-item-progress, -.ant-upload-list-picture-card .ant-upload-list-item-progress { - bottom: 14px; - width: calc(100% - 24px); - margin-top: 0; - padding-left: 56px; -} -.ant-upload-list-picture .anticon-close, -.ant-upload-list-picture-card .anticon-close { - position: absolute; - top: 8px; - right: 8px; - line-height: 1; - opacity: 1; -} -.ant-upload-list-picture-card.ant-upload-list::after { - display: none; -} -.ant-upload-list-picture-card-container { - float: left; - width: 104px; - height: 104px; - margin: 0 8px 8px 0; -} -.ant-upload-list-picture-card .ant-upload-list-item { - float: left; - width: 104px; - height: 104px; - margin: 0 8px 8px 0; -} -.ant-upload-list-picture-card .ant-upload-list-item-info { - position: relative; - height: 100%; - overflow: hidden; -} -.ant-upload-list-picture-card .ant-upload-list-item-info::before { - position: absolute; - z-index: 1; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - opacity: 0; - -webkit-transition: all 0.3s; - transition: all 0.3s; - content: ' '; -} -.ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info::before { - opacity: 1; -} -.ant-upload-list-picture-card .ant-upload-list-item-actions { - position: absolute; - top: 50%; - left: 50%; - z-index: 10; - white-space: nowrap; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - opacity: 0; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, -.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, -.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete { - z-index: 10; - width: 16px; - margin: 0 4px; - color: rgba(255, 255, 255, 0.85); - font-size: 16px; - cursor: pointer; - -webkit-transition: all 0.3s; - transition: all 0.3s; -} -.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover, -.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover, -.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover { - color: #fff; -} -.ant-upload-list-picture-card .ant-upload-list-item-info:hover + .ant-upload-list-item-actions, -.ant-upload-list-picture-card .ant-upload-list-item-actions:hover { - opacity: 1; -} -.ant-upload-list-picture-card .ant-upload-list-item-thumbnail, -.ant-upload-list-picture-card .ant-upload-list-item-thumbnail img { - position: static; - display: block; - width: 100%; - height: 100%; - -o-object-fit: cover; - object-fit: cover; -} -.ant-upload-list-picture-card .ant-upload-list-item-name { - display: none; - margin: 8px 0 0; - padding: 0; - line-height: 1.5715; - text-align: center; -} -.ant-upload-list-picture-card .ant-upload-list-item-file + .ant-upload-list-item-name { - position: absolute; - bottom: 10px; - display: block; -} -.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item { - background-color: #fafafa; -} -.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info { - height: auto; -} -.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info::before, -.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-eye, -.ant-upload-list-picture-card .ant-upload-list-item-uploading .ant-upload-list-item-info .anticon-delete { - display: none; -} -.ant-upload-list-picture-card .ant-upload-list-item-progress { - bottom: 32px; - padding-left: 0; -} -.ant-upload-list .ant-upload-success-icon { - color: #52c41a; - font-weight: bold; -} -.ant-upload-list .ant-upload-animate-enter, -.ant-upload-list .ant-upload-animate-leave, -.ant-upload-list .ant-upload-animate-inline-enter, -.ant-upload-list .ant-upload-animate-inline-leave { - -webkit-animation-duration: 0.3s; - animation-duration: 0.3s; - -webkit-animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86); - animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86); -} -.ant-upload-list .ant-upload-animate-enter { - -webkit-animation-name: uploadAnimateIn; - animation-name: uploadAnimateIn; -} -.ant-upload-list .ant-upload-animate-leave { - -webkit-animation-name: uploadAnimateOut; - animation-name: uploadAnimateOut; -} -.ant-upload-list .ant-upload-animate-inline-enter { - -webkit-animation-name: uploadAnimateInlineIn; - animation-name: uploadAnimateInlineIn; -} -.ant-upload-list .ant-upload-animate-inline-leave { - -webkit-animation-name: uploadAnimateInlineOut; - animation-name: uploadAnimateInlineOut; -} -@-webkit-keyframes uploadAnimateIn { - from { - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@keyframes uploadAnimateIn { - from { - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@-webkit-keyframes uploadAnimateOut { - to { - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@keyframes uploadAnimateOut { - to { - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@-webkit-keyframes uploadAnimateInlineIn { - from { - width: 0; - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@keyframes uploadAnimateInlineIn { - from { - width: 0; - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@-webkit-keyframes uploadAnimateInlineOut { - to { - width: 0; - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -@keyframes uploadAnimateInlineOut { - to { - width: 0; - height: 0; - margin: 0; - padding: 0; - opacity: 0; - } -} -.ant-upload-rtl { - direction: rtl; -} -.ant-upload-rtl.ant-upload.ant-upload-select-picture-card { - float: right; - margin-right: 0; - margin-left: 8px; -} -.ant-upload-list-rtl { - direction: rtl; -} -.ant-upload-list-rtl .ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-1 { - padding-right: 22px; - padding-left: 14px; -} -.ant-upload-list-rtl .ant-upload-list-item-list-type-text:hover .ant-upload-list-item-name-icon-count-2 { - padding-right: 22px; - padding-left: 28px; -} -.ant-upload-list-rtl .ant-upload-list-item-name { - padding-right: 22px; - padding-left: 0; -} -.ant-upload-list-rtl .ant-upload-list-item-name-icon-count-1 { - padding-left: 14px; -} -.ant-upload-list-rtl .ant-upload-list-item-card-actions { - right: auto; - left: 0; -} -.ant-upload-list-rtl .ant-upload-list-item-card-actions .anticon { - padding-right: 0; - padding-left: 5px; -} -.ant-upload-list-rtl .ant-upload-list-item-info { - padding: 0 4px 0 12px; -} -.ant-upload-list-rtl .ant-upload-list-item .anticon-close { - right: auto; - left: 4px; -} -.ant-upload-list-rtl .ant-upload-list-item-error .ant-upload-list-item-card-actions .anticon { - padding-right: 0; - padding-left: 5px; -} -.ant-upload-list-rtl .ant-upload-list-item-progress { - padding-right: 26px; - padding-left: 0; -} -.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-thumbnail, -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-thumbnail { - right: 8px; - left: auto; -} -.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-icon, -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-icon { - right: 50%; - left: auto; - -webkit-transform: translate(50%, -50%); - transform: translate(50%, -50%); -} -.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-name, -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-name { - margin: 0 8px 0 0; - padding-right: 48px; - padding-left: 8px; -} -.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-name-icon-count-1, -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-1 { - padding-right: 48px; - padding-left: 18px; -} -.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-name-icon-count-2, -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-name-icon-count-2 { - padding-right: 48px; - padding-left: 36px; -} -.ant-upload-list-rtl.ant-upload-list-picture .ant-upload-list-item-progress, -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-progress { - padding-right: 56px; - padding-left: 0; -} -.ant-upload-list-rtl.ant-upload-list-picture .anticon-close, -.ant-upload-list-rtl.ant-upload-list-picture-card .anticon-close { - right: auto; - left: 8px; -} -.ant-upload-list-rtl .ant-upload-list-picture-card-container { - float: right; - margin: 0 0 8px 8px; -} -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item { - float: right; - margin: 0 0 8px 8px; -} -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-actions { - right: 50%; - left: auto; - -webkit-transform: translate(50%, -50%); - transform: translate(50%, -50%); -} -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-file + .ant-upload-list-item-name { - margin: 8px 0 0; - padding: 0; -} -.ant-upload-list-rtl.ant-upload-list-picture-card .ant-upload-list-item-info { - padding: 0; -} - - -/*# sourceMappingURL=antd.css.map*/ \ No newline at end of file diff --git a/electron/assets/icons/splash-robot-head-dock.png b/electron/assets/icons/splash-robot-head-dock.png deleted file mode 100644 index fc2eadb05..000000000 Binary files a/electron/assets/icons/splash-robot-head-dock.png and /dev/null differ diff --git a/electron/assets/icons/splash-robot-head.png b/electron/assets/icons/splash-robot-head.png deleted file mode 100644 index d43fb2873..000000000 Binary files a/electron/assets/icons/splash-robot-head.png and /dev/null differ diff --git a/electron/assets/icons/tray-logged-out.png b/electron/assets/icons/tray-logged-out.png deleted file mode 100644 index 16311b50e..000000000 Binary files a/electron/assets/icons/tray-logged-out.png and /dev/null differ diff --git a/electron/assets/icons/tray-low-gas.png b/electron/assets/icons/tray-low-gas.png deleted file mode 100644 index 189b5db8b..000000000 Binary files a/electron/assets/icons/tray-low-gas.png and /dev/null differ diff --git a/electron/assets/icons/tray-paused.png b/electron/assets/icons/tray-paused.png deleted file mode 100644 index 86a3b1501..000000000 Binary files a/electron/assets/icons/tray-paused.png and /dev/null differ diff --git a/electron/assets/icons/tray-running.png b/electron/assets/icons/tray-running.png deleted file mode 100644 index ba2387c7a..000000000 Binary files a/electron/assets/icons/tray-running.png and /dev/null differ diff --git a/electron/constants/index.js b/electron/constants/index.js deleted file mode 100644 index 0d3c16db7..000000000 --- a/electron/constants/index.js +++ /dev/null @@ -1,55 +0,0 @@ -const os = require('os'); -const path = require('path'); -require('dotenv').config(); - -const PORT_RANGE = { startPort: 39152, endPort: 65535 }; -const ERROR_ADDRESS_IN_USE = 'EADDRINUSE'; - -// OS specific constants -const isWindows = process.platform === 'win32'; -const isMac = process.platform === 'darwin'; -const isLinux = process.platform === 'linux'; - -// Environment specific constants -const isDev = process.env.NODE_ENV === 'development'; -const isProd = !isDev; - -// Paths -const dotOperateDirectory = isProd - ? path.join(os.homedir(), '.operate') - : path.join(process.cwd(), '.operate'); - -const paths = { - dotOperateDirectory, - servicesDir: path.join(dotOperateDirectory, 'services'), - venvDir: path.join(dotOperateDirectory, 'venv'), - tempDir: path.join(dotOperateDirectory, 'temp'), - versionFile: path.join(dotOperateDirectory, 'version.txt'), - cliLogFile: path.join(dotOperateDirectory, 'cli.log'), - electronLogFile: path.join(dotOperateDirectory, 'electron.log'), - nextLogFile: path.join(dotOperateDirectory, 'next.log'), - osPearlTempDir: path.join(os.tmpdir(), 'pearl'), -}; - -// Publish options -const publishOptions = { - provider: 'github', - owner: 'valory-xyz', - repo: 'olas-operate-app', - releaseType: 'draft', - token: process.env.GH_TOKEN, - private: false, - publishAutoUpdate: false, -}; - -module.exports = { - PORT_RANGE, - ERROR_ADDRESS_IN_USE, - isWindows, - isMac, - isLinux, - isProd, - isDev, - publishOptions, - paths, -}; diff --git a/electron/entitlements.mac.plist b/electron/entitlements.mac.plist deleted file mode 100644 index 33951f8be..000000000 --- a/electron/entitlements.mac.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - com.apple.security.cs.allow-dyld-environment-variables - - com.apple.security.cs.disable-library-validation - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.debugger - - com.apple.security.network.client - - com.apple.security.network.server - - com.apple.security.files.user-selected.read-only - - com.apple.security.inherit - - com.apple.security.automation.apple-events - - - \ No newline at end of file diff --git a/electron/icons.js b/electron/icons.js deleted file mode 100644 index 7c6c72e66..000000000 --- a/electron/icons.js +++ /dev/null @@ -1,30 +0,0 @@ -const { nativeImage } = require('electron'); - -const TRAY_ICONS_PATHS = { - LOGGED_OUT: `${__dirname}/assets/icons/tray-logged-out.png`, - LOW_GAS: `${__dirname}/assets/icons/tray-low-gas.png`, - PAUSED: `${__dirname}/assets/icons/tray-paused.png`, - RUNNING: `${__dirname}/assets/icons/tray-running.png`, -}; - -const TRAY_ICONS = { - LOGGED_OUT: nativeImage.createFromPath(TRAY_ICONS_PATHS.LOGGED_OUT), - LOW_GAS: nativeImage.createFromPath(TRAY_ICONS_PATHS.LOW_GAS), - PAUSED: nativeImage.createFromPath(TRAY_ICONS_PATHS.PAUSED), - RUNNING: nativeImage.createFromPath(TRAY_ICONS_PATHS.RUNNING), -}; - -try { - if (process.platform === 'darwin') { - // resize icons for macOS - const size = { width: 16, height: 16 }; - TRAY_ICONS.LOGGED_OUT = TRAY_ICONS.LOGGED_OUT.resize(size); - TRAY_ICONS.LOW_GAS = TRAY_ICONS.LOW_GAS.resize({ width: 16, height: 16 }); - TRAY_ICONS.PAUSED = TRAY_ICONS.PAUSED.resize({ width: 16, height: 16 }); - TRAY_ICONS.RUNNING = TRAY_ICONS.RUNNING.resize({ width: 16, height: 16 }); - } -} catch (e) { - console.log('Error resizing tray icons', e); -} - -module.exports = { TRAY_ICONS_PATHS, TRAY_ICONS }; diff --git a/electron/install.js b/electron/install.js deleted file mode 100644 index ac60b76b3..000000000 --- a/electron/install.js +++ /dev/null @@ -1,199 +0,0 @@ -// Installation helpers. -const fs = require('fs'); -const os = require('os'); -const sudo = require('sudo-prompt'); -const process = require('process'); -const axios = require('axios'); -const { spawnSync } = require('child_process'); -const { logger } = require('./logger'); - -const { paths } = require('./constants'); - -/** - * current version of the pearl release - * - use "" (nothing as a suffix) for latest release candidate, for example "0.1.0rc26" - * - use "alpha" for alpha release, for example "0.1.0rc26-alpha" - */ -const OlasMiddlewareVersion = '0.1.0rc110'; - -const Env = { - ...process.env, - PATH: `${process.env.PATH}:/opt/homebrew/bin:/usr/local/bin`, - HOMEBREW_NO_AUTO_UPDATE: '1', -}; - -const SudoOptions = { - name: 'Pearl', - env: Env, -}; - -const TendermintUrls = { - darwin: { - x64: 'https://github.com/tendermint/tendermint/releases/download/v0.34.19/tendermint_0.34.19_darwin_amd64.tar.gz', - arm64: - 'https://github.com/tendermint/tendermint/releases/download/v0.34.19/tendermint_0.34.19_darwin_arm64.tar.gz', - }, - linux: { - x64: 'https://github.com/tendermint/tendermint/releases/download/v0.34.19/tendermint_0.34.19_linux_amd64.tar.gz', - arm64: - 'https://github.com/tendermint/tendermint/releases/download/v0.34.19/tendermint_0.34.19_linux_arm64.tar.gz', - }, - win32: { - x64: 'https://github.com/tendermint/tendermint/releases/download/v0.34.19/tendermint_0.34.19_windows_amd64.tar.gz', - arm64: - 'https://github.com/tendermint/tendermint/releases/download/v0.34.19/tendermint_0.34.19_windows_arm64.tar.gz', - }, -}; - -function getBinPath(command) { - return spawnSync('/usr/bin/which', [command], { env: Env }) - .stdout?.toString() - .trim(); -} - -function runCmdUnix(command, options) { - logger.electron(`Running ${command} with options ${JSON.stringify(options)}`); - let bin = getBinPath(command); - if (!bin) { - throw new Error(`Command ${command} not found; Path : ${Env.PATH}`); - } - let output = spawnSync(bin, options); - if (output.error) { - throw new Error( - `Error running ${command} with options ${options}; - Error: ${output.error}; Stdout: ${output.stdout}; Stderr: ${output.stderr}`, - ); - } - logger.electron(`Executed ${command} ${options} with`); - logger.electron(`===== stdout ===== \n${output.stdout}`); - logger.electron(`===== stderr ===== \n${output.stderr}`); -} - -function runSudoUnix(command, options) { - let bin = getBinPath(command); - if (!bin) { - throw new Error(`Command ${command} not found`); - } - return new Promise(function (resolve, _reject) { - sudo.exec( - `${bin} ${options}`, - SudoOptions, - function (error, stdout, stderr) { - let output = { - error: error, - stdout: stdout, - stderr: stderr, - }; - if (output.error) { - throw new Error( - `Error running ${command} with options ${options}; - Error: ${output.error}; Stdout: ${output.stdout}; Stderr: ${output.stderr}`, - ); - } - logger.electron(`Executed ${command} ${options} with`); - logger.electron(`===== stdout ===== \n${output.stdout}`); - logger.electron(`===== stderr ===== \n${output.stderr}`); - resolve(); - }, - ); - }); -} - -function isTendermintInstalledUnix() { - return Boolean(getBinPath('tendermint')); -} - -async function downloadFile(url, dest) { - const writer = fs.createWriteStream(dest); - try { - const response = await axios({ - url, - method: 'GET', - responseType: 'stream', - }); - response.data.pipe(writer); - return new Promise((resolve, reject) => { - writer.on('finish', resolve); - writer.on('error', reject); - }); - } catch (err) { - fs.unlink(dest, () => {}); // Delete the file if there is an error - console.error('Error downloading the file:', err.message); - } -} - -async function installTendermintUnix() { - logger.electron(`Installing tendermint for ${os.platform()}-${process.arch}`); - const cwd = process.cwd(); - process.chdir(paths.tempDir); - - const url = TendermintUrls[os.platform()][process.arch]; - - logger.electron( - `Downloading ${url} to ${paths.tempDir}. This might take a while...`, - ); - await downloadFile(url, `${paths.tempDir}/tendermint.tar.gz`); - - logger.electron(`Installing tendermint binary`); - runCmdUnix('tar', ['-xvf', 'tendermint.tar.gz']); - - // TOFIX: Install tendermint in .operate instead of globally - if (!Env.CI) { - if (!fs.existsSync('/usr/local/bin')) { - await runSudoUnix('mkdir', '/usr/local/bin'); - } - await runSudoUnix( - 'install', - `${paths.tempDir}/tendermint /usr/local/bin/tendermint`, - ); - } - process.chdir(cwd); -} - -function createDirectory(path) { - if (fs.existsSync(path)) { - return; - } - return new Promise((resolve, _reject) => { - fs.mkdir(path, { recursive: true }, (error) => { - resolve(!error); - }); - }); -} - -/*******************************/ -// NOTE: "Installing" is string matched in loading.html to detect installation -/*******************************/ - -async function setupDarwin(ipcChannel) { - logger.electron('Creating required directories'); - await createDirectory(`${paths.dotOperateDirectory}`); - await createDirectory(`${paths.tempDir}`); - - logger.electron('Checking tendermint installation'); - if (!isTendermintInstalledUnix()) { - ipcChannel.send('response', 'Installing Pearl Daemon'); - logger.electron('Installing tendermint'); - await installTendermintUnix(); - } -} - -// TODO: Add Tendermint installation -async function setupUbuntu(ipcChannel) { - logger.electron('Creating required directories'); - await createDirectory(`${paths.dotOperateDirectory}`); - await createDirectory(`${paths.tempDir}`); - - logger.electron('Checking tendermint installation'); - if (!isTendermintInstalledUnix()) { - ipcChannel.send('response', 'Installing Pearl Daemon'); - logger.electron('Installing tendermint'); - await installTendermintUnix(); - } -} - -module.exports = { - setupDarwin, - setupUbuntu, - Env, -}; diff --git a/electron/loading/index.html b/electron/loading/index.html deleted file mode 100644 index 12e942969..000000000 --- a/electron/loading/index.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
- logo -
- - - -
-
- - - - - \ No newline at end of file diff --git a/electron/loading/styles.css b/electron/loading/styles.css deleted file mode 100644 index 641342b6c..000000000 --- a/electron/loading/styles.css +++ /dev/null @@ -1,26 +0,0 @@ -body { - position: relative; - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; -} - -main { - display: flex; - flex-direction: column; - gap: 10px; - text-align: center; - align-content: center; -} - -.text { - font-size: 18px; -} - -img { - margin: 0 auto; - width: 150px !important; - height: 150px !important; -} \ No newline at end of file diff --git a/electron/logger.js b/electron/logger.js deleted file mode 100644 index 4127f4f23..000000000 --- a/electron/logger.js +++ /dev/null @@ -1,73 +0,0 @@ -const winston = require('winston'); -const { format } = require('logform'); -const { paths } = require('./constants'); - -const { combine, timestamp, printf } = format; - -const logFormat = printf(({ level, message, timestamp }) => { - return `${timestamp} ${level}: ${message}`; -}); - -const customLevels = { - levels: { - error: 0, - warn: 1, - info: 2, - next: 3, - cli: 4, - electron: 5, - }, - colors: { - error: 'red', - warn: 'yellow', - info: 'blue', - cli: 'green bold underline', - electron: 'magenta bold underline', - next: 'cyan bold underline', - }, -}; - -// Custom filter for specific levels, otherwise higher levels will include lower levels -const levelFilter = (level) => - format((info, _opts) => { - return info.level === level ? info : false; - })(); - -const logger = winston.createLogger({ - levels: customLevels.levels, - transports: [ - new winston.transports.Console({ - level: 'electron', // Set to the highest level so it captures everything. - format: combine(winston.format.colorize(), timestamp(), logFormat), - }), - new winston.transports.File({ - filename: 'cli.log', - dirname: paths.dotOperateDirectory, - level: 'cli', - format: combine(levelFilter('cli'), timestamp(), logFormat), - maxFiles: 1, - maxsize: 1024 * 1024 * 10, - }), - new winston.transports.File({ - filename: 'electron.log', - dirname: paths.dotOperateDirectory, - level: 'electron', - format: combine(levelFilter('electron'), timestamp(), logFormat), - maxFiles: 1, - maxsize: 1024 * 1024 * 10, - }), - new winston.transports.File({ - filename: 'next.log', - dirname: paths.dotOperateDirectory, - level: 'next', - format: combine(levelFilter('next'), timestamp(), logFormat), - maxFiles: 1, - maxsize: 1024 * 1024 * 10, - }), - ], - format: combine(timestamp(), logFormat), -}); - -winston.addColors(customLevels.colors); - -module.exports = { logger }; diff --git a/electron/main.js b/electron/main.js deleted file mode 100644 index e2c66a668..000000000 --- a/electron/main.js +++ /dev/null @@ -1,687 +0,0 @@ -const { - app, - BrowserWindow, - Tray, - Menu, - Notification, - ipcMain, - dialog, - shell, -} = require('electron'); -const { spawn } = require('child_process'); -const path = require('path'); -const fs = require('fs'); -const os = require('os'); -const next = require('next'); -const http = require('http'); -const AdmZip = require('adm-zip'); -const { TRAY_ICONS, TRAY_ICONS_PATHS } = require('./icons'); - -const { setupDarwin, setupUbuntu, Env } = require('./install'); - -const { paths } = require('./constants'); -const { killProcesses } = require('./processes'); -const { isPortAvailable, findAvailablePort } = require('./ports'); -const { PORT_RANGE, isWindows, isMac } = require('./constants'); -const { macUpdater } = require('./update'); -const { setupStoreIpc } = require('./store'); -const { logger } = require('./logger'); -const { isDev } = require('./constants'); - -// Attempt to acquire the single instance lock -const singleInstanceLock = app.requestSingleInstanceLock(); -if (!singleInstanceLock) app.quit(); - -const platform = os.platform(); - -const binaryPaths = { - darwin: { - arm64: 'bins/pearl_arm64', - x64: 'bins/pearl_x64', - }, -}; - -let appConfig = { - ports: { - dev: { - operate: 8000, - next: 3000, - }, - prod: { - operate: 8765, - next: 3000, - }, - }, -}; - -let tray, - mainWindow, - splashWindow, - operateDaemon, - operateDaemonPid, - nextAppProcess, - nextAppProcessPid; - -function showNotification(title, body) { - new Notification({ title, body }).show(); -} - -async function beforeQuit() { - if (operateDaemonPid) { - try { - await killProcesses(operateDaemonPid); - } catch (e) { - logger.electron(e); - } - } - - if (nextAppProcessPid) { - try { - await killProcesses(nextAppProcessPid); - } catch (e) { - logger.electron(e); - } - } - - tray && tray.destroy(); - mainWindow && mainWindow.destroy(); -} - -const getUpdatedTrayIcon = (iconPath) => { - const icon = iconPath; - if (icon.resize) { - icon.resize({ width: 16 }); - icon.setTemplateImage(true); - } - - return icon; -}; - -/** - * Creates the tray - */ -const createTray = () => { - const trayPath = getUpdatedTrayIcon( - isWindows || isMac ? TRAY_ICONS.LOGGED_OUT : TRAY_ICONS_PATHS.LOGGED_OUT, - ); - const tray = new Tray(trayPath); - - const contextMenu = Menu.buildFromTemplate([ - { - label: 'Show app', - click: function () { - mainWindow.show(); - }, - }, - { - label: 'Hide app', - click: function () { - mainWindow.hide(); - }, - }, - { - label: 'Quit', - click: async function () { - await beforeQuit(); - app.quit(); - }, - }, - ]); - tray.setToolTip('Pearl'); - tray.setContextMenu(contextMenu); - - ipcMain.on('tray', (_event, status) => { - switch (status) { - case 'low-gas': { - const icon = getUpdatedTrayIcon( - isWindows || isMac ? TRAY_ICONS.LOW_GAS : TRAY_ICONS_PATHS.LOW_GAS, - ); - tray.setImage(icon); - break; - } - case 'running': { - const icon = getUpdatedTrayIcon( - isWindows || isMac ? TRAY_ICONS.RUNNING : TRAY_ICONS_PATHS.RUNNING, - ); - tray.setImage(icon); - - break; - } - case 'paused': { - const icon = getUpdatedTrayIcon( - isWindows || isMac ? TRAY_ICONS.PAUSED : TRAY_ICONS_PATHS.PAUSED, - ); - tray.setImage(icon); - break; - } - } - }); -}; - -const APP_WIDTH = 460; - -/** - * Creates the splash window - */ -const createSplashWindow = () => { - splashWindow = new BrowserWindow({ - width: APP_WIDTH, - height: APP_WIDTH, - resizable: false, - show: true, - title: 'Pearl', - frame: false, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - }, - }); - splashWindow.loadURL('file://' + __dirname + '/loading/index.html'); - - if (isDev) { - splashWindow.webContents.openDevTools(); - } -}; - -const HEIGHT = 700; -/** - * Creates the main window - */ -const createMainWindow = () => { - const width = isDev ? 840 : APP_WIDTH; - mainWindow = new BrowserWindow({ - title: 'Pearl', - resizable: false, - draggable: true, - frame: false, - transparent: true, - fullscreenable: false, - maximizable: false, - width, - maxHeight: HEIGHT, - webPreferences: { - nodeIntegration: false, - contextIsolation: true, - preload: path.join(__dirname, 'preload.js'), - }, - }); - - mainWindow.setMenuBarVisibility(true); - - if (isDev) { - mainWindow.loadURL(`http://localhost:${appConfig.ports.dev.next}`); - } else { - mainWindow.loadURL(`http://localhost:${appConfig.ports.prod.next}`); - } - - ipcMain.on('close-app', () => { - mainWindow.close(); - }); - - ipcMain.on('minimize-app', () => { - mainWindow.minimize(); - }); - - app.on('activate', () => { - if (mainWindow.isMinimized()) { - mainWindow.restore(); - } else { - mainWindow.show(); - } - }); - - ipcMain.on('set-height', (_event, height) => { - mainWindow.setSize(width, height); - }); - - ipcMain.on('show-notification', (_event, title, description) => { - showNotification(title, description || undefined); - }); - - mainWindow.webContents.on('did-fail-load', () => { - mainWindow.webContents.reloadIgnoringCache(); - }); - - mainWindow.webContents.on('ready-to-show', () => { - mainWindow.show(); - }); - - mainWindow.webContents.setWindowOpenHandler(({ url }) => { - // open url in a browser and prevent default - require('electron').shell.openExternal(url); - return { action: 'deny' }; - }); - - mainWindow.on('close', function (event) { - event.preventDefault(); - mainWindow.hide(); - }); - - const storeInitialValues = { - environmentName: process.env.IS_STAGING ? 'staging' : '', - }; - setupStoreIpc(ipcMain, mainWindow, storeInitialValues); - - if (isDev) { - mainWindow.webContents.openDevTools(); - } -}; - -async function launchDaemon() { - // Free up backend port if already occupied - try { - await fetch(`http://localhost:${appConfig.ports.prod.operate}/api`); - logger.electron('Killing backend server!'); - let endpoint = fs - .readFileSync(`${paths.dotOperateDirectory}/operate.kill`) - .toString() - .trim(); - - await fetch(`http://localhost:${appConfig.ports.prod.operate}/${endpoint}`); - } catch (err) { - logger.electron('Backend not running!'); - } - - const check = new Promise(function (resolve, _reject) { - operateDaemon = spawn( - path.join( - process.resourcesPath, - binaryPaths[platform][process.arch.toString()], - ), - [ - 'daemon', - `--port=${appConfig.ports.prod.operate}`, - `--home=${paths.dotOperateDirectory}`, - ], - { env: Env }, - ); - operateDaemonPid = operateDaemon.pid; - // fs.appendFileSync( - // `${paths.OperateDirectory}/operate.pip`, - // `${operateDaemon.pid}`, - // { - // encoding: 'utf-8', - // }, - // ); - - operateDaemon.stderr.on('data', (data) => { - if (data.toString().includes('Uvicorn running on')) { - resolve({ running: true, error: null }); - } - if ( - data.toString().includes('error while attempting to bind on address') - ) { - resolve({ running: false, error: 'Port already in use' }); - } - logger.cli(data.toString().trim()); - }); - operateDaemon.stdout.on('data', (data) => { - logger.cli(data.toString().trim()); - }); - }); - - return await check; -} - -async function launchDaemonDev() { - const check = new Promise(function (resolve, _reject) { - operateDaemon = spawn('poetry', [ - 'run', - 'operate', - 'daemon', - `--port=${appConfig.ports.dev.operate}`, - '--home=.operate', - ]); - operateDaemonPid = operateDaemon.pid; - operateDaemon.stderr.on('data', (data) => { - if (data.toString().includes('Uvicorn running on')) { - resolve({ running: true, error: null }); - } - if ( - data.toString().includes('error while attempting to bind on address') - ) { - resolve({ running: false, error: 'Port already in use' }); - } - logger.cli(data.toString().trim()); - }); - operateDaemon.stdout.on('data', (data) => { - logger.cli(data.toString().trim()); - }); - }); - return await check; -} - -async function launchNextApp() { - const nextApp = next({ - dev: false, - dir: path.join(__dirname), - port: appConfig.ports.prod.next, - env: { - GNOSIS_RPC: - process.env.NODE_ENV === 'production' - ? process.env.FORK_URL - : process.env.DEV_RPC, - NEXT_PUBLIC_BACKEND_PORT: - process.env.NODE_ENV === 'production' - ? appConfig.ports.prod.operate - : appConfig.ports.dev.operate, - }, - }); - await nextApp.prepare(); - - const handle = nextApp.getRequestHandler(); - const server = http.createServer((req, res) => { - handle(req, res); // Handle requests using the Next.js request handler - }); - server.listen(appConfig.ports.prod.next, (err) => { - if (err) throw err; - logger.next( - `> Next server running on http://localhost:${appConfig.ports.prod.next}`, - ); - }); -} - -async function launchNextAppDev() { - await new Promise(function (resolve, _reject) { - process.env.NEXT_PUBLIC_BACKEND_PORT = appConfig.ports.dev.operate; // must set next env var to connect to backend - nextAppProcess = spawn( - 'yarn', - ['dev:frontend', '--port', appConfig.ports.dev.next], - { - env: { - ...process.env, - NEXT_PUBLIC_BACKEND_PORT: appConfig.ports.dev.operate, - }, - }, - ); - nextAppProcessPid = nextAppProcess.pid; - nextAppProcess.stdout.on('data', (data) => { - logger.next(data.toString().trim()); - resolve(); - }); - }); -} - -ipcMain.on('check', async function (event, _argument) { - // Update - try { - // macUpdater.checkForUpdates().then((res) => { - // if (!res) return; - // if (!res.downloadPromise) return; - // new Notification({ - // title: 'Update Available', - // body: 'Downloading update...', - // }).show(); - // res.downloadPromise.then(() => { - // new Notification({ - // title: 'Update Downloaded', - // body: 'Restarting application...', - // }).show(); - // macUpdater.quitAndInstall(); - // }); - // }); - } catch (e) { - logger.electron(e); - } - - // Setup - try { - event.sender.send('response', 'Checking installation'); - - if (platform === 'darwin') { - await setupDarwin(event.sender); - } else if (platform === 'win32') { - // TODO - } else { - await setupUbuntu(event.sender); - } - - if (isDev) { - event.sender.send( - 'response', - 'Starting Pearl Daemon In Development Mode', - ); - - const daemonDevPortAvailable = await isPortAvailable( - appConfig.ports.dev.operate, - ); - - if (!daemonDevPortAvailable) { - appConfig.ports.dev.operate = await findAvailablePort({ - ...PORT_RANGE, - }); - } - await launchDaemonDev(); - event.sender.send( - 'response', - 'Starting Frontend Server In Development Mode', - ); - - const frontendDevPortAvailable = await isPortAvailable( - appConfig.ports.dev.next, - ); - - if (!frontendDevPortAvailable) { - appConfig.ports.dev.next = await findAvailablePort({ - ...PORT_RANGE, - excludePorts: [appConfig.ports.dev.operate], - }); - } - await launchNextAppDev(); - } else { - event.sender.send('response', 'Starting Pearl Daemon'); - await launchDaemon(); - - event.sender.send('response', 'Starting Frontend Server'); - const frontendPortAvailable = await isPortAvailable( - appConfig.ports.prod.next, - ); - if (!frontendPortAvailable) { - appConfig.ports.prod.next = await findAvailablePort({ - ...PORT_RANGE, - excludePorts: [appConfig.ports.prod.operate], - }); - } - await launchNextApp(); - } - - event.sender.send('response', 'Launching App'); - createMainWindow(); - createTray(); - splashWindow.destroy(); - } catch (e) { - logger.electron(e); - new Notification({ - title: 'Error', - body: e, - }).show(); - event.sender.send('response', e); - // app.quit(); - } -}); - -// APP-SPECIFIC EVENTS -app.on('ready', async () => { - if (platform === 'darwin') { - app.dock?.setIcon( - path.join(__dirname, 'assets/icons/splash-robot-head-dock.png'), - ); - } - createSplashWindow(); -}); - -app.on('window-all-closed', () => { - app.quit(); -}); - -app.on('before-quit', async () => { - await beforeQuit(); -}); - -// UPDATER EVENTS -macUpdater.on('update-downloaded', () => { - macUpdater.quitAndInstall(); -}); - -// PROCESS SPECIFIC EVENTS (HANDLES NON-GRACEFUL TERMINATION) -process.on('uncaughtException', (error) => { - logger.electron('Uncaught Exception:', error); - // Clean up your child processes here - beforeQuit().then(() => { - process.exit(1); // Exit with a failure code - }); -}); - -['SIGINT', 'SIGTERM'].forEach((signal) => { - process.on(signal, () => { - logger.electron(`Received ${signal}. Cleaning up...`); - beforeQuit().then(() => { - process.exit(0); - }); - }); -}); - -// OPEN PATH -ipcMain.on('open-path', (_, filePath) => { - shell.openPath(filePath); -}); - -/** - * Sanitizes logs by replacing usernames in the log data with asterisks. - * If a file path is provided, it reads the log data from the file and sanitizes it. - * If the file path does not exist, it returns null. - * If no file path is provided, it sanitizes the provided data directly. - * The sanitized log data is then written to the destination path. - * @param {Object} options - The options for sanitizing logs. - * @param {string} options.name - The name of the log file. - * @param {string} options.filePath - The file path to read the log data from. - * @param {string} options.data - The log data to sanitize if no file path is provided. - * @param {string} options.destPath - The destination path where the logs should be stored after sanitization. - * @returns {string|null} - The file path of the sanitized log data, or null if the file path does not exist. - */ -function sanitizeLogs({ - name, - filePath, - data = '', - destPath = paths.osPearlTempDir, -}) { - if (filePath && !fs.existsSync(filePath)) return null; - - const logs = filePath ? fs.readFileSync(filePath, 'utf-8') : data; - - const usernameRegex = /\/(Users|home)\/([^/]+)/g; - const sanitizedData = logs.replace(usernameRegex, '/$1/*****'); - const sanitizedLogsFilePath = path.join(destPath, name); - - if (!fs.existsSync(destPath)) fs.mkdirSync(destPath); - - fs.writeFileSync(sanitizedLogsFilePath, sanitizedData); - - return sanitizedLogsFilePath; -} - -// EXPORT LOGS -ipcMain.handle('save-logs', async (_, data) => { - sanitizeLogs({ - name: 'cli.log', - filePath: paths.cliLogFile, - }); - - sanitizeLogs({ - name: 'next.log', - filePath: paths.nextLogFile, - }); - - sanitizeLogs({ - name: 'electron.log', - filePath: paths.electronLogFile, - }); - - // OS info - const osInfo = ` - OS Type: ${os.type()} - OS Platform: ${os.platform()} - OS Arch: ${os.arch()} - OS Release: ${os.release()} - Total Memory: ${os.totalmem()} - Free Memory: ${os.freemem()} - `; - const osInfoFilePath = path.join(paths.osPearlTempDir, 'os_info.txt'); - fs.writeFileSync(osInfoFilePath, osInfo); - - // Persistent store - if (data.store) - sanitizeLogs({ - name: 'store.txt', - data: JSON.stringify(data.store, null, 2), - }); - - // Other debug data: balances, addresses, etc. - if (data.debugData) - sanitizeLogs({ - name: 'debug_data.txt', - data: JSON.stringify(data.debugData, null, 2), - }); - - // Agent logs - try { - fs.readdirSync(paths.servicesDir).map((serviceDirName) => { - const servicePath = path.join(paths.servicesDir, serviceDirName); - if (!fs.existsSync(servicePath)) return; - if (!fs.statSync(servicePath).isDirectory()) return; - - const agentLogFilePath = path.join( - servicePath, - 'deployment', - 'agent', - 'log.txt', - ); - if (!fs.existsSync(agentLogFilePath)) return; - - return sanitizeLogs({ - name: `${serviceDirName}_agent.log`, - filePath: agentLogFilePath, - }); - }); - } catch (e) { - logger.electron(e); - } - - // Create a zip archive - const zip = new AdmZip(); - fs.readdirSync(paths.osPearlTempDir).forEach((file) => { - const filePath = path.join(paths.osPearlTempDir, file); - if (!fs.existsSync(filePath)) return; - if (fs.statSync(filePath).isDirectory()) return; - - zip.addLocalFile(filePath); - }); - - // Show save dialog - const { filePath } = await dialog.showSaveDialog({ - title: 'Save Logs', - defaultPath: path.join( - os.homedir(), - `pearl_logs_${new Date(Date.now()).toISOString()}-${app.getVersion()}.zip`, - ), - filters: [{ name: 'Zip Files', extensions: ['zip'] }], - }); - - let result; - if (filePath) { - // Write the zip file to the selected path - zip.writeZip(filePath); - result = { success: true, dirPath: path.dirname(filePath) }; - } else { - result = { success: false }; - } - - // Remove temporary files - fs.existsSync(paths.osPearlTempDir) && - fs.rmSync(paths.osPearlTempDir, { - recursive: true, - force: true, - }); - - return result; -}); diff --git a/electron/ports.js b/electron/ports.js deleted file mode 100644 index d01697ca0..000000000 --- a/electron/ports.js +++ /dev/null @@ -1,79 +0,0 @@ -const net = require('net'); -const { ERROR_ADDRESS_IN_USE } = require('./constants'); - -/** - * Finds an available port within the specified range, excluding specified ports. - * @param {number} startPort - The start of the port range. - * @param {number} endPort - The end of the port range. - * @param {Array} excludePorts - An array of ports to be skipped. - * @returns {Promise} The first available port found within the range that's not excluded. - */ -function findAvailablePort({ startPort, endPort, excludePorts = [] }) { - return new Promise((resolve, reject) => { - let currentPort = startPort; - - const tryPort = (port) => { - if (excludePorts.includes(port)) { - if (currentPort < endPort) { - tryPort(++currentPort); - } else { - reject( - new Error( - `Unable to find an available port between ${startPort} and ${endPort} excluding specified ports.`, - ), - ); - } - return; - } - - const server = net.createServer(); - - server.listen(port, () => { - server.close(() => { - resolve(port); - }); - }); - - server.on('error', (err) => { - if (err.code === ERROR_ADDRESS_IN_USE && currentPort < endPort) { - // Try the next port if the current one is in use or excluded - tryPort(++currentPort); - } else { - reject( - new Error( - `Unable to find an available port between ${startPort} and ${endPort} excluding specified ports.`, - ), - ); - } - }); - }; - - tryPort(currentPort); - }); -} - -/** - * Checks if a port is available. - * @param {number} port - The port to check. - * @returns {Promise} Whether the port is available. - */ -function isPortAvailable(port) { - return new Promise((resolve) => { - const server = net.createServer(); - - server.listen(port, () => { - server.close(() => { - resolve(true); - }); - }); - - server.on('error', () => { - resolve(false); - }); - }); -} - -module.exports = { - findAvailablePort, - isPortAvailable, -}; diff --git a/electron/preload.js b/electron/preload.js deleted file mode 100644 index 2878e232e..000000000 --- a/electron/preload.js +++ /dev/null @@ -1,25 +0,0 @@ -const { contextBridge, ipcRenderer } = require('electron/renderer'); - -contextBridge.exposeInMainWorld('electronAPI', { - closeApp: () => ipcRenderer.send('close-app'), - minimizeApp: () => ipcRenderer.send('minimize-app'), - setTrayIcon: (status) => ipcRenderer.send('tray', status), - ipcRenderer: { - send: (channel, data) => ipcRenderer.send(channel, data), - on: (channel, func) => - ipcRenderer.on(channel, (event, ...args) => func(...args)), - invoke: (channel, data) => ipcRenderer.invoke(channel, data), - }, - store: { - store: () => ipcRenderer.invoke('store'), - get: (key) => ipcRenderer.invoke('store-get', key), - set: (key, value) => ipcRenderer.invoke('store-set', key, value), - delete: (key) => ipcRenderer.invoke('store-delete', key), - clear: () => ipcRenderer.invoke('store-clear'), - }, - setAppHeight: (height) => ipcRenderer.send('set-height', height), - showNotification: (title, description) => - ipcRenderer.send('show-notification', title, description), - saveLogs: (data) => ipcRenderer.invoke('save-logs', data), - openPath: (filePath) => ipcRenderer.send('open-path', filePath), -}); diff --git a/electron/processes.js b/electron/processes.js deleted file mode 100644 index e67dcaac5..000000000 --- a/electron/processes.js +++ /dev/null @@ -1,40 +0,0 @@ -const psTree = require('ps-tree'); -const { exec } = require('child_process'); - -const unixKillCommand = 'kill -9'; -const windowsKillCommand = 'taskkill /F /PID'; - -const isWindows = process.platform === 'win32'; - -function killProcesses(pid) { - return new Promise((resolve, reject) => { - psTree(pid, (err, children) => { - if (err) { - reject(err); - return; - } - - // Array of PIDs to kill, starting with the children - const pidsToKill = children.map((p) => p.PID); - pidsToKill.push(pid); // Also kill the main process - - const killCommand = isWindows ? windowsKillCommand : unixKillCommand; - const joinedCommand = pidsToKill - .map((pid) => `${killCommand} ${pid}`) - .join('; '); // Separate commands with a semicolon, so they run in sequence even if one fails. Also works on Windows. - - exec(joinedCommand, (err) => { - if ( - err?.message?.includes(isWindows ? 'not found' : 'No such process') - ) { - return; // Ignore errors for processes that are already dead - } - reject(err); - }); - - resolve(); - }); - }); -} - -module.exports = { killProcesses }; diff --git a/electron/public/broken-robot.svg b/electron/public/broken-robot.svg deleted file mode 100644 index 5f99a0375..000000000 --- a/electron/public/broken-robot.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/electron/public/happy-robot.svg b/electron/public/happy-robot.svg deleted file mode 100644 index 4ca51d1d2..000000000 --- a/electron/public/happy-robot.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/electron/public/onboarding-robot.svg b/electron/public/onboarding-robot.svg deleted file mode 100644 index c7cca155c..000000000 --- a/electron/public/onboarding-robot.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/electron/public/sad-robot.svg b/electron/public/sad-robot.svg deleted file mode 100644 index 1cc45bdc7..000000000 --- a/electron/public/sad-robot.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/electron/public/splash-robot-head.png b/electron/public/splash-robot-head.png deleted file mode 100644 index d43fb2873..000000000 Binary files a/electron/public/splash-robot-head.png and /dev/null differ diff --git a/electron/public/twitter.svg b/electron/public/twitter.svg deleted file mode 100644 index f2ddba13f..000000000 --- a/electron/public/twitter.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/electron/scripts/install_brew.sh b/electron/scripts/install_brew.sh deleted file mode 100644 index 46c41f315..000000000 --- a/electron/scripts/install_brew.sh +++ /dev/null @@ -1,1097 +0,0 @@ -# We don't need return codes for "$(command)", only stdout is needed. -# Allow `[[ -n "$(command)" ]]`, `func "$(command)"`, pipes, etc. -# shellcheck disable=SC2312 - -set -u - -abort() { - printf "%s\n" "$@" >&2 - exit 1 -} - -# Fail fast with a concise message when not using bash -# Single brackets are needed here for POSIX compatibility -# shellcheck disable=SC2292 -if [ -z "${BASH_VERSION:-}" ] -then - abort "Bash is required to interpret this script." -fi - -# Check if script is run with force-interactive mode in CI -if [[ -n "${CI-}" && -n "${INTERACTIVE-}" ]] -then - abort "Cannot run force-interactive mode in CI." -fi - -# Check if both `INTERACTIVE` and `NONINTERACTIVE` are set -# Always use single-quoted strings with `exp` expressions -# shellcheck disable=SC2016 -if [[ -n "${INTERACTIVE-}" && -n "${NONINTERACTIVE-}" ]] -then - abort 'Both `$INTERACTIVE` and `$NONINTERACTIVE` are set. Please unset at least one variable and try again.' -fi - -# Check if script is run in POSIX mode -if [[ -n "${POSIXLY_CORRECT+1}" ]] -then - abort 'Bash must not run in POSIX mode. Please unset POSIXLY_CORRECT and try again.' -fi - -usage() { - cat <${tty_bold} %s${tty_reset}\n" "$(shell_join "$@")" -} - -warn() { - printf "${tty_red}Warning${tty_reset}: %s\n" "$(chomp "$1")" >&2 -} - -# Check if script is run non-interactively (e.g. CI) -# If it is run non-interactively we should not prompt for passwords. -# Always use single-quoted strings with `exp` expressions -# shellcheck disable=SC2016 -if [[ -z "${NONINTERACTIVE-}" ]] -then - if [[ -n "${CI-}" ]] - then - warn 'Running in non-interactive mode because `$CI` is set.' - NONINTERACTIVE=1 - elif [[ ! -t 0 ]] - then - if [[ -z "${INTERACTIVE-}" ]] - then - warn 'Running in non-interactive mode because `stdin` is not a TTY.' - NONINTERACTIVE=1 - else - warn 'Running in interactive mode despite `stdin` not being a TTY because `$INTERACTIVE` is set.' - fi - fi -else - ohai 'Running in non-interactive mode because `$NONINTERACTIVE` is set.' -fi - -# USER isn't always set so provide a fall back for the installer and subprocesses. -if [[ -z "${USER-}" ]] -then - USER="$(chomp "$(id -un)")" - export USER -fi - -# First check OS. -OS="$(uname)" -if [[ "${OS}" == "Linux" ]] -then - HOMEBREW_ON_LINUX=1 -elif [[ "${OS}" == "Darwin" ]] -then - HOMEBREW_ON_MACOS=1 -else - abort "Homebrew is only supported on macOS and Linux." -fi - -# Required installation paths. To install elsewhere (which is unsupported) -# you can untar https://github.com/Homebrew/brew/tarball/master -# anywhere you like. -if [[ -n "${HOMEBREW_ON_MACOS-}" ]] -then - UNAME_MACHINE="$(/usr/bin/uname -m)" - - if [[ "${UNAME_MACHINE}" == "arm64" ]] - then - # On ARM macOS, this script installs to /opt/homebrew only - HOMEBREW_PREFIX="/opt/homebrew" - HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}" - else - # On Intel macOS, this script installs to /usr/local only - HOMEBREW_PREFIX="/usr/local" - HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew" - fi - HOMEBREW_CACHE="${HOME}/Library/Caches/Homebrew" - - STAT_PRINTF=("/usr/bin/stat" "-f") - PERMISSION_FORMAT="%A" - CHOWN=("/usr/sbin/chown") - CHGRP=("/usr/bin/chgrp") - GROUP="admin" - TOUCH=("/usr/bin/touch") - INSTALL=("/usr/bin/install" -d -o "root" -g "wheel" -m "0755") -else - UNAME_MACHINE="$(uname -m)" - - # On Linux, this script installs to /home/linuxbrew/.linuxbrew only - HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" - HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew" - HOMEBREW_CACHE="${HOME}/.cache/Homebrew" - - STAT_PRINTF=("/usr/bin/stat" "--printf") - PERMISSION_FORMAT="%a" - CHOWN=("/bin/chown") - CHGRP=("/bin/chgrp") - GROUP="$(id -gn)" - TOUCH=("/bin/touch") - INSTALL=("/usr/bin/install" -d -o "${USER}" -g "${GROUP}" -m "0755") -fi -CHMOD=("/bin/chmod") -MKDIR=("/bin/mkdir" "-p") -HOMEBREW_BREW_DEFAULT_GIT_REMOTE="https://github.com/Homebrew/brew" -HOMEBREW_CORE_DEFAULT_GIT_REMOTE="https://github.com/Homebrew/homebrew-core" - -# Use remote URLs of Homebrew repositories from environment if set. -HOMEBREW_BREW_GIT_REMOTE="${HOMEBREW_BREW_GIT_REMOTE:-"${HOMEBREW_BREW_DEFAULT_GIT_REMOTE}"}" -HOMEBREW_CORE_GIT_REMOTE="${HOMEBREW_CORE_GIT_REMOTE:-"${HOMEBREW_CORE_DEFAULT_GIT_REMOTE}"}" -# The URLs with and without the '.git' suffix are the same Git remote. Do not prompt. -if [[ "${HOMEBREW_BREW_GIT_REMOTE}" == "${HOMEBREW_BREW_DEFAULT_GIT_REMOTE}.git" ]] -then - HOMEBREW_BREW_GIT_REMOTE="${HOMEBREW_BREW_DEFAULT_GIT_REMOTE}" -fi -if [[ "${HOMEBREW_CORE_GIT_REMOTE}" == "${HOMEBREW_CORE_DEFAULT_GIT_REMOTE}.git" ]] -then - HOMEBREW_CORE_GIT_REMOTE="${HOMEBREW_CORE_DEFAULT_GIT_REMOTE}" -fi -export HOMEBREW_{BREW,CORE}_GIT_REMOTE - -# TODO: bump version when new macOS is released or announced -MACOS_NEWEST_UNSUPPORTED="15.0" -# TODO: bump version when new macOS is released -MACOS_OLDEST_SUPPORTED="12.0" - -# For Homebrew on Linux -REQUIRED_RUBY_VERSION=2.6 # https://github.com/Homebrew/brew/pull/6556 -REQUIRED_GLIBC_VERSION=2.13 # https://docs.brew.sh/Homebrew-on-Linux#requirements -REQUIRED_CURL_VERSION=7.41.0 # HOMEBREW_MINIMUM_CURL_VERSION in brew.sh in Homebrew/brew -REQUIRED_GIT_VERSION=2.7.0 # HOMEBREW_MINIMUM_GIT_VERSION in brew.sh in Homebrew/brew - -# no analytics during installation -export HOMEBREW_NO_ANALYTICS_THIS_RUN=1 -export HOMEBREW_NO_ANALYTICS_MESSAGE_OUTPUT=1 - -unset HAVE_SUDO_ACCESS # unset this from the environment - -have_sudo_access() { - if [[ ! -x "/usr/bin/sudo" ]] - then - return 1 - fi - - local -a SUDO=("/usr/bin/sudo") - if [[ -n "${SUDO_ASKPASS-}" ]] - then - SUDO+=("-A") - elif [[ -n "${NONINTERACTIVE-}" ]] - then - SUDO+=("-n") - fi - - if [[ -z "${HAVE_SUDO_ACCESS-}" ]] - then - if [[ -n "${NONINTERACTIVE-}" ]] - then - "${SUDO[@]}" -l mkdir &>/dev/null - else - "${SUDO[@]}" -v && "${SUDO[@]}" -l mkdir &>/dev/null - fi - HAVE_SUDO_ACCESS="$?" - fi - - if [[ -n "${HOMEBREW_ON_MACOS-}" ]] && [[ "${HAVE_SUDO_ACCESS}" -ne 0 ]] - then - abort "Need sudo access on macOS (e.g. the user ${USER} needs to be an Administrator)!" - fi - - return "${HAVE_SUDO_ACCESS}" -} - -execute() { - if ! "$@" - then - abort "$(printf "Failed during: %s" "$(shell_join "$@")")" - fi -} - -execute_sudo() { - local -a args=("$@") - if [[ "${EUID:-${UID}}" != "0" ]] && have_sudo_access - then - if [[ -n "${SUDO_ASKPASS-}" ]] - then - args=("-A" "${args[@]}") - fi - ohai "/usr/bin/sudo" "${args[@]}" - execute "/usr/bin/sudo" "${args[@]}" - else - ohai "${args[@]}" - execute "${args[@]}" - fi -} - -getc() { - local save_state - save_state="$(/bin/stty -g)" - /bin/stty raw -echo - IFS='' read -r -n 1 -d '' "$@" - /bin/stty "${save_state}" -} - -ring_bell() { - # Use the shell's audible bell. - if [[ -t 1 ]] - then - printf "\a" - fi -} - -wait_for_user() { - local c - echo - echo "Press ${tty_bold}RETURN${tty_reset}/${tty_bold}ENTER${tty_reset} to continue or any other key to abort:" - getc c - if ! [[ "${c}" == $'\r' || "${c}" == $'\n' ]] - then - exit 1 - fi -} - -major_minor() { - echo "${1%%.*}.$( - x="${1#*.}" - echo "${x%%.*}" - )" -} - -version_gt() { - [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -gt "${2#*.}" ]] -} -version_ge() { - [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -ge "${2#*.}" ]] -} -version_lt() { - [[ "${1%.*}" -lt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -lt "${2#*.}" ]] -} - -check_run_command_as_root() { - [[ "${EUID:-${UID}}" == "0" ]] || return - - # Allow Azure Pipelines/GitHub Actions/Docker/Concourse/Kubernetes to do everything as root (as it's normal there) - [[ -f /.dockerenv ]] && return - [[ -f /run/.containerenv ]] && return - [[ -f /proc/1/cgroup ]] && grep -E "azpl_job|actions_job|docker|garden|kubepods" -q /proc/1/cgroup && return - - abort "Don't run this as root!" -} - -should_install_command_line_tools() { - if [[ -n "${HOMEBREW_ON_LINUX-}" ]] - then - return 1 - fi - - if version_gt "${macos_version}" "10.13" - then - ! [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]] - else - ! [[ -e "/Library/Developer/CommandLineTools/usr/bin/git" ]] || - ! [[ -e "/usr/include/iconv.h" ]] - fi -} - -get_permission() { - "${STAT_PRINTF[@]}" "${PERMISSION_FORMAT}" "$1" -} - -user_only_chmod() { - [[ -d "$1" ]] && [[ "$(get_permission "$1")" != 75[0145] ]] -} - -exists_but_not_writable() { - [[ -e "$1" ]] && ! [[ -r "$1" && -w "$1" && -x "$1" ]] -} - -get_owner() { - "${STAT_PRINTF[@]}" "%u" "$1" -} - -file_not_owned() { - [[ "$(get_owner "$1")" != "$(id -u)" ]] -} - -get_group() { - "${STAT_PRINTF[@]}" "%g" "$1" -} - -file_not_grpowned() { - [[ " $(id -G "${USER}") " != *" $(get_group "$1") "* ]] -} - -# Please sync with 'test_ruby()' in 'Library/Homebrew/utils/ruby.sh' from the Homebrew/brew repository. -test_ruby() { - if [[ ! -x "$1" ]] - then - return 1 - fi - - "$1" --enable-frozen-string-literal --disable=gems,did_you_mean,rubyopt -rrubygems -e \ - "abort if Gem::Version.new(RUBY_VERSION.to_s.dup).to_s.split('.').first(2) != \ - Gem::Version.new('${REQUIRED_RUBY_VERSION}').to_s.split('.').first(2)" 2>/dev/null -} - -test_curl() { - if [[ ! -x "$1" ]] - then - return 1 - fi - - local curl_version_output curl_name_and_version - curl_version_output="$("$1" --version 2>/dev/null)" - curl_name_and_version="${curl_version_output%% (*}" - version_ge "$(major_minor "${curl_name_and_version##* }")" "$(major_minor "${REQUIRED_CURL_VERSION}")" -} - -test_git() { - if [[ ! -x "$1" ]] - then - return 1 - fi - - local git_version_output - git_version_output="$("$1" --version 2>/dev/null)" - if [[ "${git_version_output}" =~ "git version "([^ ]*).* ]] - then - version_ge "$(major_minor "${BASH_REMATCH[1]}")" "$(major_minor "${REQUIRED_GIT_VERSION}")" - else - abort "Unexpected Git version: '${git_version_output}'!" - fi -} - -# Search for the given executable in PATH (avoids a dependency on the `which` command) -which() { - # Alias to Bash built-in command `type -P` - type -P "$@" -} - -# Search PATH for the specified program that satisfies Homebrew requirements -# function which is set above -# shellcheck disable=SC2230 -find_tool() { - if [[ $# -ne 1 ]] - then - return 1 - fi - - local executable - while read -r executable - do - if [[ "${executable}" != /* ]] - then - warn "Ignoring ${executable} (relative paths don't work)" - elif "test_$1" "${executable}" - then - echo "${executable}" - break - fi - done < <(which -a "$1") -} - -no_usable_ruby() { - [[ -z "$(find_tool ruby)" ]] -} - -outdated_glibc() { - local glibc_version - glibc_version="$(ldd --version | head -n1 | grep -o '[0-9.]*$' | grep -o '^[0-9]\+\.[0-9]\+')" - version_lt "${glibc_version}" "${REQUIRED_GLIBC_VERSION}" -} - -if [[ -n "${HOMEBREW_ON_LINUX-}" ]] && no_usable_ruby && outdated_glibc -then - abort "$( - cat </dev/null -then - trap '/usr/bin/sudo -k' EXIT -fi - -# Things can fail later if `pwd` doesn't exist. -# Also sudo prints a warning message for no good reason -cd "/usr" || exit 1 - -####################################################################### script - -# shellcheck disable=SC2016 -ohai 'Checking for `sudo` access (which may request your password)...' - -if [[ -n "${HOMEBREW_ON_MACOS-}" ]] -then - [[ "${EUID:-${UID}}" == "0" ]] || have_sudo_access -elif ! [[ -w "${HOMEBREW_PREFIX}" ]] && - ! [[ -w "/home/linuxbrew" ]] && - ! [[ -w "/home" ]] && - ! have_sudo_access -then - abort "$( - cat </dev/null -then - abort "$( - cat </dev/null || return - - # we do it in four steps to avoid merge errors when reinstalling - execute "${USABLE_GIT}" "-c" "init.defaultBranch=master" "init" "--quiet" - - # "git remote add" will fail if the remote is defined in the global config - execute "${USABLE_GIT}" "config" "remote.origin.url" "${HOMEBREW_BREW_GIT_REMOTE}" - execute "${USABLE_GIT}" "config" "remote.origin.fetch" "+refs/heads/*:refs/remotes/origin/*" - - # ensure we don't munge line endings on checkout - execute "${USABLE_GIT}" "config" "--bool" "core.autocrlf" "false" - - # make sure symlinks are saved as-is - execute "${USABLE_GIT}" "config" "--bool" "core.symlinks" "true" - - execute "${USABLE_GIT}" "fetch" "--force" "origin" - execute "${USABLE_GIT}" "fetch" "--force" "--tags" "origin" - execute "${USABLE_GIT}" "remote" "set-head" "origin" "--auto" >/dev/null - - LATEST_GIT_TAG="$("${USABLE_GIT}" tag --list --sort="-version:refname" | head -n1)" - if [[ -z "${LATEST_GIT_TAG}" ]] - then - abort "Failed to query latest Homebrew/brew Git tag." - fi - execute "${USABLE_GIT}" "checkout" "--force" "-B" "stable" "${LATEST_GIT_TAG}" - - if [[ "${HOMEBREW_REPOSITORY}" != "${HOMEBREW_PREFIX}" ]] - then - if [[ "${HOMEBREW_REPOSITORY}" == "${HOMEBREW_PREFIX}/Homebrew" ]] - then - execute "ln" "-sf" "../Homebrew/bin/brew" "${HOMEBREW_PREFIX}/bin/brew" - else - abort "The Homebrew/brew repository should be placed in the Homebrew prefix directory." - fi - fi - - if [[ -n "${HOMEBREW_NO_INSTALL_FROM_API-}" && ! -d "${HOMEBREW_CORE}" ]] - then - # Always use single-quoted strings with `exp` expressions - # shellcheck disable=SC2016 - ohai 'Tapping homebrew/core because `$HOMEBREW_NO_INSTALL_FROM_API` is set.' - ( - execute "${MKDIR[@]}" "${HOMEBREW_CORE}" - cd "${HOMEBREW_CORE}" >/dev/null || return - - execute "${USABLE_GIT}" "-c" "init.defaultBranch=master" "init" "--quiet" - execute "${USABLE_GIT}" "config" "remote.origin.url" "${HOMEBREW_CORE_GIT_REMOTE}" - execute "${USABLE_GIT}" "config" "remote.origin.fetch" "+refs/heads/*:refs/remotes/origin/*" - execute "${USABLE_GIT}" "config" "--bool" "core.autocrlf" "false" - execute "${USABLE_GIT}" "config" "--bool" "core.symlinks" "true" - execute "${USABLE_GIT}" "fetch" "--force" "origin" "refs/heads/master:refs/remotes/origin/master" - execute "${USABLE_GIT}" "remote" "set-head" "origin" "--auto" >/dev/null - execute "${USABLE_GIT}" "reset" "--hard" "origin/master" - - cd "${HOMEBREW_REPOSITORY}" >/dev/null || return - ) || exit 1 - fi - - execute "${HOMEBREW_PREFIX}/bin/brew" "update" "--force" "--quiet" -) || exit 1 - -if [[ ":${PATH}:" != *":${HOMEBREW_PREFIX}/bin:"* ]] -then - warn "${HOMEBREW_PREFIX}/bin is not in your PATH. - Instructions on how to configure your shell for Homebrew - can be found in the 'Next steps' section below." -fi - -ohai "Installation successful!" -echo - -ring_bell - -# Use an extra newline and bold to avoid this being missed. -ohai "Homebrew has enabled anonymous aggregate formulae and cask analytics." -echo "$( - cat </dev/null || return - execute "${USABLE_GIT}" "config" "--replace-all" "homebrew.analyticsmessage" "true" - execute "${USABLE_GIT}" "config" "--replace-all" "homebrew.caskanalyticsmessage" "true" -) || exit 1 - -ohai "Next steps:" -case "${SHELL}" in - */bash*) - if [[ -n "${HOMEBREW_ON_LINUX-}" ]] - then - shell_rcfile="${HOME}/.bashrc" - else - shell_rcfile="${HOME}/.bash_profile" - fi - ;; - */zsh*) - if [[ -n "${HOMEBREW_ON_LINUX-}" ]] - then - shell_rcfile="${ZDOTDIR:-"${HOME}"}/.zshrc" - else - shell_rcfile="${ZDOTDIR:-"${HOME}"}/.zprofile" - fi - ;; - */fish*) - shell_rcfile="${HOME}/.config/fish/config.fish" - ;; - *) - shell_rcfile="${ENV:-"${HOME}/.profile"}" - ;; -esac - -if grep -qs "eval \"\$(${HOMEBREW_PREFIX}/bin/brew shellenv)\"" "${shell_rcfile}" -then - if ! [[ -x "$(command -v brew)" ]] - then - cat <> ${shell_rcfile} - eval "\$(${HOMEBREW_PREFIX}/bin/brew shellenv)" -EOS -fi - -if [[ -n "${non_default_repos}" ]] -then - plural="" - if [[ "${#additional_shellenv_commands[@]}" -gt 1 ]] - then - plural="s" - fi - printf -- "- Run these commands in your terminal to add the non-default Git remote%s for %s:\n" "${plural}" "${non_default_repos}" - printf " echo '# Set PATH, MANPATH, etc., for Homebrew.' >> %s\n" "${shell_rcfile}" - printf " echo '%s' >> ${shell_rcfile}\n" "${additional_shellenv_commands[@]}" - printf " %s\n" "${additional_shellenv_commands[@]}" -fi - -if [[ -n "${HOMEBREW_ON_LINUX-}" ]] -then - echo "- Install Homebrew's dependencies if you have sudo access:" - - if [[ -x "$(command -v apt-get)" ]] - then - echo " sudo apt-get install build-essential" - elif [[ -x "$(command -v yum)" ]] - then - echo " sudo yum groupinstall 'Development Tools'" - elif [[ -x "$(command -v pacman)" ]] - then - echo " sudo pacman -S base-devel" - elif [[ -x "$(command -v apk)" ]] - then - echo " sudo apk add build-base" - fi - - cat < /dev/null -apt-get update -apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \ No newline at end of file diff --git a/electron/store.js b/electron/store.js deleted file mode 100644 index 5577decff..000000000 --- a/electron/store.js +++ /dev/null @@ -1,36 +0,0 @@ -// set schema to validate store data -const defaultSchema = { - environmentName: { type: 'string', default: '' }, - isInitialFunded: { type: 'boolean', default: false }, - firstStakingRewardAchieved: { type: 'boolean', default: false }, - firstRewardNotificationShown: { type: 'boolean', default: false }, -}; - -const setupStoreIpc = async (ipcChannel, mainWindow, storeInitialValues) => { - const Store = (await import('electron-store')).default; - - // set default values for store - const schema = Object.assign({}, defaultSchema); - Object.keys(schema).forEach((key) => { - if (storeInitialValues[key] !== undefined) { - schema[key].default = storeInitialValues[key]; - } - }); - - /** @type import Store from 'electron-store' */ - const store = new Store({ schema }); - - store.onDidAnyChange((data) => { - if (mainWindow?.webContents) - mainWindow.webContents.send('store-changed', data); - }); - - // exposed to electron browser window - ipcChannel.handle('store', () => store.store); - ipcChannel.handle('store-get', (_, key) => store.get(key)); - ipcChannel.handle('store-set', (_, key, value) => store.set(key, value)); - ipcChannel.handle('store-delete', (_, key) => store.delete(key)); - ipcChannel.handle('store-clear', (_) => store.clear()); -}; - -module.exports = { setupStoreIpc }; diff --git a/electron/update.js b/electron/update.js deleted file mode 100644 index 3946655a3..000000000 --- a/electron/update.js +++ /dev/null @@ -1,16 +0,0 @@ -const { publishOptions } = require('./constants'); -const electronUpdater = require('electron-updater'); -const logger = require('./logger'); - -const macUpdater = new electronUpdater.MacUpdater({ - ...publishOptions, - channels: ['latest', 'beta', 'alpha'], // automatically update to all channels -}); - -macUpdater.setFeedURL({ ...publishOptions }); - -macUpdater.autoDownload = true; -macUpdater.autoInstallOnAppQuit = true; -macUpdater.logger = logger; - -module.exports = { macUpdater }; diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json deleted file mode 100644 index 46cd97cea..000000000 --- a/frontend/.eslintrc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:jest/recommended", - "next/core-web-vitals", - "plugin:prettier/recommended" - ], - "globals": { - "JSX": true, - "React": true - }, - "plugins": [ - "jest", - "prettier", - "unused-imports", - "simple-import-sort", - "import" - ], - "rules": { - "import/first": "error", - "import/newline-after-import": "error", - "import/no-duplicates": "error", - "simple-import-sort/imports": "error", - "simple-import-sort/exports": "error", - "unused-imports/no-unused-imports": "error", - "no-unused-vars": ["warn", { "argsIgnorePattern": "^_" }], - "no-console": ["error", { "allow": ["error"] }], - "prettier/prettier": ["error", { - "endOfLine": "auto", - "semi": true, - "singleQuote": true - }], - "react/jsx-props-no-spreading": "off", - "react/no-array-index-key": "off", - "react/react-in-jsx-scope": "off", - "react-hooks/rules-of-hooks": "error", - "react-hooks/exhaustive-deps": "warn" - } -} \ No newline at end of file diff --git a/frontend/abis/agentMech.ts b/frontend/abis/agentMech.ts deleted file mode 100644 index 9f4e71e2f..000000000 --- a/frontend/abis/agentMech.ts +++ /dev/null @@ -1,339 +0,0 @@ -export const AGENT_MECH_ABI = [ - { - inputs: [ - { internalType: 'address', name: '_token', type: 'address' }, - { internalType: 'uint256', name: '_tokenId', type: 'uint256' }, - { internalType: 'uint256', name: '_price', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { - inputs: [{ internalType: 'uint256', name: 'agentId', type: 'uint256' }], - name: 'AgentNotFound', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'provided', type: 'uint256' }, - { internalType: 'uint256', name: 'expected', type: 'uint256' }, - ], - name: 'NotEnoughPaid', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'provided', type: 'uint256' }, - { internalType: 'uint256', name: 'max', type: 'uint256' }, - ], - name: 'Overflow', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'requestId', type: 'uint256' }], - name: 'RequestIdNotFound', - type: 'error', - }, - { inputs: [], name: 'ZeroAddress', type: 'error' }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'requestId', - type: 'uint256', - }, - { indexed: false, internalType: 'bytes', name: 'data', type: 'bytes' }, - ], - name: 'Deliver', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'price', - type: 'uint256', - }, - ], - name: 'PriceUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'requestId', - type: 'uint256', - }, - { indexed: false, internalType: 'bytes', name: 'data', type: 'bytes' }, - ], - name: 'Request', - type: 'event', - }, - { - inputs: [ - { internalType: 'uint256', name: 'requestId', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - ], - name: 'deliver', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'entryPoint', - outputs: [ - { internalType: 'contract IEntryPoint', name: '', type: 'address' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - { internalType: 'uint256', name: 'txGas', type: 'uint256' }, - ], - name: 'exec', - outputs: [{ internalType: 'bytes', name: 'returnData', type: 'bytes' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'account', type: 'address' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - ], - name: 'getRequestId', - outputs: [{ internalType: 'uint256', name: 'requestId', type: 'uint256' }], - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'account', type: 'address' }], - name: 'getRequestsCount', - outputs: [ - { internalType: 'uint256', name: 'requestsCount', type: 'uint256' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: 'size', type: 'uint256' }, - { internalType: 'uint256', name: 'offset', type: 'uint256' }, - ], - name: 'getUndeliveredRequestIds', - outputs: [ - { internalType: 'uint256[]', name: 'requestIds', type: 'uint256[]' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'signer', type: 'address' }], - name: 'isOperator', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'bytes32', name: 'hash', type: 'bytes32' }, - { internalType: 'bytes', name: 'signature', type: 'bytes' }, - ], - name: 'isValidSignature', - outputs: [{ internalType: 'bytes4', name: 'magicValue', type: 'bytes4' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - ], - name: 'mapRequestIds', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'mapRequestsCounts', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'nonce', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'numUndeliveredRequests', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'uint256[]', name: '', type: 'uint256[]' }, - { internalType: 'uint256[]', name: '', type: 'uint256[]' }, - { internalType: 'bytes', name: '', type: 'bytes' }, - ], - name: 'onERC1155BatchReceived', - outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'bytes', name: '', type: 'bytes' }, - ], - name: 'onERC1155Received', - outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'bytes', name: '', type: 'bytes' }, - ], - name: 'onERC721Received', - outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [], - name: 'price', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'bytes', name: 'data', type: 'bytes' }], - name: 'request', - outputs: [{ internalType: 'uint256', name: 'requestId', type: 'uint256' }], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'newPrice', type: 'uint256' }], - name: 'setPrice', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'bytes', name: 'initParams', type: 'bytes' }], - name: 'setUp', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'token', - outputs: [{ internalType: 'contract IERC721', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'tokenId', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'bytes', name: '', type: 'bytes' }, - { internalType: 'bytes', name: '', type: 'bytes' }, - ], - name: 'tokensReceived', - outputs: [], - stateMutability: 'pure', - type: 'function', - }, - { - inputs: [ - { - components: [ - { internalType: 'address', name: 'sender', type: 'address' }, - { internalType: 'uint256', name: 'nonce', type: 'uint256' }, - { internalType: 'bytes', name: 'initCode', type: 'bytes' }, - { internalType: 'bytes', name: 'callData', type: 'bytes' }, - { internalType: 'uint256', name: 'callGasLimit', type: 'uint256' }, - { - internalType: 'uint256', - name: 'verificationGasLimit', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'preVerificationGas', - type: 'uint256', - }, - { internalType: 'uint256', name: 'maxFeePerGas', type: 'uint256' }, - { - internalType: 'uint256', - name: 'maxPriorityFeePerGas', - type: 'uint256', - }, - { internalType: 'bytes', name: 'paymasterAndData', type: 'bytes' }, - { internalType: 'bytes', name: 'signature', type: 'bytes' }, - ], - internalType: 'struct UserOperation', - name: 'userOp', - type: 'tuple', - }, - { internalType: 'bytes32', name: 'userOpHash', type: 'bytes32' }, - { internalType: 'uint256', name: 'missingAccountFunds', type: 'uint256' }, - ], - name: 'validateUserOp', - outputs: [ - { internalType: 'uint256', name: 'validationData', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { stateMutability: 'payable', type: 'receive' }, -]; diff --git a/frontend/abis/erc20.ts b/frontend/abis/erc20.ts deleted file mode 100644 index e581ffc4f..000000000 --- a/frontend/abis/erc20.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const ERC20_BALANCEOF_FRAGMENT = [ - 'function balanceOf(address owner) view returns (uint256)', -]; diff --git a/frontend/abis/gnosisSafe.ts b/frontend/abis/gnosisSafe.ts deleted file mode 100644 index cd4d7a454..000000000 --- a/frontend/abis/gnosisSafe.ts +++ /dev/null @@ -1,573 +0,0 @@ -export const GNOSIS_SAFE_ABI = [ - { inputs: [], stateMutability: 'nonpayable', type: 'constructor' }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'AddedOwner', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'bytes32', - name: 'approvedHash', - type: 'bytes32', - }, - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'ApproveHash', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'address', - name: 'handler', - type: 'address', - }, - ], - name: 'ChangedFallbackHandler', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'address', - name: 'guard', - type: 'address', - }, - ], - name: 'ChangedGuard', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'threshold', - type: 'uint256', - }, - ], - name: 'ChangedThreshold', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'address', - name: 'module', - type: 'address', - }, - ], - name: 'DisabledModule', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'address', - name: 'module', - type: 'address', - }, - ], - name: 'EnabledModule', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'bytes32', - name: 'txHash', - type: 'bytes32', - }, - { - indexed: false, - internalType: 'uint256', - name: 'payment', - type: 'uint256', - }, - ], - name: 'ExecutionFailure', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'module', - type: 'address', - }, - ], - name: 'ExecutionFromModuleFailure', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'module', - type: 'address', - }, - ], - name: 'ExecutionFromModuleSuccess', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'bytes32', - name: 'txHash', - type: 'bytes32', - }, - { - indexed: false, - internalType: 'uint256', - name: 'payment', - type: 'uint256', - }, - ], - name: 'ExecutionSuccess', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'RemovedOwner', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'value', - type: 'uint256', - }, - ], - name: 'SafeReceived', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'initiator', - type: 'address', - }, - { - indexed: false, - internalType: 'address[]', - name: 'owners', - type: 'address[]', - }, - { - indexed: false, - internalType: 'uint256', - name: 'threshold', - type: 'uint256', - }, - { - indexed: false, - internalType: 'address', - name: 'initializer', - type: 'address', - }, - { - indexed: false, - internalType: 'address', - name: 'fallbackHandler', - type: 'address', - }, - ], - name: 'SafeSetup', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'bytes32', - name: 'msgHash', - type: 'bytes32', - }, - ], - name: 'SignMsg', - type: 'event', - }, - { stateMutability: 'nonpayable', type: 'fallback' }, - { - inputs: [], - name: 'VERSION', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'owner', type: 'address' }, - { internalType: 'uint256', name: '_threshold', type: 'uint256' }, - ], - name: 'addOwnerWithThreshold', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'bytes32', name: 'hashToApprove', type: 'bytes32' }, - ], - name: 'approveHash', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'bytes32', name: '', type: 'bytes32' }, - ], - name: 'approvedHashes', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '_threshold', type: 'uint256' }], - name: 'changeThreshold', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'bytes32', name: 'dataHash', type: 'bytes32' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'bytes', name: 'signatures', type: 'bytes' }, - { internalType: 'uint256', name: 'requiredSignatures', type: 'uint256' }, - ], - name: 'checkNSignatures', - outputs: [], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'bytes32', name: 'dataHash', type: 'bytes32' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'bytes', name: 'signatures', type: 'bytes' }, - ], - name: 'checkSignatures', - outputs: [], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'prevModule', type: 'address' }, - { internalType: 'address', name: 'module', type: 'address' }, - ], - name: 'disableModule', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'domainSeparator', - outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'module', type: 'address' }], - name: 'enableModule', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - { internalType: 'uint256', name: 'safeTxGas', type: 'uint256' }, - { internalType: 'uint256', name: 'baseGas', type: 'uint256' }, - { internalType: 'uint256', name: 'gasPrice', type: 'uint256' }, - { internalType: 'address', name: 'gasToken', type: 'address' }, - { internalType: 'address', name: 'refundReceiver', type: 'address' }, - { internalType: 'uint256', name: '_nonce', type: 'uint256' }, - ], - name: 'encodeTransactionData', - outputs: [{ internalType: 'bytes', name: '', type: 'bytes' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - { internalType: 'uint256', name: 'safeTxGas', type: 'uint256' }, - { internalType: 'uint256', name: 'baseGas', type: 'uint256' }, - { internalType: 'uint256', name: 'gasPrice', type: 'uint256' }, - { internalType: 'address', name: 'gasToken', type: 'address' }, - { - internalType: 'address payable', - name: 'refundReceiver', - type: 'address', - }, - { internalType: 'bytes', name: 'signatures', type: 'bytes' }, - ], - name: 'execTransaction', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - ], - name: 'execTransactionFromModule', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - ], - name: 'execTransactionFromModuleReturnData', - outputs: [ - { internalType: 'bool', name: 'success', type: 'bool' }, - { internalType: 'bytes', name: 'returnData', type: 'bytes' }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'getChainId', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'start', type: 'address' }, - { internalType: 'uint256', name: 'pageSize', type: 'uint256' }, - ], - name: 'getModulesPaginated', - outputs: [ - { internalType: 'address[]', name: 'array', type: 'address[]' }, - { internalType: 'address', name: 'next', type: 'address' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getOwners', - outputs: [{ internalType: 'address[]', name: '', type: 'address[]' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: 'offset', type: 'uint256' }, - { internalType: 'uint256', name: 'length', type: 'uint256' }, - ], - name: 'getStorageAt', - outputs: [{ internalType: 'bytes', name: '', type: 'bytes' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getThreshold', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - { internalType: 'uint256', name: 'safeTxGas', type: 'uint256' }, - { internalType: 'uint256', name: 'baseGas', type: 'uint256' }, - { internalType: 'uint256', name: 'gasPrice', type: 'uint256' }, - { internalType: 'address', name: 'gasToken', type: 'address' }, - { internalType: 'address', name: 'refundReceiver', type: 'address' }, - { internalType: 'uint256', name: '_nonce', type: 'uint256' }, - ], - name: 'getTransactionHash', - outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'module', type: 'address' }], - name: 'isModuleEnabled', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'owner', type: 'address' }], - name: 'isOwner', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'nonce', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'prevOwner', type: 'address' }, - { internalType: 'address', name: 'owner', type: 'address' }, - { internalType: 'uint256', name: '_threshold', type: 'uint256' }, - ], - name: 'removeOwner', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'enum Enum.Operation', name: 'operation', type: 'uint8' }, - ], - name: 'requiredTxGas', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'handler', type: 'address' }], - name: 'setFallbackHandler', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'guard', type: 'address' }], - name: 'setGuard', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address[]', name: '_owners', type: 'address[]' }, - { internalType: 'uint256', name: '_threshold', type: 'uint256' }, - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - { internalType: 'address', name: 'fallbackHandler', type: 'address' }, - { internalType: 'address', name: 'paymentToken', type: 'address' }, - { internalType: 'uint256', name: 'payment', type: 'uint256' }, - { - internalType: 'address payable', - name: 'paymentReceiver', - type: 'address', - }, - ], - name: 'setup', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], - name: 'signedMessages', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'targetContract', type: 'address' }, - { internalType: 'bytes', name: 'calldataPayload', type: 'bytes' }, - ], - name: 'simulateAndRevert', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'prevOwner', type: 'address' }, - { internalType: 'address', name: 'oldOwner', type: 'address' }, - { internalType: 'address', name: 'newOwner', type: 'address' }, - ], - name: 'swapOwner', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { stateMutability: 'payable', type: 'receive' }, -]; diff --git a/frontend/abis/mechActivityChecker.ts b/frontend/abis/mechActivityChecker.ts deleted file mode 100644 index 125ee5ed6..000000000 --- a/frontend/abis/mechActivityChecker.ts +++ /dev/null @@ -1,44 +0,0 @@ -export const MECH_ACTIVITY_CHECKER_ABI = [ - { - inputs: [ - { internalType: 'address', name: '_agentMech', type: 'address' }, - { internalType: 'uint256', name: '_livenessRatio', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { inputs: [], name: 'ZeroMechAgentAddress', type: 'error' }, - { inputs: [], name: 'ZeroValue', type: 'error' }, - { - inputs: [], - name: 'agentMech', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'multisig', type: 'address' }], - name: 'getMultisigNonces', - outputs: [{ internalType: 'uint256[]', name: 'nonces', type: 'uint256[]' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256[]', name: 'curNonces', type: 'uint256[]' }, - { internalType: 'uint256[]', name: 'lastNonces', type: 'uint256[]' }, - { internalType: 'uint256', name: 'ts', type: 'uint256' }, - ], - name: 'isRatioPass', - outputs: [{ internalType: 'bool', name: 'ratioPass', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'livenessRatio', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, -]; diff --git a/frontend/abis/multicall3.ts b/frontend/abis/multicall3.ts deleted file mode 100644 index 36a756aae..000000000 --- a/frontend/abis/multicall3.ts +++ /dev/null @@ -1,440 +0,0 @@ -export const MULTICALL3_ABI = [ - { - inputs: [ - { - components: [ - { - internalType: 'address', - name: 'target', - type: 'address', - }, - { - internalType: 'bytes', - name: 'callData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Call[]', - name: 'calls', - type: 'tuple[]', - }, - ], - name: 'aggregate', - outputs: [ - { - internalType: 'uint256', - name: 'blockNumber', - type: 'uint256', - }, - { - internalType: 'bytes[]', - name: 'returnData', - type: 'bytes[]', - }, - ], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { - components: [ - { - internalType: 'address', - name: 'target', - type: 'address', - }, - { - internalType: 'bool', - name: 'allowFailure', - type: 'bool', - }, - { - internalType: 'bytes', - name: 'callData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Call3[]', - name: 'calls', - type: 'tuple[]', - }, - ], - name: 'aggregate3', - outputs: [ - { - components: [ - { - internalType: 'bool', - name: 'success', - type: 'bool', - }, - { - internalType: 'bytes', - name: 'returnData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Result[]', - name: 'returnData', - type: 'tuple[]', - }, - ], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { - components: [ - { - internalType: 'address', - name: 'target', - type: 'address', - }, - { - internalType: 'bool', - name: 'allowFailure', - type: 'bool', - }, - { - internalType: 'uint256', - name: 'value', - type: 'uint256', - }, - { - internalType: 'bytes', - name: 'callData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Call3Value[]', - name: 'calls', - type: 'tuple[]', - }, - ], - name: 'aggregate3Value', - outputs: [ - { - components: [ - { - internalType: 'bool', - name: 'success', - type: 'bool', - }, - { - internalType: 'bytes', - name: 'returnData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Result[]', - name: 'returnData', - type: 'tuple[]', - }, - ], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { - components: [ - { - internalType: 'address', - name: 'target', - type: 'address', - }, - { - internalType: 'bytes', - name: 'callData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Call[]', - name: 'calls', - type: 'tuple[]', - }, - ], - name: 'blockAndAggregate', - outputs: [ - { - internalType: 'uint256', - name: 'blockNumber', - type: 'uint256', - }, - { - internalType: 'bytes32', - name: 'blockHash', - type: 'bytes32', - }, - { - components: [ - { - internalType: 'bool', - name: 'success', - type: 'bool', - }, - { - internalType: 'bytes', - name: 'returnData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Result[]', - name: 'returnData', - type: 'tuple[]', - }, - ], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [], - name: 'getBasefee', - outputs: [ - { - internalType: 'uint256', - name: 'basefee', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'blockNumber', - type: 'uint256', - }, - ], - name: 'getBlockHash', - outputs: [ - { - internalType: 'bytes32', - name: 'blockHash', - type: 'bytes32', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getBlockNumber', - outputs: [ - { - internalType: 'uint256', - name: 'blockNumber', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getChainId', - outputs: [ - { - internalType: 'uint256', - name: 'chainid', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getCurrentBlockCoinbase', - outputs: [ - { - internalType: 'address', - name: 'coinbase', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getCurrentBlockDifficulty', - outputs: [ - { - internalType: 'uint256', - name: 'difficulty', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getCurrentBlockGasLimit', - outputs: [ - { - internalType: 'uint256', - name: 'gaslimit', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getCurrentBlockTimestamp', - outputs: [ - { - internalType: 'uint256', - name: 'timestamp', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'addr', - type: 'address', - }, - ], - name: 'getEthBalance', - outputs: [ - { - internalType: 'uint256', - name: 'balance', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getLastBlockHash', - outputs: [ - { - internalType: 'bytes32', - name: 'blockHash', - type: 'bytes32', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'bool', - name: 'requireSuccess', - type: 'bool', - }, - { - components: [ - { - internalType: 'address', - name: 'target', - type: 'address', - }, - { - internalType: 'bytes', - name: 'callData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Call[]', - name: 'calls', - type: 'tuple[]', - }, - ], - name: 'tryAggregate', - outputs: [ - { - components: [ - { - internalType: 'bool', - name: 'success', - type: 'bool', - }, - { - internalType: 'bytes', - name: 'returnData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Result[]', - name: 'returnData', - type: 'tuple[]', - }, - ], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'bool', - name: 'requireSuccess', - type: 'bool', - }, - { - components: [ - { - internalType: 'address', - name: 'target', - type: 'address', - }, - { - internalType: 'bytes', - name: 'callData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Call[]', - name: 'calls', - type: 'tuple[]', - }, - ], - name: 'tryBlockAndAggregate', - outputs: [ - { - internalType: 'uint256', - name: 'blockNumber', - type: 'uint256', - }, - { - internalType: 'bytes32', - name: 'blockHash', - type: 'bytes32', - }, - { - components: [ - { - internalType: 'bool', - name: 'success', - type: 'bool', - }, - { - internalType: 'bytes', - name: 'returnData', - type: 'bytes', - }, - ], - internalType: 'struct Multicall3.Result[]', - name: 'returnData', - type: 'tuple[]', - }, - ], - stateMutability: 'payable', - type: 'function', - }, -]; diff --git a/frontend/abis/serviceRegistryL2.ts b/frontend/abis/serviceRegistryL2.ts deleted file mode 100644 index b9465e7fe..000000000 --- a/frontend/abis/serviceRegistryL2.ts +++ /dev/null @@ -1,1009 +0,0 @@ -export const SERVICE_REGISTRY_L2_ABI = [ - { - inputs: [ - { internalType: 'string', name: '_name', type: 'string' }, - { internalType: 'string', name: '_symbol', type: 'string' }, - { internalType: 'string', name: '_baseURI', type: 'string' }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { - inputs: [{ internalType: 'address', name: 'operator', type: 'address' }], - name: 'AgentInstanceRegistered', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'AgentInstancesSlotsFilled', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'agentId', type: 'uint256' }], - name: 'AgentNotFound', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'agentId', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'AgentNotInService', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'componentId', type: 'uint256' }], - name: 'ComponentNotFound', - type: 'error', - }, - { inputs: [], name: 'HashExists', type: 'error' }, - { - inputs: [ - { internalType: 'uint256', name: 'sent', type: 'uint256' }, - { internalType: 'uint256', name: 'expected', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'IncorrectAgentBondingValue', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'sent', type: 'uint256' }, - { internalType: 'uint256', name: 'expected', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'IncorrectRegistrationDepositValue', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'sender', type: 'address' }, - { internalType: 'address', name: 'manager', type: 'address' }, - ], - name: 'ManagerOnly', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'provided', type: 'address' }, - { internalType: 'address', name: 'expected', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'OnlyOwnServiceMultisig', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'OperatorHasNoInstances', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'provided', type: 'uint256' }, - { internalType: 'uint256', name: 'max', type: 'uint256' }, - ], - name: 'Overflow', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'sender', type: 'address' }, - { internalType: 'address', name: 'owner', type: 'address' }, - ], - name: 'OwnerOnly', - type: 'error', - }, - { inputs: [], name: 'Paused', type: 'error' }, - { inputs: [], name: 'ReentrancyGuard', type: 'error' }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'ServiceMustBeInactive', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'token', type: 'address' }, - { internalType: 'address', name: 'from', type: 'address' }, - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - ], - name: 'TransferFailed', - type: 'error', - }, - { - inputs: [{ internalType: 'address', name: 'multisig', type: 'address' }], - name: 'UnauthorizedMultisig', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'agentId', type: 'uint256' }], - name: 'WrongAgentId', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'numValues1', type: 'uint256' }, - { internalType: 'uint256', name: 'numValues2', type: 'uint256' }, - ], - name: 'WrongArrayLength', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'WrongOperator', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'state', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'WrongServiceState', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'currentThreshold', type: 'uint256' }, - { internalType: 'uint256', name: 'minThreshold', type: 'uint256' }, - { internalType: 'uint256', name: 'maxThreshold', type: 'uint256' }, - ], - name: 'WrongThreshold', - type: 'error', - }, - { inputs: [], name: 'ZeroAddress', type: 'error' }, - { inputs: [], name: 'ZeroValue', type: 'error' }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'ActivateRegistration', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'spender', - type: 'address', - }, - { indexed: true, internalType: 'uint256', name: 'id', type: 'uint256' }, - ], - name: 'Approval', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'operator', - type: 'address', - }, - { indexed: false, internalType: 'bool', name: 'approved', type: 'bool' }, - ], - name: 'ApprovalForAll', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'string', - name: 'baseURI', - type: 'string', - }, - ], - name: 'BaseURIChanged', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'multisig', - type: 'address', - }, - ], - name: 'CreateMultisigWithAgents', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: false, - internalType: 'bytes32', - name: 'configHash', - type: 'bytes32', - }, - ], - name: 'CreateService', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'DeployService', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'Deposit', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'drainer', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'Drain', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'drainer', - type: 'address', - }, - ], - name: 'DrainerUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'manager', - type: 'address', - }, - ], - name: 'ManagerUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'operator', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'OperatorSlashed', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'operator', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'OperatorUnbond', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'OwnerUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'receiver', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'Refund', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'operator', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'agentInstance', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'agentId', - type: 'uint256', - }, - ], - name: 'RegisterInstance', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'TerminateService', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { indexed: true, internalType: 'address', name: 'from', type: 'address' }, - { indexed: true, internalType: 'address', name: 'to', type: 'address' }, - { indexed: true, internalType: 'uint256', name: 'id', type: 'uint256' }, - ], - name: 'Transfer', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: false, - internalType: 'bytes32', - name: 'configHash', - type: 'bytes32', - }, - ], - name: 'UpdateService', - type: 'event', - }, - { - inputs: [], - name: 'CID_PREFIX', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'VERSION', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'serviceOwner', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'activateRegistration', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'spender', type: 'address' }, - { internalType: 'uint256', name: 'id', type: 'uint256' }, - ], - name: 'approve', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'owner', type: 'address' }], - name: 'balanceOf', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'baseURI', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'newDrainer', type: 'address' }], - name: 'changeDrainer', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'newManager', type: 'address' }], - name: 'changeManager', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'multisig', type: 'address' }, - { internalType: 'bool', name: 'permission', type: 'bool' }, - ], - name: 'changeMultisigPermission', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }], - name: 'changeOwner', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'serviceOwner', type: 'address' }, - { internalType: 'bytes32', name: 'configHash', type: 'bytes32' }, - { internalType: 'uint32[]', name: 'agentIds', type: 'uint32[]' }, - { - components: [ - { internalType: 'uint32', name: 'slots', type: 'uint32' }, - { internalType: 'uint96', name: 'bond', type: 'uint96' }, - ], - internalType: 'struct AgentParams[]', - name: 'agentParams', - type: 'tuple[]', - }, - { internalType: 'uint32', name: 'threshold', type: 'uint32' }, - ], - name: 'create', - outputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'serviceOwner', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - { - internalType: 'address', - name: 'multisigImplementation', - type: 'address', - }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - ], - name: 'deploy', - outputs: [{ internalType: 'address', name: 'multisig', type: 'address' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'drain', - outputs: [{ internalType: 'uint256', name: 'amount', type: 'uint256' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'drainer', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'unitId', type: 'uint256' }], - name: 'exists', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'getAgentInstances', - outputs: [ - { internalType: 'uint256', name: 'numAgentInstances', type: 'uint256' }, - { internalType: 'address[]', name: 'agentInstances', type: 'address[]' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'getAgentParams', - outputs: [ - { internalType: 'uint256', name: 'numAgentIds', type: 'uint256' }, - { - components: [ - { internalType: 'uint32', name: 'slots', type: 'uint32' }, - { internalType: 'uint96', name: 'bond', type: 'uint96' }, - ], - internalType: 'struct AgentParams[]', - name: 'agentParams', - type: 'tuple[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'getApproved', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - { internalType: 'uint256', name: 'agentId', type: 'uint256' }, - ], - name: 'getInstancesForAgentId', - outputs: [ - { internalType: 'uint256', name: 'numAgentInstances', type: 'uint256' }, - { internalType: 'address[]', name: 'agentInstances', type: 'address[]' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'getOperatorBalance', - outputs: [{ internalType: 'uint256', name: 'balance', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'getPreviousHashes', - outputs: [ - { internalType: 'uint256', name: 'numHashes', type: 'uint256' }, - { internalType: 'bytes32[]', name: 'configHashes', type: 'bytes32[]' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'getService', - outputs: [ - { - components: [ - { internalType: 'uint96', name: 'securityDeposit', type: 'uint96' }, - { internalType: 'address', name: 'multisig', type: 'address' }, - { internalType: 'bytes32', name: 'configHash', type: 'bytes32' }, - { internalType: 'uint32', name: 'threshold', type: 'uint32' }, - { - internalType: 'uint32', - name: 'maxNumAgentInstances', - type: 'uint32', - }, - { internalType: 'uint32', name: 'numAgentInstances', type: 'uint32' }, - { - internalType: 'enum ServiceRegistryL2.ServiceState', - name: 'state', - type: 'uint8', - }, - { internalType: 'uint32[]', name: 'agentIds', type: 'uint32[]' }, - ], - internalType: 'struct ServiceRegistryL2.Service', - name: 'service', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: '', type: 'address' }, - { internalType: 'address', name: '', type: 'address' }, - ], - name: 'isApprovedForAll', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'manager', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'mapAgentInstanceOperators', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - ], - name: 'mapConfigHashes', - outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'mapMultisigs', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - ], - name: 'mapOperatorAndServiceIdAgentInstances', - outputs: [ - { internalType: 'address', name: 'instance', type: 'address' }, - { internalType: 'uint32', name: 'agentId', type: 'uint32' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'mapOperatorAndServiceIdOperatorBalances', - outputs: [{ internalType: 'uint96', name: '', type: 'uint96' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: '', type: 'uint256' }, - { internalType: 'uint256', name: '', type: 'uint256' }, - ], - name: 'mapServiceAndAgentIdAgentInstances', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'mapServiceAndAgentIdAgentParams', - outputs: [ - { internalType: 'uint32', name: 'slots', type: 'uint32' }, - { internalType: 'uint96', name: 'bond', type: 'uint96' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'mapServices', - outputs: [ - { internalType: 'uint96', name: 'securityDeposit', type: 'uint96' }, - { internalType: 'address', name: 'multisig', type: 'address' }, - { internalType: 'bytes32', name: 'configHash', type: 'bytes32' }, - { internalType: 'uint32', name: 'threshold', type: 'uint32' }, - { internalType: 'uint32', name: 'maxNumAgentInstances', type: 'uint32' }, - { internalType: 'uint32', name: 'numAgentInstances', type: 'uint32' }, - { - internalType: 'enum ServiceRegistryL2.ServiceState', - name: 'state', - type: 'uint8', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'name', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'owner', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'id', type: 'uint256' }], - name: 'ownerOf', - outputs: [{ internalType: 'address', name: 'owner', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - { internalType: 'address[]', name: 'agentInstances', type: 'address[]' }, - { internalType: 'uint32[]', name: 'agentIds', type: 'uint32[]' }, - ], - name: 'registerAgents', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'payable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'from', type: 'address' }, - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'id', type: 'uint256' }, - ], - name: 'safeTransferFrom', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'from', type: 'address' }, - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'id', type: 'uint256' }, - { internalType: 'bytes', name: 'data', type: 'bytes' }, - ], - name: 'safeTransferFrom', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'bool', name: 'approved', type: 'bool' }, - ], - name: 'setApprovalForAll', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'string', name: 'bURI', type: 'string' }], - name: 'setBaseURI', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address[]', name: 'agentInstances', type: 'address[]' }, - { internalType: 'uint96[]', name: 'amounts', type: 'uint96[]' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'slash', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'slashedFunds', - outputs: [{ internalType: 'uint96', name: '', type: 'uint96' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'bytes4', name: 'interfaceId', type: 'bytes4' }], - name: 'supportsInterface', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'symbol', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'serviceOwner', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'terminate', - outputs: [ - { internalType: 'bool', name: 'success', type: 'bool' }, - { internalType: 'uint256', name: 'refund', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'id', type: 'uint256' }], - name: 'tokenByIndex', - outputs: [{ internalType: 'uint256', name: 'unitId', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'unitId', type: 'uint256' }], - name: 'tokenURI', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'totalSupply', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'from', type: 'address' }, - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'id', type: 'uint256' }, - ], - name: 'transferFrom', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'unbond', - outputs: [ - { internalType: 'bool', name: 'success', type: 'bool' }, - { internalType: 'uint256', name: 'refund', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'serviceOwner', type: 'address' }, - { internalType: 'bytes32', name: 'configHash', type: 'bytes32' }, - { internalType: 'uint32[]', name: 'agentIds', type: 'uint32[]' }, - { - components: [ - { internalType: 'uint32', name: 'slots', type: 'uint32' }, - { internalType: 'uint96', name: 'bond', type: 'uint96' }, - ], - internalType: 'struct AgentParams[]', - name: 'agentParams', - type: 'tuple[]', - }, - { internalType: 'uint32', name: 'threshold', type: 'uint32' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'update', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, -]; diff --git a/frontend/abis/serviceRegistryTokenUtility.ts b/frontend/abis/serviceRegistryTokenUtility.ts deleted file mode 100644 index be730e53c..000000000 --- a/frontend/abis/serviceRegistryTokenUtility.ts +++ /dev/null @@ -1,481 +0,0 @@ -export const SERVICE_REGISTRY_TOKEN_UTILITY_ABI = [ - { - inputs: [ - { internalType: 'address', name: '_serviceRegistry', type: 'address' }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { - inputs: [{ internalType: 'address', name: 'operator', type: 'address' }], - name: 'AgentInstanceRegistered', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'AgentInstancesSlotsFilled', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'agentId', type: 'uint256' }], - name: 'AgentNotFound', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'agentId', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'AgentNotInService', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'componentId', type: 'uint256' }], - name: 'ComponentNotFound', - type: 'error', - }, - { inputs: [], name: 'HashExists', type: 'error' }, - { - inputs: [ - { internalType: 'uint256', name: 'sent', type: 'uint256' }, - { internalType: 'uint256', name: 'expected', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'IncorrectAgentBondingValue', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'sent', type: 'uint256' }, - { internalType: 'uint256', name: 'expected', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'IncorrectRegistrationDepositValue', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'sender', type: 'address' }, - { internalType: 'address', name: 'manager', type: 'address' }, - ], - name: 'ManagerOnly', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'provided', type: 'address' }, - { internalType: 'address', name: 'expected', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'OnlyOwnServiceMultisig', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'OperatorHasNoInstances', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'provided', type: 'uint256' }, - { internalType: 'uint256', name: 'max', type: 'uint256' }, - ], - name: 'Overflow', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'sender', type: 'address' }, - { internalType: 'address', name: 'owner', type: 'address' }, - ], - name: 'OwnerOnly', - type: 'error', - }, - { inputs: [], name: 'Paused', type: 'error' }, - { inputs: [], name: 'ReentrancyGuard', type: 'error' }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'ServiceMustBeInactive', - type: 'error', - }, - { - inputs: [{ internalType: 'address', name: 'token', type: 'address' }], - name: 'TokenRejected', - type: 'error', - }, - { - inputs: [ - { internalType: 'address', name: 'token', type: 'address' }, - { internalType: 'address', name: 'from', type: 'address' }, - { internalType: 'address', name: 'to', type: 'address' }, - { internalType: 'uint256', name: 'value', type: 'uint256' }, - ], - name: 'TransferFailed', - type: 'error', - }, - { - inputs: [{ internalType: 'address', name: 'multisig', type: 'address' }], - name: 'UnauthorizedMultisig', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'agentId', type: 'uint256' }], - name: 'WrongAgentId', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'numValues1', type: 'uint256' }, - { internalType: 'uint256', name: 'numValues2', type: 'uint256' }, - ], - name: 'WrongArrayLength', - type: 'error', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'WrongOperator', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'state', type: 'uint256' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'WrongServiceState', - type: 'error', - }, - { - inputs: [ - { internalType: 'uint256', name: 'currentThreshold', type: 'uint256' }, - { internalType: 'uint256', name: 'minThreshold', type: 'uint256' }, - { internalType: 'uint256', name: 'maxThreshold', type: 'uint256' }, - ], - name: 'WrongThreshold', - type: 'error', - }, - { inputs: [], name: 'ZeroAddress', type: 'error' }, - { inputs: [], name: 'ZeroValue', type: 'error' }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'drainer', - type: 'address', - }, - ], - name: 'DrainerUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'manager', - type: 'address', - }, - ], - name: 'ManagerUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'operator', - type: 'address', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'OperatorTokenSlashed', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'OwnerUpdated', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'account', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'token', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'TokenDeposit', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'drainer', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'token', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'TokenDrain', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'account', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'token', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'TokenRefund', - type: 'event', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'activateRegistrationTokenDeposit', - outputs: [{ internalType: 'bool', name: 'isTokenSecured', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'newDrainer', type: 'address' }], - name: 'changeDrainer', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'newManager', type: 'address' }], - name: 'changeManager', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'newOwner', type: 'address' }], - name: 'changeOwner', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - { internalType: 'address', name: 'token', type: 'address' }, - { internalType: 'uint32[]', name: 'agentIds', type: 'uint32[]' }, - { internalType: 'uint256[]', name: 'bonds', type: 'uint256[]' }, - ], - name: 'createWithToken', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: 'token', type: 'address' }], - name: 'drain', - outputs: [{ internalType: 'uint256', name: 'amount', type: 'uint256' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'drainer', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - { internalType: 'uint256', name: 'agentId', type: 'uint256' }, - ], - name: 'getAgentBond', - outputs: [{ internalType: 'uint256', name: 'bond', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'getOperatorBalance', - outputs: [{ internalType: 'uint256', name: 'balance', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'isTokenSecuredService', - outputs: [{ internalType: 'bool', name: '', type: 'bool' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'manager', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'mapOperatorAndServiceIdOperatorBalances', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'mapServiceAndAgentIdAgentBond', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - name: 'mapServiceIdTokenDeposit', - outputs: [ - { internalType: 'address', name: 'token', type: 'address' }, - { internalType: 'uint96', name: 'securityDeposit', type: 'uint96' }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [{ internalType: 'address', name: '', type: 'address' }], - name: 'mapSlashedFunds', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'owner', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - { internalType: 'uint32[]', name: 'agentIds', type: 'uint32[]' }, - ], - name: 'registerAgentsTokenDeposit', - outputs: [{ internalType: 'bool', name: 'isTokenSecured', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'resetServiceToken', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'serviceRegistry', - outputs: [{ internalType: 'address', name: '', type: 'address' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'address[]', name: 'agentInstances', type: 'address[]' }, - { internalType: 'uint256[]', name: 'amounts', type: 'uint256[]' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'slash', - outputs: [{ internalType: 'bool', name: 'success', type: 'bool' }], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [{ internalType: 'uint256', name: 'serviceId', type: 'uint256' }], - name: 'terminateTokenRefund', - outputs: [ - { internalType: 'uint256', name: 'securityRefund', type: 'uint256' }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { internalType: 'address', name: 'operator', type: 'address' }, - { internalType: 'uint256', name: 'serviceId', type: 'uint256' }, - ], - name: 'unbondTokenRefund', - outputs: [{ internalType: 'uint256', name: 'refund', type: 'uint256' }], - stateMutability: 'nonpayable', - type: 'function', - }, -]; diff --git a/frontend/abis/serviceStakingTokenMechUsage.ts b/frontend/abis/serviceStakingTokenMechUsage.ts deleted file mode 100644 index 0f1a270da..000000000 --- a/frontend/abis/serviceStakingTokenMechUsage.ts +++ /dev/null @@ -1,1265 +0,0 @@ -export const SERVICE_STAKING_TOKEN_MECH_USAGE_ABI = [ - { - inputs: [], - name: 'AlreadyInitialized', - type: 'error', - }, - { - inputs: [ - { - internalType: 'address', - name: 'activityChecker', - type: 'address', - }, - ], - name: 'ContractOnly', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'provided', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'expected', - type: 'uint256', - }, - ], - name: 'LowerThan', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'maxNumServices', - type: 'uint256', - }, - ], - name: 'MaxNumServicesReached', - type: 'error', - }, - { - inputs: [], - name: 'NoRewardsAvailable', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'tsProvided', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'tsExpected', - type: 'uint256', - }, - ], - name: 'NotEnoughTimeStaked', - type: 'error', - }, - { - inputs: [ - { - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - ], - name: 'OwnerOnly', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'ServiceNotUnstaked', - type: 'error', - }, - { - inputs: [ - { - internalType: 'address', - name: 'token', - type: 'address', - }, - { - internalType: 'address', - name: 'from', - type: 'address', - }, - { - internalType: 'address', - name: 'to', - type: 'address', - }, - { - internalType: 'uint256', - name: 'value', - type: 'uint256', - }, - ], - name: 'TokenTransferFailed', - type: 'error', - }, - { - inputs: [ - { - internalType: 'address', - name: 'multisig', - type: 'address', - }, - ], - name: 'UnauthorizedMultisig', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'provided', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'expected', - type: 'uint256', - }, - ], - name: 'ValueLowerThan', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'agentId', - type: 'uint256', - }, - ], - name: 'WrongAgentId', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'WrongServiceConfiguration', - type: 'error', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'state', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'WrongServiceState', - type: 'error', - }, - { - inputs: [ - { - internalType: 'address', - name: 'expected', - type: 'address', - }, - { - internalType: 'address', - name: 'provided', - type: 'address', - }, - ], - name: 'WrongStakingToken', - type: 'error', - }, - { - inputs: [], - name: 'ZeroAddress', - type: 'error', - }, - { - inputs: [], - name: 'ZeroTokenAddress', - type: 'error', - }, - { - inputs: [], - name: 'ZeroValue', - type: 'error', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'epoch', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'availableRewards', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'serviceIds', - type: 'uint256[]', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'rewards', - type: 'uint256[]', - }, - { - indexed: false, - internalType: 'uint256', - name: 'epochLength', - type: 'uint256', - }, - ], - name: 'Checkpoint', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'balance', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'availableRewards', - type: 'uint256', - }, - ], - name: 'Deposit', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'epoch', - type: 'uint256', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'multisig', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'nonces', - type: 'uint256[]', - }, - { - indexed: false, - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - ], - name: 'RewardClaimed', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'epoch', - type: 'uint256', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256', - name: 'serviceInactivity', - type: 'uint256', - }, - ], - name: 'ServiceInactivityWarning', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'epoch', - type: 'uint256', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'multisig', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'nonces', - type: 'uint256[]', - }, - ], - name: 'ServiceStaked', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: 'uint256', - name: 'epoch', - type: 'uint256', - }, - { - indexed: true, - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'multisig', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'nonces', - type: 'uint256[]', - }, - { - indexed: false, - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - ], - name: 'ServiceUnstaked', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'uint256', - name: 'epoch', - type: 'uint256', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'serviceIds', - type: 'uint256[]', - }, - { - indexed: false, - internalType: 'address[]', - name: 'owners', - type: 'address[]', - }, - { - indexed: false, - internalType: 'address[]', - name: 'multisigs', - type: 'address[]', - }, - { - indexed: false, - internalType: 'uint256[]', - name: 'serviceInactivity', - type: 'uint256[]', - }, - ], - name: 'ServicesEvicted', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'to', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'Withdraw', - type: 'event', - }, - { - inputs: [], - name: 'VERSION', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'activityChecker', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - name: 'agentIds', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'availableRewards', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'balance', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'calculateStakingLastReward', - outputs: [ - { - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'calculateStakingReward', - outputs: [ - { - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'checkpoint', - outputs: [ - { - internalType: 'uint256[]', - name: '', - type: 'uint256[]', - }, - { - internalType: 'uint256[][]', - name: '', - type: 'uint256[][]', - }, - { - internalType: 'uint256[]', - name: '', - type: 'uint256[]', - }, - { - internalType: 'uint256[]', - name: '', - type: 'uint256[]', - }, - { - internalType: 'uint256[]', - name: 'evictServiceIds', - type: 'uint256[]', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'checkpointAndClaim', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'claim', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'configHash', - outputs: [ - { - internalType: 'bytes32', - name: '', - type: 'bytes32', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'deposit', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'emissionsAmount', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'epochCounter', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getAgentIds', - outputs: [ - { - internalType: 'uint256[]', - name: '', - type: 'uint256[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getNextRewardCheckpointTimestamp', - outputs: [ - { - internalType: 'uint256', - name: 'tsNext', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'getServiceIds', - outputs: [ - { - internalType: 'uint256[]', - name: '', - type: 'uint256[]', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'getServiceInfo', - outputs: [ - { - components: [ - { - internalType: 'address', - name: 'multisig', - type: 'address', - }, - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - internalType: 'uint256[]', - name: 'nonces', - type: 'uint256[]', - }, - { - internalType: 'uint256', - name: 'tsStart', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'inactivity', - type: 'uint256', - }, - ], - internalType: 'struct ServiceInfo', - name: 'sInfo', - type: 'tuple', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'getStakingState', - outputs: [ - { - internalType: 'enum StakingBase.StakingState', - name: 'stakingState', - type: 'uint8', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - components: [ - { - internalType: 'bytes32', - name: 'metadataHash', - type: 'bytes32', - }, - { - internalType: 'uint256', - name: 'maxNumServices', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'rewardsPerSecond', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'minStakingDeposit', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'minNumStakingPeriods', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'maxNumInactivityPeriods', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'livenessPeriod', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'timeForEmissions', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'numAgentInstances', - type: 'uint256', - }, - { - internalType: 'uint256[]', - name: 'agentIds', - type: 'uint256[]', - }, - { - internalType: 'uint256', - name: 'threshold', - type: 'uint256', - }, - { - internalType: 'bytes32', - name: 'configHash', - type: 'bytes32', - }, - { - internalType: 'bytes32', - name: 'proxyHash', - type: 'bytes32', - }, - { - internalType: 'address', - name: 'serviceRegistry', - type: 'address', - }, - { - internalType: 'address', - name: 'activityChecker', - type: 'address', - }, - ], - internalType: 'struct StakingBase.StakingParams', - name: '_stakingParams', - type: 'tuple', - }, - { - internalType: 'address', - name: '_serviceRegistryTokenUtility', - type: 'address', - }, - { - internalType: 'address', - name: '_stakingToken', - type: 'address', - }, - ], - name: 'initialize', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'livenessPeriod', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - name: 'mapServiceInfo', - outputs: [ - { - internalType: 'address', - name: 'multisig', - type: 'address', - }, - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - internalType: 'uint256', - name: 'tsStart', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - { - internalType: 'uint256', - name: 'inactivity', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'maxInactivityDuration', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'maxNumInactivityPeriods', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'maxNumServices', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'metadataHash', - outputs: [ - { - internalType: 'bytes32', - name: '', - type: 'bytes32', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'minStakingDeposit', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'minStakingDuration', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'numAgentInstances', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - { - internalType: 'address', - name: '', - type: 'address', - }, - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - { - internalType: 'bytes', - name: '', - type: 'bytes', - }, - ], - name: 'onERC721Received', - outputs: [ - { - internalType: 'bytes4', - name: '', - type: 'bytes4', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'proxyHash', - outputs: [ - { - internalType: 'bytes32', - name: '', - type: 'bytes32', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'rewardsPerSecond', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'serviceRegistry', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'serviceRegistryTokenUtility', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - name: 'setServiceIds', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'stake', - outputs: [], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'stakingToken', - outputs: [ - { - internalType: 'address', - name: '', - type: 'address', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'threshold', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'timeForEmissions', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'tsCheckpoint', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'uint256', - name: 'serviceId', - type: 'uint256', - }, - ], - name: 'unstake', - outputs: [ - { - internalType: 'uint256', - name: 'reward', - type: 'uint256', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, -]; diff --git a/frontend/client/enums.ts b/frontend/client/enums.ts deleted file mode 100644 index 1a9b492f0..000000000 --- a/frontend/client/enums.ts +++ /dev/null @@ -1,35 +0,0 @@ -export enum Action { - STATUS = 0, - BUILD = 1, - DEPLOY = 2, - STOP = 3, -} - -export enum Chain { - ETHEREUM = 0, - GOERLI = 1, - GNOSIS = 2, - SOLANA = 3, -} - -export enum Ledger { - ETHEREUM = 0, - SOLANA = 1, -} - -export enum DeploymentStatus { - CREATED = 0, - BUILT = 1, - DEPLOYING = 2, - DEPLOYED = 3, - STOPPING = 4, - STOPPED = 5, - DELETED = 6, -} - -export enum AccountIsSetup { - True, - False, - Loading, - Error, -} diff --git a/frontend/client/index.ts b/frontend/client/index.ts deleted file mode 100644 index 968a28671..000000000 --- a/frontend/client/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './enums'; -export * from './types'; diff --git a/frontend/client/types.ts b/frontend/client/types.ts deleted file mode 100644 index e7eeb2d82..000000000 --- a/frontend/client/types.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { Address } from '@/types/Address'; - -import { Chain, DeploymentStatus, Ledger } from './enums'; - -export type ServiceHash = string; - -export type LedgerConfig = { - rpc: string; - type: Ledger; - chain: Chain; -}; - -export type ServiceKeys = { - address: Address; - private_key: string; - ledger: Chain; -}; - -export type ChainData = { - instances?: Address[]; - token?: number; - multisig?: Address; -}; - -export type Service = { - name: string; - hash: string; - keys: ServiceKeys[]; - readme?: string; - ledger: LedgerConfig; - chain_data: ChainData; -}; - -export type ServiceTemplate = { - name: string; - hash: string; - image: string; - description: string; - configuration: ConfigurationTemplate; - deploy?: boolean; -}; - -export type ConfigurationTemplate = { - nft: string; - trader_version: string; - rpc?: string; // added by user - agent_id: number; - threshold: number; - use_staking: boolean; - cost_of_bond: number; - olas_cost_of_bond: number; - olas_required_to_stake: number; - monthly_gas_estimate: number; - fund_requirements: FundRequirementsTemplate; -}; - -export type FundRequirementsTemplate = { - agent: number; - safe: number; -}; - -export type DeployedNodes = { - agent: string[]; - tendermint: string[]; -}; - -export type Deployment = { - status: DeploymentStatus; - nodes: DeployedNodes; -}; - -export type EmptyPayload = Record; - -export type EmptyResponse = Record; - -export type HttpResponse = { - error?: string; - data?: string; -}; - -export type ClientResponse = { - error?: string; - data?: ResponseType; -}; - -export type StopDeployment = { - delete: boolean /* Delete deployment*/; -}; - -export type UpdateServicePayload = { - old: ServiceHash; - new: ServiceTemplate; -}; - -export type DeleteServicesPayload = { - hashes: ServiceHash[]; -}; - -export type DeleteServicesResponse = { - hashes: ServiceHash[]; -}; - -export type AppInfo = { - account?: { - key: Address; - }; -}; - -export type WalletResponse = { - address: Address; - safe_chains: Chain[]; - ledger_type: Ledger; - safe: Address; - safe_nonce: number; -}; - -export type Wallet = WalletResponse & { - ethBalance?: number; - olasBalance?: number; -}; diff --git a/frontend/components/Alert/index.tsx b/frontend/components/Alert/index.tsx deleted file mode 100644 index 3cadd98b7..000000000 --- a/frontend/components/Alert/index.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { - ExclamationCircleOutlined, - InfoCircleOutlined, - WarningOutlined, -} from '@ant-design/icons'; -import { Alert as AlertAntd, AlertProps } from 'antd'; - -type AlertType = 'primary' | 'info' | 'warning' | 'error'; - -const icons = { - primary: , - info: , - warning: , - error: , -}; - -export const Alert = ({ - type, - fullWidth, - ...rest -}: { type: AlertType; fullWidth?: boolean } & Omit) => ( - -); diff --git a/frontend/components/Card/CardTitle.tsx b/frontend/components/Card/CardTitle.tsx deleted file mode 100644 index 41b35c231..000000000 --- a/frontend/components/Card/CardTitle.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Flex, Typography } from 'antd'; -import { ReactNode } from 'react'; - -export const CardTitle = ({ title }: { title: string | ReactNode }) => ( - - - {title} - - -); diff --git a/frontend/components/Confetti/ConfettiAnimation.jsx b/frontend/components/Confetti/ConfettiAnimation.jsx deleted file mode 100644 index 9e02463ff..000000000 --- a/frontend/components/Confetti/ConfettiAnimation.jsx +++ /dev/null @@ -1,43 +0,0 @@ -import { useCallback, useRef } from 'react'; -import ReactCanvasConfetti from 'react-canvas-confetti'; -import { useInterval } from 'usehooks-ts'; - -const canvasStyles = { - position: 'fixed', - pointerEvents: 'none', - width: '100%', - height: '100%', - top: 0, - left: 0, -}; - -export const ConfettiAnimation = () => { - const animationInstance = useRef(null); - - const makeShot = useCallback((particleRatio, opts) => { - if (!animationInstance.current) return; - - animationInstance.current({ - ...opts, - origin: { y: 0.45 }, - particleCount: Math.floor(200 * particleRatio), - }); - }, []); - - const fire = useCallback(() => { - makeShot(0.25, { spread: 26, startVelocity: 55 }); - makeShot(0.2, { spread: 60 }); - makeShot(0.35, { spread: 80, decay: 0.91, scalar: 0.8 }); - makeShot(0.1, { spread: 100, startVelocity: 25, decay: 0.92, scalar: 1.2 }); - makeShot(0.1, { spread: 100, startVelocity: 45 }); - }, [makeShot]); - - const getInstance = useCallback((instance) => { - animationInstance.current = instance; - }, []); - - // Fire confetti every 2.5 seconds - useInterval(() => fire(), 2500); - - return ; -}; diff --git a/frontend/components/HelpAndSupport/index.tsx b/frontend/components/HelpAndSupport/index.tsx deleted file mode 100644 index 278246e9e..000000000 --- a/frontend/components/HelpAndSupport/index.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { CloseOutlined, QuestionCircleOutlined } from '@ant-design/icons'; -import { Button, Card, Flex, message, Typography } from 'antd'; -import { useCallback, useEffect, useState } from 'react'; - -import { UNICODE_SYMBOLS } from '@/constants/symbols'; -import { FAQ_URL, SUPPORT_URL } from '@/constants/urls'; -import { PageState } from '@/enums/PageState'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { useLogs } from '@/hooks/useLogs'; -import { usePageState } from '@/hooks/usePageState'; - -import { CardTitle } from '../Card/CardTitle'; -import { CardSection } from '../styled/CardSection'; - -const { Title, Paragraph } = Typography; - -const SettingsTitle = () => ( - - - Help & support - - } - /> -); - -const LogsSavedMessage = ({ onClick }: { onClick: () => void }) => { - return ( - - Logs saved - - - ); -}; - -export const HelpAndSupport = () => { - const { goto } = usePageState(); - const { openPath, saveLogs } = useElectronApi(); - - const logs = useLogs(); - - const [isLoading, setIsLoading] = useState(false); - const [canSaveLogs, setCanSaveLogs] = useState(false); - - const onSaveLogs = useCallback(() => setCanSaveLogs(true), []); - - useEffect(() => { - if (canSaveLogs && logs && !isLoading) { - setIsLoading(true); - saveLogs?.(logs) - .then((result) => { - if (result.success) { - message.success({ - content: ( - openPath?.(result.dirPath)} /> - ), - duration: 10, - }); - } else { - message.error('Save logs failed or cancelled'); - } - }) - .finally(() => { - setIsLoading(false); - setCanSaveLogs(false); - }); - } - }, [canSaveLogs, isLoading, logs, openPath, saveLogs]); - - return ( - } - bordered={false} - extra={ - - - - ); -}; diff --git a/frontend/components/Layout/TopBar.tsx b/frontend/components/Layout/TopBar.tsx deleted file mode 100644 index ddaf17016..000000000 --- a/frontend/components/Layout/TopBar.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { Typography } from 'antd'; -import styled from 'styled-components'; - -import { COLOR } from '@/constants/colors'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { useStore } from '@/hooks/useStore'; - -const { Text } = Typography; - -const TrafficLightIcon = styled.div` - width: 12px; - height: 12px; - border-radius: 50%; - margin-left: 8px; - -webkit-app-region: no-drag; -`; - -const RedLight = styled(TrafficLightIcon)` - background-color: #fe5f57; -`; - -const YellowLight = styled(TrafficLightIcon)` - background-color: #febc2e; -`; - -const DisabledLight = styled(TrafficLightIcon)` - background-color: #ddd; -`; - -const TrafficLights = styled.div` - display: flex; - align-items: center; - margin-right: 24px; - -webkit-app-region: no-drag; -`; - -const TopBarContainer = styled.div` - position: sticky; - top: 0; - z-index: 1; - display: flex; - align-items: center; - padding: 10px 8px; - border-radius: 8px 8px 0 0px; - border-bottom: 1px solid ${COLOR.BORDER_GRAY}; - background: ${COLOR.WHITE}; - -webkit-app-region: drag; -`; - -export const TopBar = () => { - const electronApi = useElectronApi(); - const store = useStore(); - const envName = store?.storeState?.environmentName; - - return ( - - - electronApi?.closeApp?.()} /> - electronApi?.minimizeApp?.()} /> - - - - {`Pearl (alpha) ${envName ? `(${envName})` : ''}`.trim()} - - ); -}; diff --git a/frontend/components/Layout/index.tsx b/frontend/components/Layout/index.tsx deleted file mode 100644 index 42d6f1fdf..000000000 --- a/frontend/components/Layout/index.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import { WifiOutlined } from '@ant-design/icons'; -import { message } from 'antd'; -import { PropsWithChildren, useContext, useEffect } from 'react'; -import styled, { css } from 'styled-components'; - -import { COLOR } from '@/constants/colors'; -import { OnlineStatusContext } from '@/context/OnlineStatusProvider'; - -import { TopBar } from './TopBar'; - -const Container = styled.div<{ blur: 'true' | 'false' }>` - background-color: ${COLOR.WHITE}; - border-radius: 8px; - - ${(props) => - props.blur === 'true' && - css` - filter: blur(2px); - position: relative; - overflow: hidden; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(27, 38, 50, 0.1); - z-index: 1; - } - `} -`; - -export const Layout = ({ - children, -}: PropsWithChildren & { vertical?: boolean }) => { - const { isOnline } = useContext(OnlineStatusContext); - - useEffect(() => { - let messageKey; - if (!isOnline) { - messageKey = message.error({ - content: 'Network connection is unstable', - duration: 0, - icon: , - }); - } else { - message.destroy(messageKey); - } - }, [isOnline]); - - return ( - - - {children} - - ); -}; diff --git a/frontend/components/Main/KeepAgentRunning.tsx b/frontend/components/Main/KeepAgentRunning.tsx deleted file mode 100644 index 1cc98b333..000000000 --- a/frontend/components/Main/KeepAgentRunning.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Flex, Typography } from 'antd'; - -import { DeploymentStatus } from '@/client'; -import { useServices } from '@/hooks/useServices'; -import { useStore } from '@/hooks/useStore'; - -import { Alert } from '../Alert'; -import { CardSection } from '../styled/CardSection'; - -const { Text } = Typography; - -const COVER_BLOCK_BORDERS_STYLE = { marginBottom: '-1px' }; - -export const KeepAgentRunning = () => { - const { storeState } = useStore(); - const { serviceStatus } = useServices(); - - if (storeState?.firstStakingRewardAchieved) return null; - if (serviceStatus !== DeploymentStatus.DEPLOYED) return null; - - return ( - - - Your agent has not hit its target yet. - Keep the agent running to earn today’s rewards. - - } - /> - - ); -}; diff --git a/frontend/components/Main/MainAddFunds.tsx b/frontend/components/Main/MainAddFunds.tsx deleted file mode 100644 index 06fd3d4dc..000000000 --- a/frontend/components/Main/MainAddFunds.tsx +++ /dev/null @@ -1,155 +0,0 @@ -import { - CopyOutlined, - // QrcodeOutlined, -} from '@ant-design/icons'; -import { - Button, - Flex, - message, - Popover, - // QRCode, - Tooltip, - Typography, -} from 'antd'; -import Link from 'next/link'; -import { useCallback, useMemo, useState } from 'react'; -import styled from 'styled-components'; - -import { UNICODE_SYMBOLS } from '@/constants/symbols'; -import { COW_SWAP_GNOSIS_XDAI_OLAS_URL } from '@/constants/urls'; -import { useWallet } from '@/hooks/useWallet'; -import { Address } from '@/types/Address'; -import { copyToClipboard } from '@/utils/copyToClipboard'; -import { truncateAddress } from '@/utils/truncate'; - -import { Alert } from '../Alert'; -import { CardSection } from '../styled/CardSection'; - -const { Text } = Typography; - -const CustomizedCardSection = styled(CardSection)<{ border?: boolean }>` - > .ant-btn { - width: 50%; - } -`; - -export const MainAddFunds = () => { - const [isAddFundsVisible, setIsAddFundsVisible] = useState(false); - const { masterSafeAddress } = useWallet(); - - const fundingAddress: Address | undefined = masterSafeAddress; - - const truncatedFundingAddress: string | undefined = useMemo( - () => fundingAddress && truncateAddress(fundingAddress), - [fundingAddress], - ); - - const handleCopyAddress = useCallback( - () => - fundingAddress && - copyToClipboard(fundingAddress).then(() => - message.success('Copied successfully!'), - ), - [fundingAddress], - ); - - return ( - <> - - - - Ability to withdraw is coming soon} - > - - - - - {isAddFundsVisible && ( - <> - - - - - )} - - ); -}; - -const AddFundsWarningAlertSection = () => ( - - - - Only send funds on Gnosis Chain! - - - You will lose any assets you send on other chains. - - - } - /> - -); - -const AddFundsAddressSection = ({ - fundingAddress, - truncatedFundingAddress, - handleCopy, -}: { - fundingAddress?: string; - truncatedFundingAddress?: string; - handleCopy: () => void; -}) => ( - - - {fundingAddress ?? 'Error loading address'} - - } - > - GNO: {truncatedFundingAddress ?? '--'} - - - - -); - -const AgentStoppingButton = () => ( - -); - -const AgentRunningButton = () => { - const { showNotification } = useElectronApi(); - const { service, setIsServicePollingPaused, setServiceStatus } = - useServices(); - - const handlePause = useCallback(async () => { - if (!service) return; - // Paused to stop overlapping service poll while waiting for response - setIsServicePollingPaused(true); - - // Optimistically update service status - setServiceStatus(DeploymentStatus.STOPPING); - try { - await ServicesService.stopDeployment(service.hash); - } catch (error) { - console.error(error); - showNotification?.('Error while stopping agent'); - } finally { - // Resume polling, will update to correct status regardless of success - setIsServicePollingPaused(false); - } - }, [service, setIsServicePollingPaused, setServiceStatus, showNotification]); - - return ( - - - - Agent is working - - - ); -}; - -const AgentNotRunningButton = () => { - const { wallets, masterSafeAddress } = useWallet(); - const { - service, - serviceStatus, - setServiceStatus, - setIsServicePollingPaused, - } = useServices(); - const { serviceTemplate } = useServiceTemplates(); - const { showNotification } = useElectronApi(); - const { - setIsPaused: setIsBalancePollingPaused, - safeBalance, - totalOlasStakedBalance, - totalEthBalance, - } = useBalance(); - const { storeState } = useStore(); - const { isEligibleForStaking, isAgentEvicted } = useStakingContractInfo(); - - const safeOlasBalance = safeBalance?.OLAS; - const safeOlasBalanceWithStaked = - safeOlasBalance === undefined || totalOlasStakedBalance === undefined - ? undefined - : safeOlasBalance + totalOlasStakedBalance; - - const handleStart = useCallback(async () => { - // Must have a wallet to start the agent - if (!wallets?.[0]) return; - - // Paused to stop overlapping service poll while wallet is created or service is built - setIsServicePollingPaused(true); - - // Paused to stop confusing balance transitions while starting the agent - setIsBalancePollingPaused(true); - - // Mock "DEPLOYING" status (service polling will update this once resumed) - setServiceStatus(DeploymentStatus.DEPLOYING); - - // Create master safe if it doesn't exist - try { - if (!masterSafeAddress) { - await WalletService.createSafe(Chain.GNOSIS); - } - } catch (error) { - console.error(error); - setServiceStatus(undefined); - showNotification?.('Error while creating safe'); - setIsServicePollingPaused(false); - setIsBalancePollingPaused(false); - return; - } - - // Then create / deploy the service - try { - await ServicesService.createService({ - serviceTemplate, - deploy: true, - }); - } catch (error) { - console.error(error); - setServiceStatus(undefined); - showNotification?.('Error while deploying service'); - setIsServicePollingPaused(false); - setIsBalancePollingPaused(false); - return; - } - - // Show success notification based on whether there was a service prior to starting - try { - if (!service) { - showNotification?.('Your agent is now running!'); - } else { - const minimumStakedAmountRequired = - getMinimumStakedAmountRequired(serviceTemplate); - - showNotification?.( - `Your agent is running and you've staked ${minimumStakedAmountRequired} OLAS!`, - ); - } - } catch (error) { - console.error(error); - showNotification?.('Error while showing "running" notification'); - } - - // Can assume successful deployment - // resume polling, optimistically update service status (poll will update, if needed) - setIsServicePollingPaused(false); - setIsBalancePollingPaused(false); - setServiceStatus(DeploymentStatus.DEPLOYED); - }, [ - wallets, - setIsServicePollingPaused, - setIsBalancePollingPaused, - setServiceStatus, - masterSafeAddress, - showNotification, - serviceTemplate, - service, - ]); - - const isDeployable = useMemo(() => { - if (serviceStatus === DeploymentStatus.DEPLOYED) return false; - if (serviceStatus === DeploymentStatus.DEPLOYING) return false; - if (serviceStatus === DeploymentStatus.STOPPING) return false; - - // case where service exists & user has initial funded - if (service && storeState?.isInitialFunded) { - if (!safeOlasBalanceWithStaked) return false; - // at present agent will always require staked/bonded OLAS (or the ability to stake/bond) - return safeOlasBalanceWithStaked >= requiredOlas; - } - - // case if agent is evicted and user has met the staking criteria - if (isEligibleForStaking && isAgentEvicted) return true; - - const hasEnoughOlas = (safeOlasBalanceWithStaked ?? 0) >= requiredOlas; - const hasEnoughEth = (totalEthBalance ?? 0) > requiredGas; - - return hasEnoughOlas && hasEnoughEth; - }, [ - isAgentEvicted, - isEligibleForStaking, - safeOlasBalanceWithStaked, - service, - serviceStatus, - storeState?.isInitialFunded, - totalEthBalance, - ]); - - const buttonProps: ButtonProps = { - type: 'primary', - size: 'large', - disabled: !isDeployable, - onClick: isDeployable ? handleStart : undefined, - }; - - const buttonText = `Start agent ${service ? '' : '& stake'}`; - - return ; -}; - -export const AgentButton = () => { - const { service, serviceStatus, hasInitialLoaded } = useServices(); - const { isEligibleForStaking, isAgentEvicted } = useStakingContractInfo(); - - return useMemo(() => { - if (!hasInitialLoaded) { - return - ); - }, [ - hasInitialLoaded, - serviceStatus, - isEligibleForStaking, - isAgentEvicted, - service, - ]); -}; diff --git a/frontend/components/Main/MainHeader/AgentHead/index.tsx b/frontend/components/Main/MainHeader/AgentHead/index.tsx deleted file mode 100644 index a291ef4f3..000000000 --- a/frontend/components/Main/MainHeader/AgentHead/index.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Badge } from 'antd'; -import Image from 'next/image'; - -import { DeploymentStatus } from '@/client'; -import { useServices } from '@/hooks/useServices'; - -const badgeOffset: [number, number] = [-5, 32.5]; - -const TransitionalAgentHead = () => ( - - Happy Robot - -); - -const DeployedAgentHead = () => ( - - Happy Robot - -); - -const StoppedAgentHead = () => ( - - Sad Robot - -); - -export const AgentHead = () => { - const { serviceStatus } = useServices(); - if ( - serviceStatus === DeploymentStatus.DEPLOYING || - serviceStatus === DeploymentStatus.STOPPING - ) - return ; - if (serviceStatus === DeploymentStatus.DEPLOYED) return ; - return ; -}; diff --git a/frontend/components/Main/MainHeader/CannotStartAgent.tsx b/frontend/components/Main/MainHeader/CannotStartAgent.tsx deleted file mode 100644 index 9206d6fa0..000000000 --- a/frontend/components/Main/MainHeader/CannotStartAgent.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { InfoCircleOutlined } from '@ant-design/icons'; -import { Popover, PopoverProps, Typography } from 'antd'; - -import { COLOR } from '@/constants/colors'; -import { UNICODE_SYMBOLS } from '@/constants/symbols'; -import { SUPPORT_URL } from '@/constants/urls'; -import { useStakingContractInfo } from '@/hooks/useStakingContractInfo'; - -const { Paragraph, Text } = Typography; - -const cannotStartAgentText = ( - - Cannot start agent  - - -); - -const evictedDescription = - "You didn't run your agent enough and it missed its targets multiple times. Please wait a few days and try to run your agent again."; -const AgentEvictedPopover = () => ( - {evictedDescription}} - > - {cannotStartAgentText} - -); - -const otherPopoverProps: PopoverProps = { - arrow: false, - placement: 'bottomRight', -}; - -const JoinOlasCommunity = () => ( -
- - Join the Olas community Discord server to report or stay up to date on the - issue. - - - - Olas community Discord server {UNICODE_SYMBOLS.EXTERNAL_LINK} - -
-); - -const NoRewardsAvailablePopover = () => ( - } - > - {cannotStartAgentText} - -); - -const NoJobsAvailablePopover = () => ( - } - > - {cannotStartAgentText} - -); - -export const CannotStartAgent = () => { - const { - isEligibleForStaking, - hasEnoughServiceSlots, - isRewardsAvailable, - isAgentEvicted, - } = useStakingContractInfo(); - - if (isEligibleForStaking) return null; - if (!hasEnoughServiceSlots) return ; - if (!isRewardsAvailable) return ; - if (isAgentEvicted) return ; - throw new Error('Cannot start agent, please contact support'); -}; diff --git a/frontend/components/Main/MainHeader/FirstRunModal.tsx b/frontend/components/Main/MainHeader/FirstRunModal.tsx deleted file mode 100644 index 78de3d558..000000000 --- a/frontend/components/Main/MainHeader/FirstRunModal.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Button, Flex, Modal, Typography } from 'antd'; -import Image from 'next/image'; -import { FC } from 'react'; - -import { useServiceTemplates } from '@/hooks/useServiceTemplates'; -import { getMinimumStakedAmountRequired } from '@/utils/service'; - -const { Title, Paragraph } = Typography; - -type FirstRunModalProps = { open: boolean; onClose: () => void }; - -export const FirstRunModal: FC = ({ open, onClose }) => { - const { getServiceTemplates } = useServiceTemplates(); - - if (!open) return null; - - const minimumStakedAmountRequired = getMinimumStakedAmountRequired( - getServiceTemplates()[0], - ); - - return ( - - Got it - , - ]} - > - - OLAS logo - - - {`Your agent is running and you've staked ${minimumStakedAmountRequired} OLAS!`} - - Your agent is working towards earning rewards. - - Pearl is designed to make it easy for you to earn staking rewards every - day. Simply leave the app and agent running in the background for ~1hr a - day. - - - ); -}; diff --git a/frontend/components/Main/MainHeader/constants.ts b/frontend/components/Main/MainHeader/constants.ts deleted file mode 100644 index 87083563d..000000000 --- a/frontend/components/Main/MainHeader/constants.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { formatUnits } from 'ethers/lib/utils'; - -import { SERVICE_TEMPLATES } from '@/constants/serviceTemplates'; - -// TODO: Move this to more appropriate location (root /constants) - -const olasCostOfBond = Number( - formatUnits(`${SERVICE_TEMPLATES[0].configuration.olas_cost_of_bond}`, 18), -); -const olasRequiredToStake = Number( - formatUnits( - `${SERVICE_TEMPLATES[0].configuration.olas_required_to_stake}`, - 18, - ), -); - -export const requiredOlas = olasCostOfBond + olasRequiredToStake; -export const requiredGas = Number( - formatUnits(`${SERVICE_TEMPLATES[0].configuration.monthly_gas_estimate}`, 18), -); diff --git a/frontend/components/Main/MainHeader/index.tsx b/frontend/components/Main/MainHeader/index.tsx deleted file mode 100644 index c24b0d430..000000000 --- a/frontend/components/Main/MainHeader/index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Flex } from 'antd'; -import { useCallback, useEffect, useState } from 'react'; - -import { DeploymentStatus } from '@/client'; -import { LOW_BALANCE } from '@/constants/thresholds'; -import { useBalance } from '@/hooks/useBalance'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { useServices } from '@/hooks/useServices'; - -import { AgentButton } from './AgentButton'; -import { AgentHead } from './AgentHead'; -import { FirstRunModal } from './FirstRunModal'; - -const useSetupTrayIcon = () => { - const { safeBalance } = useBalance(); - const { serviceStatus } = useServices(); - const { setTrayIcon } = useElectronApi(); - - useEffect(() => { - if (safeBalance && safeBalance.ETH < LOW_BALANCE) { - setTrayIcon?.('low-gas'); - } else if (serviceStatus === DeploymentStatus.DEPLOYED) { - setTrayIcon?.('running'); - } else if (serviceStatus === DeploymentStatus.STOPPED) { - setTrayIcon?.('paused'); - } - }, [safeBalance, serviceStatus, setTrayIcon]); - - return null; -}; - -export const MainHeader = () => { - const [isFirstRunModalOpen, setIsFirstRunModalOpen] = useState(false); - const handleModalClose = useCallback(() => setIsFirstRunModalOpen(false), []); - - useSetupTrayIcon(); - - return ( - - - - - - ); -}; diff --git a/frontend/components/Main/MainNeedsFunds.tsx b/frontend/components/Main/MainNeedsFunds.tsx deleted file mode 100644 index f275136bf..000000000 --- a/frontend/components/Main/MainNeedsFunds.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { Flex, Typography } from 'antd'; -import { formatUnits } from 'ethers/lib/utils'; -import { ReactNode, useEffect, useMemo } from 'react'; - -import { UNICODE_SYMBOLS } from '@/constants/symbols'; -import { useBalance } from '@/hooks/useBalance'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { useServiceTemplates } from '@/hooks/useServiceTemplates'; -import { useStore } from '@/hooks/useStore'; -import { getMinimumStakedAmountRequired } from '@/utils/service'; - -import { Alert } from '../Alert'; -import { CardSection } from '../styled/CardSection'; - -const { Text, Paragraph } = Typography; -const COVER_PREV_BLOCK_BORDER_STYLE = { marginTop: '-1px' }; - -const useNeedsFunds = () => { - const { getServiceTemplates } = useServiceTemplates(); - - const serviceTemplate = useMemo( - () => getServiceTemplates()[0], - [getServiceTemplates], - ); - - const { storeState } = useStore(); - const { safeBalance, totalOlasStakedBalance } = useBalance(); - - const isInitialFunded = storeState?.isInitialFunded; - - const serviceFundRequirements = useMemo(() => { - const monthlyGasEstimate = Number( - formatUnits(`${serviceTemplate.configuration.monthly_gas_estimate}`, 18), - ); - - const minimumStakedAmountRequired = - getMinimumStakedAmountRequired(serviceTemplate); - - return { - eth: monthlyGasEstimate, - olas: minimumStakedAmountRequired, - }; - }, [serviceTemplate]); - - const hasEnoughEthForInitialFunding = useMemo( - () => (safeBalance?.ETH || 0) >= (serviceFundRequirements?.eth || 0), - [serviceFundRequirements?.eth, safeBalance], - ); - - const hasEnoughOlasForInitialFunding = useMemo(() => { - const olasInSafe = safeBalance?.OLAS || 0; - const olasStakedBySafe = totalOlasStakedBalance || 0; - - const olasInSafeAndStaked = olasInSafe + olasStakedBySafe; - - return olasInSafeAndStaked >= serviceFundRequirements.olas; - }, [ - safeBalance?.OLAS, - totalOlasStakedBalance, - serviceFundRequirements?.olas, - ]); - - return { - hasEnoughEthForInitialFunding, - hasEnoughOlasForInitialFunding, - serviceFundRequirements, - isInitialFunded, - }; -}; - -export const MainNeedsFunds = () => { - const { isBalanceLoaded } = useBalance(); - const { - hasEnoughEthForInitialFunding, - hasEnoughOlasForInitialFunding, - serviceFundRequirements, - isInitialFunded, - } = useNeedsFunds(); - - const electronApi = useElectronApi(); - - const isVisible: boolean = useMemo(() => { - if (isInitialFunded) return false; - if (!isBalanceLoaded) return false; - if (hasEnoughEthForInitialFunding && hasEnoughOlasForInitialFunding) - return false; - return true; - }, [ - hasEnoughEthForInitialFunding, - hasEnoughOlasForInitialFunding, - isBalanceLoaded, - isInitialFunded, - ]); - - const message: ReactNode = useMemo( - () => ( - - Your agent needs funds - - USE THE ACCOUNT CREDENTIALS PROVIDED IN THE “ADD FUNDS” INSTRUCTIONS - BELOW. - - - To run your agent, you must add these amounts to your account: - - {!hasEnoughOlasForInitialFunding && ( - - {`${UNICODE_SYMBOLS.OLAS}${serviceFundRequirements.olas} OLAS `} - - for staking. - - )} - {!hasEnoughEthForInitialFunding && ( - - - {`${serviceFundRequirements.eth} XDAI `} - - - for trading balance. - - )} - - ), - [ - serviceFundRequirements, - hasEnoughEthForInitialFunding, - hasEnoughOlasForInitialFunding, - ], - ); - - useEffect(() => { - if ( - hasEnoughEthForInitialFunding && - hasEnoughOlasForInitialFunding && - !isInitialFunded - ) { - electronApi.store?.set?.('isInitialFunded', true); - } - }, [ - electronApi.store, - hasEnoughEthForInitialFunding, - hasEnoughOlasForInitialFunding, - isInitialFunded, - ]); - - if (!isVisible) return null; - - return ( - - - - ); -}; diff --git a/frontend/components/Main/MainOlasBalance.tsx b/frontend/components/Main/MainOlasBalance.tsx deleted file mode 100644 index f51cf2ef9..000000000 --- a/frontend/components/Main/MainOlasBalance.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import { InfoCircleOutlined } from '@ant-design/icons'; -import { Flex, Skeleton, Tooltip, Typography } from 'antd'; -import { useMemo } from 'react'; -import styled from 'styled-components'; - -import { COLOR } from '@/constants/colors'; -import { UNICODE_SYMBOLS } from '@/constants/symbols'; -import { useBalance } from '@/hooks/useBalance'; -import { useReward } from '@/hooks/useReward'; -import { balanceFormat } from '@/utils/numberFormatters'; - -import { CardSection } from '../styled/CardSection'; - -const { Text } = Typography; -const Balance = styled.span` - letter-spacing: -2px; - margin-right: 4px; -`; -const BalanceBreakdown = styled.div` - padding: 4px; -`; -const BalanceBreakdownLine = styled.div` - position: relative; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - color: ${COLOR.TEXT}; - - > span { - background: ${COLOR.WHITE}; - z-index: 1; - &:first-child { - padding-right: 6px; - } - &:last-child { - padding-left: 6px; - } - } - - &:before { - content: ''; - position: absolute; - bottom: 6px; - width: 100%; - border-bottom: 2px dotted ${COLOR.BORDER_GRAY}; - } - - &:not(:last-child) { - margin-bottom: 8px; - } -`; -const OVERLAY_STYLE = { maxWidth: '300px', width: '300px' }; - -const CurrentBalance = () => { - const { totalOlasBalance, totalOlasStakedBalance } = useBalance(); - const { accruedServiceStakingRewards } = useReward(); - - const balances = useMemo(() => { - return [ - { - title: 'Staked amount', - value: balanceFormat(totalOlasStakedBalance ?? 0, 2), - }, - { - title: 'Unclaimed rewards', - value: balanceFormat(accruedServiceStakingRewards ?? 0, 2), - }, - { - // Unused funds should only be ‘free-floating’ OLAS that is neither unclaimed nor staked. - title: 'Unused funds', - value: balanceFormat( - (totalOlasBalance ?? 0) - - (totalOlasStakedBalance ?? 0) - - (accruedServiceStakingRewards ?? 0), - 2, - ), - }, - ]; - }, [accruedServiceStakingRewards, totalOlasBalance, totalOlasStakedBalance]); - - return ( - - Current balance  - - {balances.map((item, index) => ( - - {item.title} - {item.value} OLAS - - ))} - - } - > - - - - ); -}; - -export const MainOlasBalance = () => { - const { isBalanceLoaded, totalOlasBalance } = useBalance(); - - const balance = useMemo(() => { - if (totalOlasBalance === undefined) return '--'; - return balanceFormat(totalOlasBalance, 2); - }, [totalOlasBalance]); - - return ( - - {isBalanceLoaded ? ( - <> - - - {UNICODE_SYMBOLS.OLAS} - {balance} - OLAS - - - ) : ( - - )} - - ); -}; diff --git a/frontend/components/Main/MainRewards.tsx b/frontend/components/Main/MainRewards.tsx deleted file mode 100644 index 8f775b163..000000000 --- a/frontend/components/Main/MainRewards.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import { InfoCircleOutlined } from '@ant-design/icons'; -import { Button, Flex, Modal, Skeleton, Tag, Tooltip, Typography } from 'antd'; -import Image from 'next/image'; -import { useCallback, useEffect, useRef, useState } from 'react'; - -import { useBalance } from '@/hooks/useBalance'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { useReward } from '@/hooks/useReward'; -import { useStore } from '@/hooks/useStore'; -import { balanceFormat } from '@/utils/numberFormatters'; - -import { ConfettiAnimation } from '../Confetti/ConfettiAnimation'; -import { CardSection } from '../styled/CardSection'; - -const { Text, Title, Paragraph } = Typography; - -const Loader = () => ( - - - - -); - -const DisplayRewards = () => { - const { availableRewardsForEpochEth, isEligibleForRewards } = useReward(); - const { isBalanceLoaded } = useBalance(); - - const reward = - availableRewardsForEpochEth === undefined - ? '--' - : `~${balanceFormat(availableRewardsForEpochEth, 2)}`; - - return ( - - - Staking rewards this work period  - - The agent's working period lasts at least 24 hours, but its - start and end point may not be at the same time every day. - - } - > - - - - {isBalanceLoaded ? ( - - {reward} OLAS  - {isEligibleForRewards ? ( - Earned - ) : ( - Not yet earned - )} - - ) : ( - - )} - - ); -}; - -const SHARE_TEXT = `I just earned my first reward through the Operate app powered by #olas!\n\nDownload the Pearl app:`; -const OPERATE_URL = 'https://olas.network/operate?pearl=first-reward'; - -const NotifyRewards = () => { - const { isEligibleForRewards, availableRewardsForEpochEth } = useReward(); - const { totalOlasBalance } = useBalance(); - const { showNotification, store } = useElectronApi(); - const { storeState } = useStore(); - - const [canShowNotification, setCanShowNotification] = useState(false); - - const firstRewardRef = useRef(); - - // hook to set the flag to show the notification - useEffect(() => { - if (!isEligibleForRewards) return; - if (!storeState) return; - if (storeState?.firstRewardNotificationShown) return; - if (!availableRewardsForEpochEth) return; - - firstRewardRef.current = availableRewardsForEpochEth; - setCanShowNotification(true); - }, [isEligibleForRewards, availableRewardsForEpochEth, storeState]); - - // hook to show desktop app notification - useEffect(() => { - if (!canShowNotification) return; - - showNotification?.( - 'Your agent earned its first staking rewards!', - `Congratulations! Your agent just got the first reward for you! Your current balance: ${firstRewardRef.current} OLAS`, - ); - }, [canShowNotification, showNotification]); - - const closeNotificationModal = useCallback(() => { - setCanShowNotification(false); - - // once the notification is closed, set the flag to true - store?.set?.('firstRewardNotificationShown', true); - }, [store]); - - const onTwitterShare = useCallback(() => { - const encodedText = encodeURIComponent(SHARE_TEXT); - const encodedURL = encodeURIComponent(OPERATE_URL); - - window.open( - `https://twitter.com/intent/tweet?text=${encodedText}&url=${encodedURL}`, - '_blank', - ); - }, []); - - if (!canShowNotification) return null; - - return ( - - - Share on - Share on twitter - - , - ]} - > - - - - OLAS logo - - - - Your agent just earned the first reward! - - - - - Congratulations! Your agent just earned the first - - {` ${balanceFormat(availableRewardsForEpochEth, 2)} OLAS `} - - for you! - - - - Your current balance: - {` ${balanceFormat(totalOlasBalance, 2)} OLAS `} - - - Keep it running to get even more! - - - ); -}; - -export const MainRewards = () => ( - <> - - - -); diff --git a/frontend/components/Main/index.tsx b/frontend/components/Main/index.tsx deleted file mode 100644 index 1d2c4a5d3..000000000 --- a/frontend/components/Main/index.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { QuestionCircleOutlined, SettingOutlined } from '@ant-design/icons'; -import { Button, Card, Flex } from 'antd'; -import { useEffect } from 'react'; - -import { PageState } from '@/enums/PageState'; -import { useBalance } from '@/hooks/useBalance'; -import { usePageState } from '@/hooks/usePageState'; -import { useServices } from '@/hooks/useServices'; - -import { KeepAgentRunning } from './KeepAgentRunning'; -import { MainAddFunds } from './MainAddFunds'; -import { MainGasBalance } from './MainGasBalance'; -import { MainHeader } from './MainHeader'; -import { MainNeedsFunds } from './MainNeedsFunds'; -import { MainOlasBalance } from './MainOlasBalance'; -import { MainRewards } from './MainRewards'; - -export const Main = () => { - const { goto } = usePageState(); - const { updateServicesState } = useServices(); - const { updateBalances, isLoaded, setIsLoaded } = useBalance(); - - useEffect(() => { - if (!isLoaded) { - setIsLoaded(true); - updateServicesState().then(() => updateBalances()); - } - }, [isLoaded, setIsLoaded, updateBalances, updateServicesState]); - - return ( - } - extra={ - - - - {data ? ( - data.map((item) => ) - ) : ( - - - - )} - -
- ); -}; diff --git a/frontend/components/Settings/SettingsAddBackupWallet.tsx b/frontend/components/Settings/SettingsAddBackupWallet.tsx deleted file mode 100644 index ac67149ff..000000000 --- a/frontend/components/Settings/SettingsAddBackupWallet.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { CloseOutlined } from '@ant-design/icons'; -import { Button, Form, Input, Typography } from 'antd'; -import { useMemo } from 'react'; - -import { Chain } from '@/client'; -import { MIN_ETH_BALANCE_THRESHOLDS } from '@/constants/thresholds'; -import { SettingsScreen } from '@/enums/SettingsScreen'; -import { useBalance } from '@/hooks/useBalance'; -import { useSettings } from '@/hooks/useSettings'; - -import { CardTitle } from '../Card/CardTitle'; -import { CardFlex } from '../styled/CardFlex'; - -export const SettingsAddBackupWallet = () => { - const { eoaBalance } = useBalance(); - const { goto } = useSettings(); - - const [form] = Form.useForm(); - - const isFunded = useMemo(() => { - if (!eoaBalance) return false; - return ( - eoaBalance.ETH >= MIN_ETH_BALANCE_THRESHOLDS[Chain.GNOSIS].safeAddSigner - ); - }, [eoaBalance]); - - return ( - } - extra={ - - } - > - - To keep your funds safe, we encourage you to add one of your existing - crypto wallets as a backup. This enables you to recover your funds if - you lose both your password and seed phrase. - -
- - - - -
- - - * This action requires a small amount of funds. - - -
- ); -}; diff --git a/frontend/components/Settings/index.tsx b/frontend/components/Settings/index.tsx deleted file mode 100644 index 81a0a0160..000000000 --- a/frontend/components/Settings/index.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import { CloseOutlined, SettingOutlined } from '@ant-design/icons'; -import { Button, Card, Flex, Typography } from 'antd'; -import Link from 'next/link'; -import { useMemo } from 'react'; - -import { UNICODE_SYMBOLS } from '@/constants/symbols'; -import { PageState } from '@/enums/PageState'; -import { SettingsScreen } from '@/enums/SettingsScreen'; -import { useMasterSafe } from '@/hooks/useMasterSafe'; -import { usePageState } from '@/hooks/usePageState'; -import { useSettings } from '@/hooks/useSettings'; -import { truncateAddress } from '@/utils/truncate'; - -import { Alert } from '../Alert'; -import { CardTitle } from '../Card/CardTitle'; -import { CardSection } from '../styled/CardSection'; -import { DebugInfoCard } from './DebugInfoCard'; -import { SettingsAddBackupWallet } from './SettingsAddBackupWallet'; - -const { Text, Paragraph } = Typography; - -const SettingsTitle = () => ( - - - Settings - - } - /> -); - -export const Settings = () => { - const { screen } = useSettings(); - const settingsScreen = useMemo(() => { - switch (screen) { - case SettingsScreen.Main: - return ; - case SettingsScreen.AddBackupWallet: - return ; - default: - return null; - } - }, [screen]); - - return settingsScreen; -}; - -const SettingsMain = () => { - const { backupSafeAddress } = useMasterSafe(); - const { goto } = usePageState(); - - const truncatedBackupSafeAddress: string | undefined = useMemo(() => { - if (backupSafeAddress) { - return truncateAddress(backupSafeAddress); - } - }, [backupSafeAddress]); - - return ( - } - bordered={false} - extra={ - - - ); -}; diff --git a/frontend/components/Setup/Create/SetupBackupSigner.tsx b/frontend/components/Setup/Create/SetupBackupSigner.tsx deleted file mode 100644 index 4862a9b45..000000000 --- a/frontend/components/Setup/Create/SetupBackupSigner.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { Button, Flex, Form, Input, Typography } from 'antd'; - -import { CardFlex } from '@/components/styled/CardFlex'; -import { FormFlex } from '@/components/styled/FormFlex'; -import { SetupScreen } from '@/enums/SetupScreen'; -import { useSetup } from '@/hooks/useSetup'; -import { Address } from '@/types/Address'; - -import { SetupCreateHeader } from './SetupCreateHeader'; - -export const SetupBackupSigner = () => { - const { goto } = useSetup(); - const { setBackupSigner } = useSetup(); - const [form] = Form.useForm(); - - const handleFinish = (values: { 'backup-signer': Address }) => { - setBackupSigner(values['backup-signer']); - goto(SetupScreen.SetupEoaFunding); - }; - - return ( - - - Set backup wallet - - - To keep your funds safe, we encourage you to add one of your existing - crypto wallets as a backup. This enables you to recover your funds if - you lose both your password and seed phrase. - - - - - - - - {/* Commented to protect users from skipping backup wallet setup during Alpha testing - - - Note that in the current version of the app, you will not be able to - set up a backup wallet afterward. This functionality is coming soon. - - */} - - - - ); -}; diff --git a/frontend/components/Setup/Create/SetupCreateHeader.tsx b/frontend/components/Setup/Create/SetupCreateHeader.tsx deleted file mode 100644 index d4f7bc670..000000000 --- a/frontend/components/Setup/Create/SetupCreateHeader.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { ArrowLeftOutlined } from '@ant-design/icons'; -import { Button, Col, Flex, Row } from 'antd'; -import Image from 'next/image'; -import { memo } from 'react'; - -import { SetupScreen } from '@/enums/SetupScreen'; -import { useSetup } from '@/hooks/useSetup'; - -export const SetupCreateHeader = memo(function SetupCreateHeader({ - prev, - disabled = false, -}: { - prev: SetupScreen; - disabled?: boolean; -}) { - const { goto } = useSetup(); - const handleBack = () => goto(prev); - return ( - - - - - ); -}; - -const AccountCreationCard = styled.div` - display: flex; - flex-direction: column; - gap: 8px; - margin-top: 24px; - margin-bottom: 24px; - padding: 16px; - background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='12' ry='12' stroke='%23A3AEBB' stroke-width='2' stroke-dasharray='6' stroke-dashoffset='15' stroke-linecap='square'/%3e%3c/svg%3e"); - border-radius: 12px; -`; - -const ICON_STYLE = { color: '#606F85' }; diff --git a/frontend/components/Setup/Create/SetupPassword.tsx b/frontend/components/Setup/Create/SetupPassword.tsx deleted file mode 100644 index 4907724af..000000000 --- a/frontend/components/Setup/Create/SetupPassword.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { Button, Checkbox, Form, Input, message, Typography } from 'antd'; -import { useState } from 'react'; - -import { Chain } from '@/client'; -import { SetupScreen } from '@/enums/SetupScreen'; -import { useSetup } from '@/hooks/useSetup'; -import { AccountService } from '@/service/Account'; -import { WalletService } from '@/service/Wallet'; - -import { CardFlex } from '../../styled/CardFlex'; -import { SetupCreateHeader } from './SetupCreateHeader'; - -const { Title, Text } = Typography; - -export const SetupPassword = () => { - const { goto, setMnemonic } = useSetup(); - const [form] = Form.useForm<{ password: string; terms: boolean }>(); - - const [isLoading, setIsLoading] = useState(false); - - const isTermsAccepted = Form.useWatch('terms', form); - - const handleCreateEoa = async ({ password }: { password: string }) => { - if (!isTermsAccepted) return; - - setIsLoading(true); - AccountService.createAccount(password) - .then(() => AccountService.loginAccount(password)) - .then(() => WalletService.createEoa(Chain.GNOSIS)) - .then(({ mnemonic }: { mnemonic: string[] }) => { - setMnemonic(mnemonic); - goto(SetupScreen.SetupSeedPhrase); - }) - .catch((e) => { - console.error(e); - message.error('Unable to create account, please try again.'); - }) - .finally(() => setIsLoading(false)); - }; - - return ( - - - Create password - Come up with a strong password. - -
form.validateFields(['terms'])} - > - - - - - - - I agree to the Pearl’s{' '} - - Terms & Conditions - - - - - - - -
-
- ); -}; diff --git a/frontend/components/Setup/Create/SetupSeedPhrase.tsx b/frontend/components/Setup/Create/SetupSeedPhrase.tsx deleted file mode 100644 index 5b32a4cdb..000000000 --- a/frontend/components/Setup/Create/SetupSeedPhrase.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { CopyOutlined } from '@ant-design/icons'; -import { Button, Flex, message, Tag, Typography } from 'antd'; - -import { SetupScreen } from '@/enums/SetupScreen'; -import { useSetup } from '@/hooks/useSetup'; -import { copyToClipboard } from '@/utils/copyToClipboard'; - -import { CardFlex } from '../../styled/CardFlex'; -import { SetupCreateHeader } from './SetupCreateHeader'; - -export const SetupSeedPhrase = () => { - const { mnemonic, goto } = useSetup(); - - const handleNext = () => { - goto(SetupScreen.SetupBackupSigner); - }; - - return ( - - - Back up seed phrase - - Seed phrase is needed to regain access to your account if you forget the - password. - - - {mnemonic.map((word: string) => ( - {word} - ))} - - - - - ); -}; diff --git a/frontend/components/Setup/SetupRestore.tsx b/frontend/components/Setup/SetupRestore.tsx deleted file mode 100644 index 99f57d61d..000000000 --- a/frontend/components/Setup/SetupRestore.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { CloseOutlined } from '@ant-design/icons'; -import { Button, Col, Flex, Form, Input, Row, Tooltip, Typography } from 'antd'; -import isEmpty from 'lodash/isEmpty'; -import { memo, useMemo, useState } from 'react'; - -import { CardFlex } from '@/components/styled/CardFlex'; -import { CardSection } from '@/components/styled/CardSection'; -import { SetupScreen } from '@/enums/SetupScreen'; -import { useSetup } from '@/hooks/useSetup'; - -const ExitButton = memo(function ExitButton() { - const { goto } = useSetup(); - return ( - - ); -}); - -export const SetupRestoreMain = () => { - const { goto } = useSetup(); - return ( - - - Restore access - - - - } - > - - - You can recover the Pearl account access by providing the seed phrase - you received when setting up your account. - - - - - - - - If you don’t have the seed phrase but added a backup wallet to your - account, you can still restore your funds, but you won’t be able to - recover access to your Pearl account. - - - - - ); -}; - -const SEED_PHRASE_WORDS = 12; -export const SetupRestoreViaSeed = () => { - const { goto } = useSetup(); - - const [form] = Form.useForm(); - const [formValues, setFormValues] = useState<{ [name: string]: string }>({}); - - const onValuesChange = ( - changedValues: { [name: string]: string }, - allValues: { [name: string]: string }, - ) => setFormValues(allValues); - - const isComplete = useMemo( - () => - !isEmpty(formValues) && - Object.values(formValues).every((v: string) => v && v.trim()), - [formValues], - ); - - return ( - - - Restore via seed phrase - - - - } - > - - - To restore access to your Pearl account, enter the seed phrase you - received when setting up your account. - -
- - - {[...new Array(SEED_PHRASE_WORDS)].map((_, i) => ( - - - - - - ))} - - - -
-
-
- ); -}; - -export const SetupRestoreSetPassword = () => { - const { goto } = useSetup(); - const [password, setPassword] = useState(''); - return ( - - - Set password - - - - } - > - - - Come up with a strong password to get access to the Pearl account in - the future. - - - setPassword(e.target.value)} - placeholder="Password" - size="large" - value={password} - /> - - - - - ); -}; - -export const SetupRestoreViaBackup = () => { - return ( - - - Set password - - - - } - > - - - To restore access to the funds in your Pearl account, please follow - the instructions below. - - - Note that the backup wallet won’t give you access to your Pearl - account but only to the funds stored on it. - - - - ); -}; diff --git a/frontend/components/Setup/SetupWelcome.tsx b/frontend/components/Setup/SetupWelcome.tsx deleted file mode 100644 index 943ae59b8..000000000 --- a/frontend/components/Setup/SetupWelcome.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { - Button, - Card, - Flex, - Form, - Input, - message, - Spin, - Typography, -} from 'antd'; -import Image from 'next/image'; -import { useCallback, useEffect, useMemo, useState } from 'react'; - -import { AccountIsSetup } from '@/client'; -import { PageState } from '@/enums/PageState'; -import { SetupScreen } from '@/enums/SetupScreen'; -import { useBalance } from '@/hooks/useBalance'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { usePageState } from '@/hooks/usePageState'; -import { useSetup } from '@/hooks/useSetup'; -import { useWallet } from '@/hooks/useWallet'; -import { AccountService } from '@/service/Account'; - -import { FormFlex } from '../styled/FormFlex'; - -const { Title } = Typography; - -export const SetupWelcome = () => { - const electronApi = useElectronApi(); - const [isSetup, setIsSetup] = useState(null); - - useEffect(() => { - if (isSetup !== null) return; - setIsSetup(AccountIsSetup.Loading); - - AccountService.getAccount() - .then((res) => { - switch (res.is_setup) { - case true: - setIsSetup(AccountIsSetup.True); - break; - case false: - // Reset persistent state - // if creating new account - electronApi.store?.clear?.(); - setIsSetup(AccountIsSetup.False); - break; - default: - setIsSetup(AccountIsSetup.Error); - break; - } - }) - .catch((e) => { - console.error(e); - setIsSetup(AccountIsSetup.Error); - }); - }, [electronApi.store, isSetup]); - - const welcomeScreen = useMemo(() => { - switch (isSetup) { - case AccountIsSetup.True: - return ; - case AccountIsSetup.False: - return ; - case AccountIsSetup.Loading: - return ( - - - - ); - default: - return ( - - - Error determining account setup state. - - - ); - } - }, [isSetup]); - - return ( - - - Onboarding Robot - Pearl - - {welcomeScreen} - - ); -}; - -export const SetupWelcomeCreate = () => { - const { goto } = useSetup(); - - return ( - - - - - ); -}; - -export const SetupWelcomeLogin = () => { - const { goto } = useSetup(); - const { goto: gotoPage } = usePageState(); - - const { masterSafeAddress, wallets } = useWallet(); - const { isBalanceLoaded, eoaBalance } = useBalance(); - - const [isLoggingIn, setIsLoggingIn] = useState(false); - const [canNavigate, setCanNavigate] = useState(false); - - const [form] = Form.useForm(); - - const handleLogin = useCallback( - async ({ password }: { password: string }) => { - setIsLoggingIn(true); - AccountService.loginAccount(password) - .then(() => { - setCanNavigate(true); - }) - .catch((e) => { - console.error(e); - setIsLoggingIn(false); - message.error('Invalid password'); - }); - }, - [], - ); - - useEffect(() => { - // Navigate only when wallets and balances are loaded - // To check if some setup steps were missed - if (canNavigate && wallets?.length && isBalanceLoaded) { - setIsLoggingIn(false); - if (!eoaBalance?.ETH) { - goto(SetupScreen.SetupEoaFundingIncomplete); - } else if (!masterSafeAddress) { - goto(SetupScreen.SetupCreateSafe); - } else { - gotoPage(PageState.Main); - } - } - }, [ - canNavigate, - eoaBalance?.ETH, - goto, - gotoPage, - isBalanceLoaded, - masterSafeAddress, - wallets?.length, - ]); - - return ( - - - - - - - - - - ); -}; diff --git a/frontend/components/Setup/index.tsx b/frontend/components/Setup/index.tsx deleted file mode 100644 index 598ff10ac..000000000 --- a/frontend/components/Setup/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { useContext, useMemo } from 'react'; - -import { SetupContext } from '@/context/SetupProvider'; -import { SetupScreen } from '@/enums/SetupScreen'; - -import { SetupBackupSigner } from './Create/SetupBackupSigner'; -import { SetupCreateSafe } from './Create/SetupCreateSafe'; -import { SetupEoaFunding } from './Create/SetupEoaFunding'; -import { SetupPassword } from './Create/SetupPassword'; -import { SetupSeedPhrase } from './Create/SetupSeedPhrase'; -import { - SetupRestoreMain, - SetupRestoreSetPassword, - SetupRestoreViaBackup, - SetupRestoreViaSeed, -} from './SetupRestore'; -import { SetupWelcome } from './SetupWelcome'; - -export const Setup = () => { - const { setupObject } = useContext(SetupContext); - const setupScreen = useMemo(() => { - switch (setupObject.state) { - case SetupScreen.Welcome: - return ; - // Create account - case SetupScreen.SetupPassword: - return ; - case SetupScreen.SetupSeedPhrase: - return ; - case SetupScreen.SetupBackupSigner: - return ; - case SetupScreen.SetupEoaFunding: - return ; - case SetupScreen.SetupEoaFundingIncomplete: - return ; - case SetupScreen.SetupCreateSafe: - return ; - // Restore account - case SetupScreen.Restore: - return ; - case SetupScreen.RestoreViaSeed: - return ; - case SetupScreen.RestoreSetPassword: - return ; - case SetupScreen.RestoreViaBackup: - return ; - default: - return <>Error; - } - }, [setupObject.state]); - - return setupScreen; -}; diff --git a/frontend/components/styled/CardFlex.tsx b/frontend/components/styled/CardFlex.tsx deleted file mode 100644 index 38a20412d..000000000 --- a/frontend/components/styled/CardFlex.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Card } from 'antd'; -import styled from 'styled-components'; - -type CardFlexProps = { - gap?: number; -}; -export const CardFlex = styled(Card)` - .ant-card-body { - ${(props) => { - const { gap } = props; - - const gapStyle = gap ? `gap: ${gap}px;` : ''; - - return `${gapStyle}`; - }} - display: flex; - flex-direction: column; - } -`; diff --git a/frontend/components/styled/CardSection.tsx b/frontend/components/styled/CardSection.tsx deleted file mode 100644 index 0a1b653a0..000000000 --- a/frontend/components/styled/CardSection.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Flex, FlexProps } from 'antd'; -import styled from 'styled-components'; - -import { COLOR } from '@/constants/colors'; - -type CardSectionProps = FlexProps & { - bordertop?: 'true' | 'false'; - borderbottom?: 'true' | 'false'; - padding?: string; -}; - -/** - * A styled `Flex` component that represents a section of a card. - * @param {CardSectionProps} props - */ -export const CardSection = styled(Flex)` - ${(props) => { - const { padding, borderbottom, bordertop } = props; - - const paddingStyle = `padding: ${padding ?? '24px'};`; - const borderTopStyle = - bordertop === 'true' ? `border-top: 1px solid ${COLOR.BORDER_GRAY};` : ''; - const borderBottomStyle = - borderbottom === 'true' - ? `border-bottom: 1px solid ${COLOR.BORDER_GRAY};` - : ''; - - return ` - ${paddingStyle} - ${borderTopStyle} - ${borderBottomStyle} - `; - }} - border-collapse: collapse; - margin-left: -24px; - margin-right: -24px; - - &:nth-child(1) { - margin-top: -24px; - } - - &:nth-last-child(1) { - margin-bottom: -24px; - } -`; diff --git a/frontend/components/styled/FormFlex.tsx b/frontend/components/styled/FormFlex.tsx deleted file mode 100644 index 0799be636..000000000 --- a/frontend/components/styled/FormFlex.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { Form, FormProps } from 'antd'; -import styled from 'styled-components'; - -export const FormFlex = styled(Form)` - display: flex; - flex-direction: column; -`; diff --git a/frontend/constants/chains.ts b/frontend/constants/chains.ts deleted file mode 100644 index 5c944b011..000000000 --- a/frontend/constants/chains.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const CHAINS: { - [chain: string]: { - currency: string; - chainId: number; - minimumFunding: number; - }; -} = { - gnosis: { currency: 'XDAI', chainId: 100, minimumFunding: 1 }, -}; diff --git a/frontend/constants/colors.ts b/frontend/constants/colors.ts deleted file mode 100644 index 7625d03ee..000000000 --- a/frontend/constants/colors.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const COLOR = { - RED: '#EA3324', - GREEN_2: '#00F422', - PURPLE: '#722ed1', - PURPLE_DARK: '#36075F', - BLUE: '#1677FF', - ORANGE: '#FAAD14', - WHITE: '#ffffff', - BORDER_GRAY: '#DFE5EE', - BROWN: '#873800', - TEXT: '#1f2229', -}; diff --git a/frontend/constants/contractAddresses.ts b/frontend/constants/contractAddresses.ts deleted file mode 100644 index 823e9710b..000000000 --- a/frontend/constants/contractAddresses.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Chain } from '@/client'; -import { Address } from '@/types/Address'; - -export const MULTICALL_CONTRACT_ADDRESS: Address = - '0xcA11bde05977b3631167028862bE2a173976CA11'; // https://github.com/mds1/multicall, https://www.multicall3.com/ - -export const SERVICE_REGISTRY_L2_CONTRACT_ADDRESS: Record = { - [Chain.GNOSIS]: '0x9338b5153AE39BB89f50468E608eD9d764B755fD', -}; - -export const SERVICE_REGISTRY_TOKEN_UTILITY_CONTRACT_ADDRESS: Record< - number, - Address -> = { - [Chain.GNOSIS]: '0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8', -}; - -export const SERVICE_STAKING_TOKEN_MECH_USAGE_CONTRACT_ADDRESS: Record< - number, - Address -> = { - [Chain.GNOSIS]: '0xEE9F19b5DF06c7E8Bfc7B28745dcf944C504198A', -}; - -export const AGENT_MECH_CONTRACT_ADDRESS: Record = { - [Chain.GNOSIS]: '0x77af31De935740567Cf4fF1986D04B2c964A786a', -}; - -export const MECH_ACTIVITY_CHECKER_CONTRACT_ADDRESS: Record = { - [Chain.GNOSIS]: '0x155547857680A6D51bebC5603397488988DEb1c8', -}; diff --git a/frontend/constants/env.ts b/frontend/constants/env.ts deleted file mode 100644 index 0bd4ecf30..000000000 --- a/frontend/constants/env.ts +++ /dev/null @@ -1 +0,0 @@ -export const isDev = process.env.NODE_ENV === 'development'; diff --git a/frontend/constants/intervals.ts b/frontend/constants/intervals.ts deleted file mode 100644 index 50afd39d0..000000000 --- a/frontend/constants/intervals.ts +++ /dev/null @@ -1 +0,0 @@ -export const FIVE_SECONDS_INTERVAL = 5000; diff --git a/frontend/constants/providers.ts b/frontend/constants/providers.ts deleted file mode 100644 index 760924018..000000000 --- a/frontend/constants/providers.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ethers } from 'ethers'; -import { Provider } from 'ethers-multicall'; - -export const gnosisProvider = new ethers.providers.StaticJsonRpcProvider( - process.env.GNOSIS_RPC, -); - -export const gnosisMulticallProvider = new Provider(gnosisProvider, 100); diff --git a/frontend/constants/serviceTemplates.ts b/frontend/constants/serviceTemplates.ts deleted file mode 100644 index 5547bf63c..000000000 --- a/frontend/constants/serviceTemplates.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ServiceTemplate } from '@/client'; - -export const SERVICE_TEMPLATES: ServiceTemplate[] = [ - { - name: 'Trader Agent', - hash: 'bafybeidgjgjj5ul6xkubicbemppufgsbx5sr5rwhtrwttk2oivp5bkdnce', - description: 'Trader agent for omen prediction markets', - image: - 'https://operate.olas.network/_next/image?url=%2Fimages%2Fprediction-agent.png&w=3840&q=75', - configuration: { - trader_version: 'v0.16.4', - nft: 'bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq', - agent_id: 14, - threshold: 1, - use_staking: true, - cost_of_bond: 10000000000000000, - olas_cost_of_bond: 10000000000000000000, - olas_required_to_stake: 10000000000000000000, - monthly_gas_estimate: 10000000000000000000, - fund_requirements: { - agent: 100000000000000000, - safe: 5000000000000000000, - }, - }, - }, -]; diff --git a/frontend/constants/symbols.ts b/frontend/constants/symbols.ts deleted file mode 100644 index 14c16e9f2..000000000 --- a/frontend/constants/symbols.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const UNICODE_SYMBOLS = { - OLAS: '☴', - EXTERNAL_LINK: '↗', -}; diff --git a/frontend/constants/thresholds.ts b/frontend/constants/thresholds.ts deleted file mode 100644 index ced09c8c5..000000000 --- a/frontend/constants/thresholds.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Chain } from '@/client'; - -export const MIN_ETH_BALANCE_THRESHOLDS = { - [Chain.GNOSIS]: { - safeCreation: 1.5, - safeAddSigner: 0.1, - }, -}; - -export const LOW_BALANCE = 0.5; diff --git a/frontend/constants/tokens.ts b/frontend/constants/tokens.ts deleted file mode 100644 index 89940ab80..000000000 --- a/frontend/constants/tokens.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Address } from '@/types/Address'; - -export const TOKENS: { [chain: string]: { [token: string]: Address } } = { - gnosis: { - OLAS: '0xcE11e14225575945b8E6Dc0D4F2dD4C570f79d9f', - }, -}; diff --git a/frontend/constants/urls.ts b/frontend/constants/urls.ts deleted file mode 100644 index 9336660f6..000000000 --- a/frontend/constants/urls.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const BACKEND_URL: string = `http://localhost:${process.env.NODE_ENV === 'production' ? 8765 : 8000}/api`; -export const COW_SWAP_GNOSIS_XDAI_OLAS_URL: string = - 'https://swap.cow.fi/#/100/swap/WXDAI/OLAS'; - -export const SUPPORT_URL = - 'https://discord.com/channels/899649805582737479/1244588374736502847'; -export const FAQ_URL = 'https://olas.network/operate#faq'; diff --git a/frontend/context/BalanceProvider.tsx b/frontend/context/BalanceProvider.tsx deleted file mode 100644 index 12c5400ec..000000000 --- a/frontend/context/BalanceProvider.tsx +++ /dev/null @@ -1,300 +0,0 @@ -import { message } from 'antd'; -import { isAddress } from 'ethers/lib/utils'; -import { isNumber } from 'lodash'; -import { ValueOf } from 'next/dist/shared/lib/constants'; -import { - createContext, - Dispatch, - PropsWithChildren, - SetStateAction, - useCallback, - useContext, - useMemo, - useState, -} from 'react'; -import { useInterval } from 'usehooks-ts'; - -import { Wallet } from '@/client'; -import { FIVE_SECONDS_INTERVAL } from '@/constants/intervals'; -import { TOKENS } from '@/constants/tokens'; -import { ServiceRegistryL2ServiceState } from '@/enums/ServiceRegistryL2ServiceState'; -import { Token } from '@/enums/Token'; -import { AutonolasService } from '@/service/Autonolas'; -import { EthersService } from '@/service/Ethers'; -import MulticallService from '@/service/Multicall'; -import { Address } from '@/types/Address'; -import { - AddressNumberRecord, - WalletAddressNumberRecord, -} from '@/types/Records'; - -import { OnlineStatusContext } from './OnlineStatusProvider'; -import { RewardContext } from './RewardProvider'; -import { ServicesContext } from './ServicesProvider'; -import { WalletContext } from './WalletProvider'; - -export const BalanceContext = createContext<{ - isLoaded: boolean; - setIsLoaded: Dispatch>; - isBalanceLoaded: boolean; - olasBondBalance?: number; - olasDepositBalance?: number; - eoaBalance?: ValueOf; - safeBalance?: ValueOf; - totalEthBalance?: number; - totalOlasBalance?: number; - wallets?: Wallet[]; - walletBalances: WalletAddressNumberRecord; - updateBalances: () => Promise; - setIsPaused: Dispatch>; - totalOlasStakedBalance?: number; -}>({ - isLoaded: false, - setIsLoaded: () => {}, - isBalanceLoaded: false, - olasBondBalance: undefined, - olasDepositBalance: undefined, - eoaBalance: undefined, - safeBalance: undefined, - totalEthBalance: undefined, - totalOlasBalance: undefined, - wallets: undefined, - walletBalances: {}, - updateBalances: async () => {}, - setIsPaused: () => {}, - totalOlasStakedBalance: undefined, -}); - -export const BalanceProvider = ({ children }: PropsWithChildren) => { - const { isOnline } = useContext(OnlineStatusContext); - const { wallets, masterEoaAddress, masterSafeAddress } = - useContext(WalletContext); - const { services, serviceAddresses } = useContext(ServicesContext); - const { optimisticRewardsEarnedForEpoch, accruedServiceStakingRewards } = - useContext(RewardContext); - - const [isLoaded, setIsLoaded] = useState(false); - const [isPaused, setIsPaused] = useState(false); - const [olasDepositBalance, setOlasDepositBalance] = useState(); - const [olasBondBalance, setOlasBondBalance] = useState(); - const [isBalanceLoaded, setIsBalanceLoaded] = useState(false); - const [walletBalances, setWalletBalances] = - useState({}); - - const totalEthBalance: number | undefined = useMemo(() => { - if (!isLoaded) return; - return Object.values(walletBalances).reduce( - (acc: number, walletBalance) => acc + walletBalance.ETH, - 0, - ); - }, [isLoaded, walletBalances]); - - const totalOlasBalance: number | undefined = useMemo(() => { - if (!isLoaded) return; - - const sumWalletBalances = Object.values(walletBalances).reduce( - (acc: number, walletBalance) => acc + walletBalance.OLAS, - 0, - ); - - const total = - sumWalletBalances + - (olasDepositBalance ?? 0) + - (olasBondBalance ?? 0) + - (optimisticRewardsEarnedForEpoch ?? 0) + - (accruedServiceStakingRewards ?? 0); - - return total; - }, [ - accruedServiceStakingRewards, - isLoaded, - olasBondBalance, - olasDepositBalance, - optimisticRewardsEarnedForEpoch, - walletBalances, - ]); - - const totalOlasStakedBalance: number | undefined = useMemo(() => { - if (!isLoaded) return; - return (olasBondBalance ?? 0) + (olasDepositBalance ?? 0); - }, [isLoaded, olasBondBalance, olasDepositBalance]); - - const updateBalances = useCallback(async (): Promise => { - if (!masterEoaAddress) return; - if (!serviceAddresses) return; - - try { - const walletAddresses: Address[] = []; - if (masterEoaAddress) walletAddresses.push(masterEoaAddress); - if (masterSafeAddress) walletAddresses.push(masterSafeAddress); - if (serviceAddresses) walletAddresses.push(...serviceAddresses); - - const walletBalances = await getWalletBalances(walletAddresses); - if (!walletBalances) return; - - setWalletBalances(walletBalances); - - const serviceId = services?.[0]?.chain_data.token; - - if (!isNumber(serviceId)) { - setIsLoaded(true); - setIsBalanceLoaded(true); - return; - } - - if (masterSafeAddress && serviceId) { - const { depositValue, bondValue, serviceState } = - await AutonolasService.getServiceRegistryInfo( - masterSafeAddress, - serviceId, - ); - - switch (serviceState) { - case ServiceRegistryL2ServiceState.NonExistent: - setOlasBondBalance(0); - setOlasDepositBalance(0); - break; - case ServiceRegistryL2ServiceState.PreRegistration: - setOlasBondBalance(0); - setOlasDepositBalance(0); - break; - case ServiceRegistryL2ServiceState.ActiveRegistration: - setOlasBondBalance(0); - setOlasDepositBalance(depositValue); - break; - case ServiceRegistryL2ServiceState.FinishedRegistration: - setOlasBondBalance(bondValue); - setOlasDepositBalance(depositValue); - break; - case ServiceRegistryL2ServiceState.Deployed: - setOlasBondBalance(bondValue); - setOlasDepositBalance(depositValue); - break; - case ServiceRegistryL2ServiceState.TerminatedBonded: - setOlasBondBalance(bondValue); - setOlasDepositBalance(0); - break; - } - } - - // update balance loaded state - setIsLoaded(true); - setIsBalanceLoaded(true); - } catch (error) { - console.error(error); - message.error('Unable to retrieve wallet balances'); - setIsBalanceLoaded(true); - } - }, [masterEoaAddress, masterSafeAddress, serviceAddresses, services]); - - const eoaBalance = useMemo( - () => masterEoaAddress && walletBalances[masterEoaAddress], - [masterEoaAddress, walletBalances], - ); - const safeBalance = useMemo( - () => masterSafeAddress && walletBalances[masterSafeAddress], - [masterSafeAddress, walletBalances], - ); - - useInterval( - () => { - updateBalances(); - }, - isPaused || !isOnline ? null : FIVE_SECONDS_INTERVAL, - ); - - return ( - - {children} - - ); -}; - -export const getEthBalances = async ( - walletAddresses: Address[], -): Promise => { - const rpcIsValid = await EthersService.checkRpc(`${process.env.GNOSIS_RPC}`); - if (!rpcIsValid) return; - - const ethBalances = await MulticallService.getEthBalances(walletAddresses); - - return ethBalances; -}; - -export const getOlasBalances = async ( - walletAddresses: Address[], -): Promise => { - const rpcIsValid = await EthersService.checkRpc(`${process.env.GNOSIS_RPC}`); - if (!rpcIsValid) return; - - const olasBalances = await MulticallService.getErc20Balances( - walletAddresses, - TOKENS.gnosis.OLAS, - ); - - return olasBalances; -}; - -export const getWalletAddresses = ( - wallets: Wallet[], - serviceAddresses: Address[], -): Address[] => { - const walletsToCheck: Address[] = []; - - for (const wallet of wallets) { - const { address, safe } = wallet; - if (address && isAddress(address)) { - walletsToCheck.push(address); - } - if (safe && isAddress(safe)) { - walletsToCheck.push(safe); - } - } - - for (const serviceAddress of serviceAddresses) { - if (serviceAddress && isAddress(`${serviceAddress}`)) { - walletsToCheck.push(serviceAddress); - } - } - - return walletsToCheck; -}; - -export const getWalletBalances = async ( - walletAddresses: Address[], -): Promise => { - const [ethBalances, olasBalances] = await Promise.all([ - getEthBalances(walletAddresses), - getOlasBalances(walletAddresses), - ]); - - if (!ethBalances) return; - if (!olasBalances) return; - - const tempWalletBalances: WalletAddressNumberRecord = {}; - for (const [address, balance] of Object.entries(ethBalances)) { - tempWalletBalances[address as Address] = { - [Token.ETH]: balance, - [Token.OLAS]: olasBalances[address as Address], - }; - } - - return tempWalletBalances; -}; diff --git a/frontend/context/ElectronApiProvider.tsx b/frontend/context/ElectronApiProvider.tsx deleted file mode 100644 index 01f85bdf9..000000000 --- a/frontend/context/ElectronApiProvider.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { get } from 'lodash'; -import { createContext, PropsWithChildren } from 'react'; - -import { ElectronStore, ElectronTrayIconStatus } from '@/types/ElectronApi'; - -type ElectronApiContextProps = { - closeApp?: () => void; - minimizeApp?: () => void; - setTrayIcon?: (status: ElectronTrayIconStatus) => void; - ipcRenderer?: { - send?: (channel: string, data: unknown) => void; // send messages to main process - on?: ( - channel: string, - func: (event: unknown, data: unknown) => void, - ) => void; // listen to messages from main process - invoke?: (channel: string, data: unknown) => Promise; // send message to main process and get Promise response - }; - store?: { - store?: () => Promise; - get?: (key: string) => Promise; - set?: (key: string, value: unknown) => Promise; - delete?: (key: string) => Promise; - clear?: () => Promise; - }; - setAppHeight?: (height: unknown) => void; - notifyAgentRunning?: () => void; - showNotification?: (title: string, body?: string) => void; - saveLogs?: (data: { - store?: ElectronStore; - debugData?: Record; - }) => Promise<{ success: true; dirPath: string } | { success?: false }>; - openPath?: (filePath: string) => void; -}; - -export const ElectronApiContext = createContext({ - closeApp: () => {}, - minimizeApp: () => {}, - setTrayIcon: () => {}, - ipcRenderer: { - send: () => {}, - on: () => {}, - invoke: async () => {}, - }, - store: { - store: async () => ({}), - get: async () => {}, - set: async () => {}, - delete: async () => {}, - clear: async () => {}, - }, - setAppHeight: () => {}, - saveLogs: async () => ({ success: false }), - openPath: () => {}, -}); - -export const ElectronApiProvider = ({ children }: PropsWithChildren) => { - const getElectronApiFunction = (functionNameInWindow: string) => { - if (typeof window === 'undefined') return; - - const fn = get(window, `electronAPI.${functionNameInWindow}`); - if (!fn || typeof fn !== 'function') { - throw new Error( - `Function ${functionNameInWindow} not found in window.electronAPI`, - ); - } - - return fn; - }; - - return ( - - {children} - - ); -}; diff --git a/frontend/context/MasterSafeProvider.tsx b/frontend/context/MasterSafeProvider.tsx deleted file mode 100644 index 46daeaba1..000000000 --- a/frontend/context/MasterSafeProvider.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { - createContext, - PropsWithChildren, - useContext, - useMemo, - useState, -} from 'react'; -import { useInterval } from 'usehooks-ts'; - -import { FIVE_SECONDS_INTERVAL } from '@/constants/intervals'; -import { GnosisSafeService } from '@/service/GnosisSafe'; -import { Address } from '@/types/Address'; - -import { OnlineStatusContext } from './OnlineStatusProvider'; -import { WalletContext } from './WalletProvider'; - -export const MasterSafeContext = createContext<{ - backupSafeAddress?: Address; - masterSafeAddress?: Address; - masterEoaAddress?: Address; - masterSafeOwners?: Address[]; - updateMasterSafeOwners?: () => Promise; -}>({ - backupSafeAddress: undefined, - masterSafeAddress: undefined, - masterEoaAddress: undefined, - masterSafeOwners: undefined, - updateMasterSafeOwners: async () => {}, -}); - -export const MasterSafeProvider = ({ children }: PropsWithChildren) => { - const { isOnline } = useContext(OnlineStatusContext); - const { masterSafeAddress, masterEoaAddress } = useContext(WalletContext); - - const [masterSafeOwners, setMasterSafeOwners] = useState(); - - const backupSafeAddress = useMemo
(() => { - if (!masterEoaAddress) return; - if (!masterSafeOwners) return; - if (!masterSafeOwners.length) return; - if (!masterSafeOwners.includes(masterEoaAddress)) { - console.error('Safe not owned by master EOA'); - return; - } - - const currentBackupAddress = masterSafeOwners.find( - (address) => address !== masterEoaAddress, - ); - - return currentBackupAddress; - }, [masterEoaAddress, masterSafeOwners]); - - const updateMasterSafeOwners = async () => { - if (!masterSafeAddress) return; - try { - const safeSigners = await GnosisSafeService.getOwners({ - address: masterSafeAddress, - }); - if (!safeSigners) return; - setMasterSafeOwners(safeSigners); - } catch (error) { - console.error('Error fetching safe owners', error); - } - }; - - useInterval( - updateMasterSafeOwners, - (masterSafeOwners && masterSafeOwners.length >= 2) || !isOnline - ? null - : FIVE_SECONDS_INTERVAL, - ); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/OnlineStatusProvider.tsx b/frontend/context/OnlineStatusProvider.tsx deleted file mode 100644 index c1bcfc2f2..000000000 --- a/frontend/context/OnlineStatusProvider.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { - createContext, - PropsWithChildren, - useEffect, - useState, -} from 'react'; - -type OnlineStatusContextProps = { - isOnline: boolean; -}; - -const initialState = { - isOnline: true, -}; - -const OnlineStatusContext = - createContext(initialState); - -const OnlineStatusProvider = ({ children }: PropsWithChildren) => { - const [isOnline, setIsOnline] = useState(initialState.isOnline); - - useEffect(() => { - const updateOnlineStatus = () => { - setIsOnline(navigator.onLine); - }; - - window.addEventListener('online', updateOnlineStatus); - window.addEventListener('offline', updateOnlineStatus); - - return () => { - window.removeEventListener('online', updateOnlineStatus); - window.removeEventListener('offline', updateOnlineStatus); - }; - }, []); - - return ( - - {children} - - ); -}; - -export { OnlineStatusContext, OnlineStatusProvider }; diff --git a/frontend/context/PageStateProvider.tsx b/frontend/context/PageStateProvider.tsx deleted file mode 100644 index e176a246f..000000000 --- a/frontend/context/PageStateProvider.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { - createContext, - Dispatch, - PropsWithChildren, - SetStateAction, - useState, -} from 'react'; - -import { PageState } from '@/enums/PageState'; - -type PageStateContextType = { - pageState: PageState; - setPageState: Dispatch>; -}; - -export const PageStateContext = createContext({ - pageState: PageState.Setup, - setPageState: () => {}, -}); - -export const PageStateProvider = ({ children }: PropsWithChildren) => { - const [pageState, setPageState] = useState(PageState.Setup); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/RewardProvider.tsx b/frontend/context/RewardProvider.tsx deleted file mode 100644 index 0e67a002a..000000000 --- a/frontend/context/RewardProvider.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { ethers } from 'ethers'; -import { - createContext, - PropsWithChildren, - useCallback, - useContext, - useEffect, - useMemo, - useState, -} from 'react'; -import { useInterval } from 'usehooks-ts'; - -import { FIVE_SECONDS_INTERVAL } from '@/constants/intervals'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { useStore } from '@/hooks/useStore'; -import { AutonolasService } from '@/service/Autonolas'; - -import { OnlineStatusContext } from './OnlineStatusProvider'; -import { ServicesContext } from './ServicesProvider'; - -export const RewardContext = createContext<{ - accruedServiceStakingRewards?: number; - availableRewardsForEpoch?: number; - availableRewardsForEpochEth?: number; - isEligibleForRewards?: boolean; - optimisticRewardsEarnedForEpoch?: number; - minimumStakedAmountRequired?: number; - updateRewards: () => Promise; -}>({ - accruedServiceStakingRewards: undefined, - availableRewardsForEpoch: undefined, - availableRewardsForEpochEth: undefined, - isEligibleForRewards: undefined, - optimisticRewardsEarnedForEpoch: undefined, - minimumStakedAmountRequired: undefined, - updateRewards: async () => {}, -}); - -export const RewardProvider = ({ children }: PropsWithChildren) => { - const { isOnline } = useContext(OnlineStatusContext); - const { services } = useContext(ServicesContext); - const service = useMemo(() => services?.[0], [services]); - const { storeState } = useStore(); - const electronApi = useElectronApi(); - - const [accruedServiceStakingRewards, setAccruedServiceStakingRewards] = - useState(); - const [availableRewardsForEpoch, setAvailableRewardsForEpoch] = - useState(); - const [isEligibleForRewards, setIsEligibleForRewards] = useState(); - - const availableRewardsForEpochEth = useMemo(() => { - if (!availableRewardsForEpoch) return; - - const formatRewardsEth = parseFloat( - ethers.utils.formatUnits(`${availableRewardsForEpoch}`, 18), - ); - - return formatRewardsEth; - }, [availableRewardsForEpoch]); - - const optimisticRewardsEarnedForEpoch = useMemo(() => { - if (isEligibleForRewards && availableRewardsForEpochEth) { - return availableRewardsForEpochEth; - } - return; - }, [availableRewardsForEpochEth, isEligibleForRewards]); - - const updateRewards = useCallback(async (): Promise => { - let stakingRewardsInfoPromise; - if (service?.chain_data?.multisig && service?.chain_data?.token) { - stakingRewardsInfoPromise = AutonolasService.getAgentStakingRewardsInfo({ - agentMultisigAddress: service?.chain_data?.multisig, - serviceId: service?.chain_data?.token, - }); - } - - const epochRewardsPromise = AutonolasService.getAvailableRewardsForEpoch(); - const [stakingRewardsInfo, rewards] = await Promise.all([ - stakingRewardsInfoPromise, - epochRewardsPromise, - ]); - - setIsEligibleForRewards(stakingRewardsInfo?.isEligibleForRewards); - setAccruedServiceStakingRewards( - stakingRewardsInfo?.accruedServiceStakingRewards, - ); - setAvailableRewardsForEpoch(rewards); - }, [service]); - - useEffect(() => { - if (isEligibleForRewards && !storeState?.firstStakingRewardAchieved) { - electronApi.store?.set?.('firstStakingRewardAchieved', true); - } - }, [ - electronApi.store, - isEligibleForRewards, - storeState?.firstStakingRewardAchieved, - ]); - - useInterval( - async () => updateRewards(), - isOnline ? FIVE_SECONDS_INTERVAL : null, - ); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/ServicesProvider.tsx b/frontend/context/ServicesProvider.tsx deleted file mode 100644 index 8b44e2612..000000000 --- a/frontend/context/ServicesProvider.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import { message } from 'antd'; -import { - createContext, - Dispatch, - PropsWithChildren, - SetStateAction, - useCallback, - useContext, - useMemo, - useState, -} from 'react'; -import { useInterval } from 'usehooks-ts'; - -import { DeploymentStatus, Service } from '@/client'; -import { FIVE_SECONDS_INTERVAL } from '@/constants/intervals'; -import { ServicesService } from '@/service/Services'; -import { Address } from '@/types/Address'; - -import { OnlineStatusContext } from './OnlineStatusProvider'; - -type ServicesContextProps = { - services?: Service[]; - serviceAddresses?: Address[]; - setServices: Dispatch>; - serviceStatus: DeploymentStatus | undefined; - setServiceStatus: Dispatch>; - updateServicesState: () => Promise; - updateServiceStatus: () => Promise; - hasInitialLoaded: boolean; - setHasInitialLoaded: Dispatch>; - setIsPaused: Dispatch>; -}; - -export const ServicesContext = createContext({ - services: undefined, - serviceAddresses: undefined, - setServices: () => {}, - serviceStatus: undefined, - setServiceStatus: () => {}, - updateServicesState: async () => {}, - updateServiceStatus: async () => {}, - hasInitialLoaded: false, - setHasInitialLoaded: () => {}, - setIsPaused: () => {}, -}); - -export const ServicesProvider = ({ children }: PropsWithChildren) => { - const { isOnline } = useContext(OnlineStatusContext); - - const [services, setServices] = useState(); - - const [serviceStatus, setServiceStatus] = useState< - DeploymentStatus | undefined - >(); - const [hasInitialLoaded, setHasInitialLoaded] = useState(false); - const [isPaused, setIsPaused] = useState(false); - - const serviceAddresses = useMemo( - () => - services?.reduce((acc, service: Service) => { - if (service.chain_data.instances) { - acc.push(...service.chain_data.instances); - } - if (service.chain_data.multisig) { - acc.push(service.chain_data.multisig); - } - return acc; - }, []), - [services], - ); - - const updateServicesState = useCallback( - async (): Promise => - ServicesService.getServices() - .then((data: Service[]) => { - if (!Array.isArray(data)) return; - setServices(data); - setHasInitialLoaded(true); - }) - .catch((e) => { - message.error(e.message); - }), - [], - ); - - const updateServiceStatus = useCallback(async () => { - if (!services?.[0]) return; - const serviceStatus = await ServicesService.getDeployment(services[0].hash); - setServiceStatus(serviceStatus.status); - }, [services]); - - // Update service state - useInterval( - () => - updateServicesState() - .then(() => updateServiceStatus()) - .catch((e) => message.error(e.message)), - isOnline && !isPaused ? FIVE_SECONDS_INTERVAL : null, - ); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/SettingsProvider.tsx b/frontend/context/SettingsProvider.tsx deleted file mode 100644 index 6bdb43a15..000000000 --- a/frontend/context/SettingsProvider.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { createContext, PropsWithChildren, useState } from 'react'; - -import { SettingsScreen } from '@/enums/SettingsScreen'; - -export const SettingsContext = createContext<{ - screen: SettingsScreen; - goto: (screen: SettingsScreen) => void; -}>({ - screen: SettingsScreen.Main, - goto: () => {}, -}); - -export const SettingsProvider = ({ children }: PropsWithChildren) => { - const [screen, setScreen] = useState(SettingsScreen.Main); - - const goto = (screen: SettingsScreen) => setScreen(screen); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/SetupProvider.tsx b/frontend/context/SetupProvider.tsx deleted file mode 100644 index d833bf2ee..000000000 --- a/frontend/context/SetupProvider.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { - createContext, - Dispatch, - PropsWithChildren, - SetStateAction, - useState, -} from 'react'; - -import { SetupScreen } from '@/enums/SetupScreen'; -import { Address } from '@/types/Address'; - -type SetupObjectType = { - state: SetupScreen; - mnemonic: string[]; - backupSigner?: Address; -}; - -type SetupContextType = { - setupObject: SetupObjectType; - setSetupObject: Dispatch>; -}; - -export const SetupContext = createContext({ - setupObject: { - state: SetupScreen.Welcome, - mnemonic: [], - backupSigner: undefined, - }, - setSetupObject: () => {}, -}); - -export const SetupProvider = ({ children }: PropsWithChildren) => { - const [setupObject, setSetupObject] = useState({ - state: SetupScreen.Welcome, - mnemonic: [], - backupSigner: undefined, - }); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/StakingContractInfoProvider.tsx b/frontend/context/StakingContractInfoProvider.tsx deleted file mode 100644 index 20d56ac2f..000000000 --- a/frontend/context/StakingContractInfoProvider.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { - createContext, - PropsWithChildren, - useCallback, - useContext, - useMemo, - useState, -} from 'react'; -import { useInterval } from 'usehooks-ts'; - -import { FIVE_SECONDS_INTERVAL } from '@/constants/intervals'; -import { AutonolasService } from '@/service/Autonolas'; -import { StakingContractInfo } from '@/types/Autonolas'; - -import { ServicesContext } from './ServicesProvider'; - -type StakingContractInfoContextProps = { - updateStakingContractInfo: () => Promise; - stakingContractInfo?: StakingContractInfo; -}; - -export const StakingContractInfoContext = - createContext({ - updateStakingContractInfo: async () => {}, - stakingContractInfo: undefined, - }); - -export const StakingContractInfoProvider = ({ - children, -}: PropsWithChildren) => { - const { services } = useContext(ServicesContext); - const serviceId = useMemo(() => services?.[0]?.chain_data?.token, [services]); - - const [stakingContractInfo, setStakingContractInfo] = - useState(); - - const updateStakingContractInfo = useCallback(async () => { - if (!serviceId) return; - - const info = await AutonolasService.getStakingContractInfo(serviceId); - if (!info) return; - - setStakingContractInfo(info); - }, [serviceId]); - - useInterval(updateStakingContractInfo, FIVE_SECONDS_INTERVAL); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/StoreProvider.tsx b/frontend/context/StoreProvider.tsx deleted file mode 100644 index 63ce0ed88..000000000 --- a/frontend/context/StoreProvider.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { - createContext, - PropsWithChildren, - useCallback, - useContext, - useEffect, - useState, -} from 'react'; - -import type { ElectronStore } from '@/types/ElectronApi'; - -import { ElectronApiContext } from './ElectronApiProvider'; - -export const StoreContext = createContext<{ storeState?: ElectronStore }>({ - storeState: undefined, -}); - -export const StoreProvider = ({ children }: PropsWithChildren) => { - const { store, ipcRenderer } = useContext(ElectronApiContext); - const [storeState, setStoreState] = useState(); - - const setupStore = useCallback(async () => { - const tempStore = await store?.store?.(); - setStoreState(tempStore); - ipcRenderer?.on?.('store-changed', (_event: unknown, data: unknown) => { - setStoreState(data as ElectronStore); - }); - }, [ipcRenderer, store]); - - useEffect(() => { - if (!storeState) setupStore().catch(console.error); - }, [setupStore, storeState]); - - return ( - - {children} - - ); -}; diff --git a/frontend/context/WalletProvider.tsx b/frontend/context/WalletProvider.tsx deleted file mode 100644 index 21c02606a..000000000 --- a/frontend/context/WalletProvider.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { createContext, PropsWithChildren, useContext, useState } from 'react'; -import { useInterval } from 'usehooks-ts'; - -import { Wallet } from '@/client'; -import { FIVE_SECONDS_INTERVAL } from '@/constants/intervals'; -import { WalletService } from '@/service/Wallet'; -import { Address } from '@/types/Address'; - -import { OnlineStatusContext } from './OnlineStatusProvider'; - -export const WalletContext = createContext<{ - masterEoaAddress?: Address; - masterSafeAddress?: Address; - wallets?: Wallet[]; - updateWallets: () => Promise; -}>({ - masterEoaAddress: undefined, - masterSafeAddress: undefined, - wallets: undefined, - updateWallets: async () => {}, -}); - -export const WalletProvider = ({ children }: PropsWithChildren) => { - const { isOnline } = useContext(OnlineStatusContext); - - const [wallets, setWallets] = useState(); - - const masterEoaAddress: Address | undefined = wallets?.[0]?.address; - const masterSafeAddress: Address | undefined = wallets?.[0]?.safe; - - const updateWallets = async () => { - const wallets = await WalletService.getWallets(); - if (!wallets) return; - setWallets(wallets); - }; - - useInterval(updateWallets, isOnline ? FIVE_SECONDS_INTERVAL : null); - - return ( - - {children} - - ); -}; diff --git a/frontend/enums/PageState.ts b/frontend/enums/PageState.ts deleted file mode 100644 index 7a670f683..000000000 --- a/frontend/enums/PageState.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum PageState { - Setup, - Main, - Settings, - HelpAndSupport, - Receive, - Send, -} diff --git a/frontend/enums/ServiceRegistryL2ServiceState.ts b/frontend/enums/ServiceRegistryL2ServiceState.ts deleted file mode 100644 index 52174fe7e..000000000 --- a/frontend/enums/ServiceRegistryL2ServiceState.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Reflects the state of a service in the ServiceRegistryL2 contract (i.e. https://gnosisscan.io/address/0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8) -export enum ServiceRegistryL2ServiceState { - NonExistent, - PreRegistration, - ActiveRegistration, - FinishedRegistration, - Deployed, - TerminatedBonded, -} diff --git a/frontend/enums/SettingsScreen.ts b/frontend/enums/SettingsScreen.ts deleted file mode 100644 index 0743775b0..000000000 --- a/frontend/enums/SettingsScreen.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum SettingsScreen { - Main, - AddBackupWallet, -} diff --git a/frontend/enums/SetupScreen.ts b/frontend/enums/SetupScreen.ts deleted file mode 100644 index 9003425c8..000000000 --- a/frontend/enums/SetupScreen.ts +++ /dev/null @@ -1,14 +0,0 @@ -export enum SetupScreen { - Loading, - Welcome, - SetupPassword, - SetupSeedPhrase, - SetupBackupSigner, - SetupEoaFunding, - SetupEoaFundingIncomplete, - SetupCreateSafe, - Restore, - RestoreViaSeed, - RestoreSetPassword, - RestoreViaBackup, -} diff --git a/frontend/enums/Token.ts b/frontend/enums/Token.ts deleted file mode 100644 index 3316710ff..000000000 --- a/frontend/enums/Token.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum Token { - ETH = 'ETH', - OLAS = 'OLAS', -} diff --git a/frontend/hooks/useBalance.ts b/frontend/hooks/useBalance.ts deleted file mode 100644 index c8d21df91..000000000 --- a/frontend/hooks/useBalance.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { useContext } from 'react'; - -import { BalanceContext } from '@/context/BalanceProvider'; - -export const useBalance = () => useContext(BalanceContext); diff --git a/frontend/hooks/useElectronApi.ts b/frontend/hooks/useElectronApi.ts deleted file mode 100644 index a4cf2aa46..000000000 --- a/frontend/hooks/useElectronApi.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { useContext } from 'react'; - -import { ElectronApiContext } from '@/context/ElectronApiProvider'; - -export const useElectronApi = () => useContext(ElectronApiContext); diff --git a/frontend/hooks/useLogs.ts b/frontend/hooks/useLogs.ts deleted file mode 100644 index b72e59c3b..000000000 --- a/frontend/hooks/useLogs.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { useMemo } from 'react'; - -import { DeploymentStatus } from '@/client'; - -import { useBalance } from './useBalance'; -import { useMasterSafe } from './useMasterSafe'; -import { useServices } from './useServices'; -import { useStore } from './useStore'; -import { useWallet } from './useWallet'; - -const useAddressesLogs = () => { - const { wallets, masterEoaAddress, masterSafeAddress } = useWallet(); - - const { backupSafeAddress, masterSafeOwners } = useMasterSafe(); - - return { - isLoaded: wallets?.length !== 0 && !!masterSafeOwners, - data: [ - { backupSafeAddress: backupSafeAddress ?? 'undefined' }, - { masterSafeAddress: masterSafeAddress ?? 'undefined' }, - { masterEoaAddress: masterEoaAddress ?? 'undefined' }, - { masterSafeOwners: masterSafeOwners ?? 'undefined' }, - ], - }; -}; - -const useBalancesLogs = () => { - const { - isBalanceLoaded, - totalEthBalance, - totalOlasBalance, - wallets, - walletBalances, - totalOlasStakedBalance, - } = useBalance(); - - return { - isLoaded: isBalanceLoaded, - data: [ - { wallets: wallets ?? 'undefined' }, - { walletBalances: walletBalances ?? 'undefined' }, - { totalOlasStakedBalance: totalOlasStakedBalance ?? 'undefined' }, - { totalEthBalance: totalEthBalance ?? 'undefined' }, - { totalOlasBalance: totalOlasBalance ?? 'undefined' }, - ], - }; -}; - -const useServicesLogs = () => { - const { serviceStatus, services, hasInitialLoaded } = useServices(); - - return { - isLoaded: hasInitialLoaded, - data: { - serviceStatus: serviceStatus - ? DeploymentStatus[serviceStatus] - : 'undefined', - services: - services?.map((item) => ({ - ...item, - keys: item.keys.map((key) => key.address), - })) ?? 'undefined', - }, - }; -}; - -export const useLogs = () => { - const { storeState } = useStore(); - - const { isLoaded: isServicesLoaded, data: services } = useServicesLogs(); - const { isLoaded: isBalancesLoaded, data: balances } = useBalancesLogs(); - const { isLoaded: isAddressesLoaded, data: addresses } = useAddressesLogs(); - - const logs = useMemo(() => { - if (isServicesLoaded && isBalancesLoaded && isAddressesLoaded) { - return { - store: storeState, - debugData: { - services, - addresses, - balances, - }, - }; - } - }, [ - addresses, - balances, - isAddressesLoaded, - isBalancesLoaded, - isServicesLoaded, - services, - storeState, - ]); - - return logs; -}; diff --git a/frontend/hooks/useMasterSafe.ts b/frontend/hooks/useMasterSafe.ts deleted file mode 100644 index ec5d52059..000000000 --- a/frontend/hooks/useMasterSafe.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { useContext } from 'react'; - -import { MasterSafeContext } from '@/context/MasterSafeProvider'; - -export const useMasterSafe = () => { - return useContext(MasterSafeContext); -}; diff --git a/frontend/hooks/usePageState.ts b/frontend/hooks/usePageState.ts deleted file mode 100644 index 45dd74d62..000000000 --- a/frontend/hooks/usePageState.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useContext } from 'react'; - -import { PageStateContext } from '@/context/PageStateProvider'; -import { PageState } from '@/enums/PageState'; - -export const usePageState = () => { - const { pageState, setPageState } = useContext(PageStateContext); - - const goto = (state: PageState) => { - setPageState(state); - }; - - return { pageState, setPageState, goto }; -}; diff --git a/frontend/hooks/useReward.ts b/frontend/hooks/useReward.ts deleted file mode 100644 index c269a4430..000000000 --- a/frontend/hooks/useReward.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useContext } from 'react'; - -import { RewardContext } from '@/context/RewardProvider'; - -export const useReward = () => { - const { - availableRewardsForEpoch, - availableRewardsForEpochEth, - isEligibleForRewards, - accruedServiceStakingRewards, - } = useContext(RewardContext); - - return { - availableRewardsForEpoch, - availableRewardsForEpochEth, - isEligibleForRewards, - accruedServiceStakingRewards, - }; -}; diff --git a/frontend/hooks/useServiceTemplates.ts b/frontend/hooks/useServiceTemplates.ts deleted file mode 100644 index 7e4e733b3..000000000 --- a/frontend/hooks/useServiceTemplates.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { ServiceTemplate } from '@/client/types'; -import { SERVICE_TEMPLATES } from '@/constants/serviceTemplates'; - -export const useServiceTemplates = () => { - const getServiceTemplates = (): ServiceTemplate[] => SERVICE_TEMPLATES; - const getServiceTemplate = (hash: string): ServiceTemplate | undefined => - SERVICE_TEMPLATES.find((template) => template.hash === hash); - - return { - getServiceTemplate, - getServiceTemplates, - serviceTemplate: SERVICE_TEMPLATES[0], // Default to the first template - }; -}; diff --git a/frontend/hooks/useServices.ts b/frontend/hooks/useServices.ts deleted file mode 100644 index 2de306fcb..000000000 --- a/frontend/hooks/useServices.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { useContext } from 'react'; - -import { Service, ServiceHash, ServiceTemplate } from '@/client'; -import { ServicesContext } from '@/context/ServicesProvider'; -import MulticallService from '@/service/Multicall'; -import { ServicesService } from '@/service/Services'; -import { Address } from '@/types/Address'; -import { AddressBooleanRecord } from '@/types/Records'; - -const checkServiceIsFunded = async ( - service: Service, - serviceTemplate: ServiceTemplate, -): Promise => { - const { - chain_data: { instances, multisig }, - } = service; - - if (!instances || !multisig) return false; - - const addresses = [...instances, multisig]; - - const balances = await MulticallService.getEthBalances(addresses); - - if (!balances) return false; - - const fundRequirements: AddressBooleanRecord = addresses.reduce( - (acc: AddressBooleanRecord, address: Address) => - Object.assign(acc, { - [address]: instances.includes(address) - ? balances[address] > - serviceTemplate.configuration.fund_requirements.agent - : balances[address] > - serviceTemplate.configuration.fund_requirements.safe, - }), - {}, - ); - - return Object.values(fundRequirements).every((f) => f); -}; - -export const useServices = () => { - const { - services, - updateServicesState, - hasInitialLoaded, - setServices, - serviceStatus, - setServiceStatus, - updateServiceStatus, - setIsPaused, - } = useContext(ServicesContext); - - // STATE METHODS - const getServiceFromState = ( - serviceHash: ServiceHash, - ): Service | undefined => { - if (!hasInitialLoaded) return; - if (!services) return; - return services.find((service) => service.hash === serviceHash); - }; - - const getServicesFromState = (): Service[] | undefined => - hasInitialLoaded ? services : []; - - const updateServiceState = (serviceHash: ServiceHash) => { - ServicesService.getService(serviceHash).then((service: Service) => { - setServices((prev) => { - if (!prev) return [service]; - - const index = prev.findIndex((s) => s.hash === serviceHash); // findIndex returns -1 if not found - if (index === -1) return [...prev, service]; - - const newServices = [...prev]; - newServices[index] = service; - return newServices; - }); - }); - }; - - const deleteServiceState = (serviceHash: ServiceHash) => - setServices((prev) => prev?.filter((s) => s.hash !== serviceHash)); - - return { - service: services?.[0], - services, - serviceStatus, - setServiceStatus, - getServiceFromState, - getServicesFromState, - checkServiceIsFunded, - updateServicesState, - updateServiceState, - updateServiceStatus, - deleteServiceState, - hasInitialLoaded, - setIsServicePollingPaused: setIsPaused, - }; -}; diff --git a/frontend/hooks/useSettings.ts b/frontend/hooks/useSettings.ts deleted file mode 100644 index 9b5ba28fe..000000000 --- a/frontend/hooks/useSettings.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { useContext } from 'react'; - -import { SettingsContext } from '@/context/SettingsProvider'; - -export const useSettings = () => useContext(SettingsContext); diff --git a/frontend/hooks/useSetup.ts b/frontend/hooks/useSetup.ts deleted file mode 100644 index cbde83cc3..000000000 --- a/frontend/hooks/useSetup.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { useContext } from 'react'; - -import { SetupContext } from '@/context/SetupProvider'; -import { SetupScreen } from '@/enums/SetupScreen'; -import { Address } from '@/types/Address'; - -export const useSetup = () => { - const { setupObject, setSetupObject } = useContext(SetupContext); - - const goto = (state: SetupScreen) => { - setSetupObject((prev) => ({ ...prev, state })); - }; - - const setMnemonic = (mnemonic: string[]) => - setSetupObject((prev) => Object.assign(prev, { mnemonic })); - - const setBackupSigner = (backupSigner: Address) => - setSetupObject((prev) => Object.assign(prev, { backupSigner })); - - return { - ...setupObject, - setMnemonic, - setBackupSigner, - goto, - }; -}; diff --git a/frontend/hooks/useStakingContractInfo.ts b/frontend/hooks/useStakingContractInfo.ts deleted file mode 100644 index 5392b7199..000000000 --- a/frontend/hooks/useStakingContractInfo.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { useContext } from 'react'; - -import { StakingContractInfoContext } from '@/context/StakingContractInfoProvider'; - -import { useServices } from './useServices'; - -export const useStakingContractInfo = () => { - const { stakingContractInfo } = useContext(StakingContractInfoContext); - const { services } = useServices(); - - if (!services?.[0] || !stakingContractInfo) return {}; - - const { - serviceStakingState, - serviceStakingStartTime, - availableRewards, - serviceIds, - maxNumServices, - minimumStakingDuration, - } = stakingContractInfo; - - const isRewardsAvailable = availableRewards > 0; - const hasEnoughServiceSlots = serviceIds.length < maxNumServices; - const hasEnoughRewardsAndSlots = isRewardsAvailable && hasEnoughServiceSlots; - - const isAgentEvicted = serviceStakingState === 2; - - /** - * For example: minStakingDuration = 3 days - * - * - Service starts staking 1st June 00:01 - * - Service stops being active on 1st June 02:01 (after 2 hours) - * - Contract will evict the service at 3rd June 02:02 - * - Now, cannot unstake the service until 4th June 00:01, because it hasn’t met the minStakingDuration of 3 days. - * - IMPORTANT: Between 3rd June 02:02 and 4th June 00:01 the service is EVICTED and without the possibility of unstake and re-stake - * - That is, user should not be able to run/start your agent if this condition is met. - * - */ - const isServiceStakedForMinimumDuration = - Math.round(Date.now() / 1000) - serviceStakingStartTime >= - minimumStakingDuration; - - /** - * user can start the agent iff, - * - rewards are available - * - service has enough slots - * - if agent is evicted, then service should be staked for minimum duration - */ - const isEligibleForStaking = - hasEnoughRewardsAndSlots && - (isAgentEvicted ? isServiceStakedForMinimumDuration : true); - - return { - hasEnoughServiceSlots, - isEligibleForStaking, - isRewardsAvailable, - isAgentEvicted, - }; -}; diff --git a/frontend/hooks/useStore.ts b/frontend/hooks/useStore.ts deleted file mode 100644 index ddc4a66b8..000000000 --- a/frontend/hooks/useStore.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { useContext } from 'react'; - -import { StoreContext } from '@/context/StoreProvider'; - -export const useStore = () => useContext(StoreContext); diff --git a/frontend/hooks/useWallet.ts b/frontend/hooks/useWallet.ts deleted file mode 100644 index 3ac343b60..000000000 --- a/frontend/hooks/useWallet.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { useContext } from 'react'; - -import { WalletContext } from '@/context/WalletProvider'; - -export const useWallet = () => useContext(WalletContext); diff --git a/frontend/jest.config.ts b/frontend/jest.config.ts deleted file mode 100644 index 849f963f0..000000000 --- a/frontend/jest.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import type { Config } from 'jest'; -import nextJest from 'next/jest.js'; - -const createJestConfig = nextJest({ - // Provide the path to your Next.js app to load next.config.js and .env files in your test environment - dir: './', -}); - -// Add any custom config to be passed to Jest -const config: Config = { - coverageProvider: 'v8', - testEnvironment: 'jsdom', - globals: { fetch }, - // Add more setup options before each test is run - setupFilesAfterEnv: ['/jest.setup.ts'], -}; - -// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async -export default createJestConfig(config); diff --git a/frontend/jest.setup.ts b/frontend/jest.setup.ts deleted file mode 100644 index 7b0828bfa..000000000 --- a/frontend/jest.setup.ts +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom'; diff --git a/frontend/next-env.d.ts b/frontend/next-env.d.ts deleted file mode 100644 index 4f11a03dc..000000000 --- a/frontend/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/frontend/next.config.mjs b/frontend/next.config.mjs deleted file mode 100644 index 33b7fe23f..000000000 --- a/frontend/next.config.mjs +++ /dev/null @@ -1,42 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - images: { - remotePatterns: [ - { - protocol: 'http', - hostname: '**', - }, - { - protocol: 'https', - hostname: '**', - }, - ], - }, - transpilePackages: [ - 'rc-util', - '@babel/runtime', - '@ant-design', - 'rc-pagination', - 'rc-picker', - ], - webpack: (config) => { - if (config.snapshot) { - config.snapshot = { - ...(config.snapshot ?? {}), - // Add all node_modules but @next module to managedPaths - // Allows for hot refresh of changes to @next module - managedPaths: [/^(.+?[\\/]node_modules[\\/])(?!@next)/], - }; - } - - return config; - }, - env: { - GNOSIS_RPC: - process.env.NODE_ENV === 'production' - ? process.env.FORK_URL - : process.env.DEV_RPC, - }, -}; - -export default nextConfig; diff --git a/frontend/package.json b/frontend/package.json deleted file mode 100644 index ec20ee33a..000000000 --- a/frontend/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "author": "Valory AG", - "dependencies": { - "@ant-design/cssinjs": "^1.18.4", - "@ant-design/icons": "^5.3.0", - "@fontsource/inter": "^5.0.17", - "antd": "^5.14.0", - "ethers": "5.7.2", - "ethers-multicall": "^0.2.3", - "lodash": "^4.17.21", - "next": "^14.2.3", - "react": "^18.3.1", - "react-canvas-confetti": "1.2.1", - "react-dom": "^18.3.1", - "sass": "^1.72.0", - "styled-components": "^6.1.8", - "usehooks-ts": "^2.14.0" - }, - "devDependencies": { - "@testing-library/jest-dom": "^6.4.2", - "@testing-library/react": "^14.2.1", - "@types/jest": "^29.5.12", - "@types/lodash": "^4.14.202", - "@types/node": "20.14.10", - "@types/react": "18.3.3", - "@types/react-dom": "^18", - "@typescript-eslint/eslint-plugin": "^7.0.1", - "@typescript-eslint/parser": "^7.0.1", - "eslint": "^8.56.0", - "eslint-config-next": "14.1.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^27.6.3", - "eslint-plugin-next": "^0.0.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-simple-import-sort": "^12.0.0", - "eslint-plugin-unused-imports": "^3.0.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "prettier": "^3.2.5", - "ts-node": "^10.9.2", - "typescript": "5.5.3" - }, - "name": "olas-operate-app", - "private": true, - "scripts": { - "dev": "next dev", - "build": "NODE_ENV=production next build", - "lint": "next lint", - "test": "jest", - "start": "next start" - }, - "version": "0.1.0" -} diff --git a/frontend/pages/_app.tsx b/frontend/pages/_app.tsx deleted file mode 100644 index 7a6c2efe8..000000000 --- a/frontend/pages/_app.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import '../styles/globals.scss'; - -import { ConfigProvider } from 'antd'; -import type { AppProps } from 'next/app'; -import { useEffect, useRef } from 'react'; - -import { Layout } from '@/components/Layout'; -import { BalanceProvider } from '@/context/BalanceProvider'; -import { ElectronApiProvider } from '@/context/ElectronApiProvider'; -import { MasterSafeProvider } from '@/context/MasterSafeProvider'; -import { OnlineStatusProvider } from '@/context/OnlineStatusProvider'; -import { PageStateProvider } from '@/context/PageStateProvider'; -import { RewardProvider } from '@/context/RewardProvider'; -import { ServicesProvider } from '@/context/ServicesProvider'; -import { SettingsProvider } from '@/context/SettingsProvider'; -import { SetupProvider } from '@/context/SetupProvider'; -import { StakingContractInfoProvider } from '@/context/StakingContractInfoProvider'; -import { StoreProvider } from '@/context/StoreProvider'; -import { WalletProvider } from '@/context/WalletProvider'; -import { mainTheme } from '@/theme'; - -export default function App({ Component, pageProps }: AppProps) { - const isMounted = useRef(false); - - useEffect(() => { - isMounted.current = true; - return () => { - isMounted.current = false; - }; - }, []); - - return ( - - - - - - - - - - - - - {isMounted ? ( - - - - - - ) : null} - - - - - - - - - - - - - ); -} diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx deleted file mode 100644 index e4976d2eb..000000000 --- a/frontend/pages/index.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { useEffect, useMemo } from 'react'; - -import { HelpAndSupport } from '@/components/HelpAndSupport'; -import { Main } from '@/components/Main'; -import { Settings } from '@/components/Settings'; -import { Setup } from '@/components/Setup'; -import { PageState } from '@/enums/PageState'; -import { useElectronApi } from '@/hooks/useElectronApi'; -import { usePageState } from '@/hooks/usePageState'; - -const DEFAULT_APP_HEIGHT = 700; - -export default function Home() { - const { pageState } = usePageState(); - const electronApi = useElectronApi(); - - useEffect(() => { - function updateAppHeight() { - const bodyElement = document.querySelector('body'); - if (bodyElement) { - const scrollHeight = bodyElement.scrollHeight; - electronApi?.setAppHeight?.(Math.min(DEFAULT_APP_HEIGHT, scrollHeight)); - } - } - - const resizeObserver = new ResizeObserver(updateAppHeight); - resizeObserver.observe(document.body); - updateAppHeight(); - - return () => { - resizeObserver.unobserve(document.body); - }; - }, [electronApi]); - - const page = useMemo(() => { - switch (pageState) { - case PageState.Setup: - return ; - case PageState.Main: - return
; - case PageState.Settings: - return ; - case PageState.HelpAndSupport: - return ; - default: - return
; - } - }, [pageState]); - - return page; -} diff --git a/frontend/public/broken-robot.svg b/frontend/public/broken-robot.svg deleted file mode 100644 index 5f99a0375..000000000 --- a/frontend/public/broken-robot.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/frontend/public/happy-robot.svg b/frontend/public/happy-robot.svg deleted file mode 100644 index 4ca51d1d2..000000000 --- a/frontend/public/happy-robot.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/frontend/public/onboarding-robot.svg b/frontend/public/onboarding-robot.svg deleted file mode 100644 index c7cca155c..000000000 --- a/frontend/public/onboarding-robot.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/public/sad-robot.svg b/frontend/public/sad-robot.svg deleted file mode 100644 index 1cc45bdc7..000000000 --- a/frontend/public/sad-robot.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/frontend/public/splash-robot-head.png b/frontend/public/splash-robot-head.png deleted file mode 100644 index d43fb2873..000000000 Binary files a/frontend/public/splash-robot-head.png and /dev/null differ diff --git a/frontend/public/twitter.svg b/frontend/public/twitter.svg deleted file mode 100644 index f2ddba13f..000000000 --- a/frontend/public/twitter.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/frontend/service/Account.ts b/frontend/service/Account.ts deleted file mode 100644 index 49a61c29a..000000000 --- a/frontend/service/Account.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { BACKEND_URL } from '@/constants/urls'; - -/** - * Gets account status "is_setup" - */ -const getAccount = () => - fetch(`${BACKEND_URL}/account`).then((res) => res.json()); - -/** - * Creates a local user account - */ -const createAccount = (password: string) => - fetch(`${BACKEND_URL}/account`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ password }), - }).then((res) => res.json()); - -/** - * Updates user's password - */ -const updateAccount = (oldPassword: string, newPassword: string) => - fetch(`${BACKEND_URL}/account`, { - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - old_password: oldPassword, - new_password: newPassword, - }), - }).then((res) => res.json()); - -/** - * Logs in a user - */ -const loginAccount = (password: string) => - fetch(`${BACKEND_URL}/account/login`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - password, - }), - }).then((res) => { - if (![200, 201].includes(res.status)) throw new Error('Login failed'); - res.json(); - }); - -export const AccountService = { - getAccount, - createAccount, - updateAccount, - loginAccount, -}; diff --git a/frontend/service/Autonolas.ts b/frontend/service/Autonolas.ts deleted file mode 100644 index 0598210e4..000000000 --- a/frontend/service/Autonolas.ts +++ /dev/null @@ -1,248 +0,0 @@ -import { BigNumber, ethers } from 'ethers'; -import { Contract as MulticallContract } from 'ethers-multicall'; - -import { AGENT_MECH_ABI } from '@/abis/agentMech'; -import { MECH_ACTIVITY_CHECKER_ABI } from '@/abis/mechActivityChecker'; -import { SERVICE_REGISTRY_L2_ABI } from '@/abis/serviceRegistryL2'; -import { SERVICE_REGISTRY_TOKEN_UTILITY_ABI } from '@/abis/serviceRegistryTokenUtility'; -import { SERVICE_STAKING_TOKEN_MECH_USAGE_ABI } from '@/abis/serviceStakingTokenMechUsage'; -import { Chain } from '@/client'; -import { - AGENT_MECH_CONTRACT_ADDRESS, - MECH_ACTIVITY_CHECKER_CONTRACT_ADDRESS, - SERVICE_REGISTRY_L2_CONTRACT_ADDRESS, - SERVICE_REGISTRY_TOKEN_UTILITY_CONTRACT_ADDRESS, - SERVICE_STAKING_TOKEN_MECH_USAGE_CONTRACT_ADDRESS, -} from '@/constants/contractAddresses'; -import { gnosisMulticallProvider } from '@/constants/providers'; -import { ServiceRegistryL2ServiceState } from '@/enums/ServiceRegistryL2ServiceState'; -import { Address } from '@/types/Address'; -import { StakingContractInfo, StakingRewardsInfo } from '@/types/Autonolas'; - -const REQUIRED_MECH_REQUESTS_SAFETY_MARGIN = 1; - -const agentMechContract = new MulticallContract( - AGENT_MECH_CONTRACT_ADDRESS[Chain.GNOSIS], - AGENT_MECH_ABI.filter((abi) => abi.type === 'function'), // weird bug in the package where their filter doesn't work.. -); - -const serviceStakingTokenMechUsageContract = new MulticallContract( - SERVICE_STAKING_TOKEN_MECH_USAGE_CONTRACT_ADDRESS[Chain.GNOSIS], - SERVICE_STAKING_TOKEN_MECH_USAGE_ABI.filter((abi) => abi.type === 'function'), // same as above -); - -const serviceRegistryTokenUtilityContract = new MulticallContract( - SERVICE_REGISTRY_TOKEN_UTILITY_CONTRACT_ADDRESS[Chain.GNOSIS], - SERVICE_REGISTRY_TOKEN_UTILITY_ABI.filter((abi) => abi.type === 'function'), // same as above -); - -const serviceRegistryL2Contract = new MulticallContract( - SERVICE_REGISTRY_L2_CONTRACT_ADDRESS[Chain.GNOSIS], - SERVICE_REGISTRY_L2_ABI.filter((abi) => abi.type === 'function'), // same as above -); - -const mechActivityCheckerContract = new MulticallContract( - MECH_ACTIVITY_CHECKER_CONTRACT_ADDRESS[Chain.GNOSIS], - MECH_ACTIVITY_CHECKER_ABI.filter((abi) => abi.type === 'function'), // same as above -); - -const getAgentStakingRewardsInfo = async ({ - agentMultisigAddress, - serviceId, -}: { - agentMultisigAddress: Address; - serviceId: number; -}): Promise => { - if (!agentMultisigAddress) return; - if (!serviceId) return; - - const contractCalls = [ - agentMechContract.getRequestsCount(agentMultisigAddress), - serviceStakingTokenMechUsageContract.getServiceInfo(serviceId), - serviceStakingTokenMechUsageContract.livenessPeriod(), - mechActivityCheckerContract.livenessRatio(), - serviceStakingTokenMechUsageContract.rewardsPerSecond(), - serviceStakingTokenMechUsageContract.calculateStakingReward(serviceId), - serviceStakingTokenMechUsageContract.minStakingDeposit(), - serviceStakingTokenMechUsageContract.tsCheckpoint(), - ]; - - await gnosisMulticallProvider.init(); - - const multicallResponse = await gnosisMulticallProvider.all(contractCalls); - - const [ - mechRequestCount, - serviceInfo, - livenessPeriod, - livenessRatio, - rewardsPerSecond, - accruedStakingReward, - minStakingDeposit, - tsCheckpoint, - ] = multicallResponse; - - /** - * struct ServiceInfo { - // Service multisig address - address multisig; - // Service owner - address owner; - // Service multisig nonces - uint256[] nonces; <-- (we use this in the rewards eligibility check) - // Staking start time - uint256 tsStart; - // Accumulated service staking reward - uint256 reward; - // Accumulated inactivity that might lead to the service eviction - uint256 inactivity;} - */ - - const nowInSeconds = Math.floor(Date.now() / 1000); - - const requiredMechRequests = - (Math.ceil(Math.max(livenessPeriod, nowInSeconds - tsCheckpoint)) * - livenessRatio) / - 1e18 + - REQUIRED_MECH_REQUESTS_SAFETY_MARGIN; - - const mechRequestCountOnLastCheckpoint = serviceInfo[2][1]; - const eligibleRequests = mechRequestCount - mechRequestCountOnLastCheckpoint; - - const isEligibleForRewards = eligibleRequests >= requiredMechRequests; - - const availableRewardsForEpoch = Math.max( - rewardsPerSecond * livenessPeriod, // expected rewards for the epoch - rewardsPerSecond * (nowInSeconds - tsCheckpoint), // incase of late checkpoint - ); - - // Minimum staked amount is double the minimum staking deposit - // (all the bonds must be the same as deposit) - const minimumStakedAmount = - parseFloat(ethers.utils.formatEther(`${minStakingDeposit}`)) * 2; - - return { - mechRequestCount, - serviceInfo, - livenessPeriod, - livenessRatio, - rewardsPerSecond, - isEligibleForRewards, - availableRewardsForEpoch, - accruedServiceStakingRewards: parseFloat( - ethers.utils.formatEther(`${accruedStakingReward}`), - ), - minimumStakedAmount, - } as StakingRewardsInfo; -}; - -const getAvailableRewardsForEpoch = async (): Promise => { - const contractCalls = [ - serviceStakingTokenMechUsageContract.rewardsPerSecond(), - serviceStakingTokenMechUsageContract.livenessPeriod(), // epoch length - serviceStakingTokenMechUsageContract.tsCheckpoint(), // last checkpoint timestamp - ]; - - await gnosisMulticallProvider.init(); - - const multicallResponse = await gnosisMulticallProvider.all(contractCalls); - - const [rewardsPerSecond, livenessPeriod, tsCheckpoint] = multicallResponse; - - const nowInSeconds = Math.floor(Date.now() / 1000); - - return Math.max( - rewardsPerSecond * livenessPeriod, // expected rewards - rewardsPerSecond * (nowInSeconds - tsCheckpoint), // incase of late checkpoint - ); -}; - -/** - * function to get the staking contract info - */ -const getStakingContractInfo = async ( - serviceId: number, -): Promise => { - if (!serviceId) return; - - const contractCalls = [ - serviceStakingTokenMechUsageContract.availableRewards(), - serviceStakingTokenMechUsageContract.maxNumServices(), - serviceStakingTokenMechUsageContract.getServiceIds(), - serviceStakingTokenMechUsageContract.minStakingDuration(), - serviceStakingTokenMechUsageContract.getServiceInfo(serviceId), - serviceStakingTokenMechUsageContract.getStakingState(serviceId), - ]; - - await gnosisMulticallProvider.init(); - - const multicallResponse = await gnosisMulticallProvider.all(contractCalls); - const [ - availableRewardsInBN, - maxNumServicesInBN, - getServiceIdsInBN, - minStakingDurationInBN, - serviceInfo, - serviceStakingState, - ] = multicallResponse; - - const availableRewards = parseFloat( - ethers.utils.formatUnits(availableRewardsInBN, 18), - ); - const serviceIds = getServiceIdsInBN.map((id: BigNumber) => id.toNumber()); - const maxNumServices = maxNumServicesInBN.toNumber(); - - return { - availableRewards, - maxNumServices, - serviceIds, - minimumStakingDuration: minStakingDurationInBN.toNumber(), - serviceStakingStartTime: serviceInfo.tsStart.toNumber(), - serviceStakingState, - }; -}; - -const getServiceRegistryInfo = async ( - operatorAddress: Address, // generally masterSafeAddress - serviceId: number, -): Promise<{ - bondValue: number; - depositValue: number; - serviceState: ServiceRegistryL2ServiceState; -}> => { - const contractCalls = [ - serviceRegistryTokenUtilityContract.getOperatorBalance( - operatorAddress, - serviceId, - ), - serviceRegistryTokenUtilityContract.mapServiceIdTokenDeposit(serviceId), - serviceRegistryL2Contract.mapServices(serviceId), - ]; - - await gnosisMulticallProvider.init(); - - const [ - operatorBalanceResponse, - serviceIdTokenDepositResponse, - mapServicesResponse, - ] = await gnosisMulticallProvider.all(contractCalls); - - const [bondValue, depositValue, serviceState] = [ - parseFloat(ethers.utils.formatUnits(operatorBalanceResponse, 18)), - parseFloat(ethers.utils.formatUnits(serviceIdTokenDepositResponse[1], 18)), - mapServicesResponse.state as ServiceRegistryL2ServiceState, - ]; - - return { - bondValue, - depositValue, - serviceState, - }; -}; - -export const AutonolasService = { - getAgentStakingRewardsInfo, - getAvailableRewardsForEpoch, - getServiceRegistryInfo, - getStakingContractInfo, -}; diff --git a/frontend/service/Ethers.ts b/frontend/service/Ethers.ts deleted file mode 100644 index 20ad4cc70..000000000 --- a/frontend/service/Ethers.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { ContractInterface, ethers, providers, utils } from 'ethers'; - -import { gnosisProvider } from '@/constants/providers'; -import { Address } from '@/types/Address'; - -/** - * Returns native balance of the given address - * @param address - * @param rpc - * @returns Promise - */ -const getEthBalance = async ( - address: Address, - rpc: string, -): Promise => { - try { - const provider = new providers.StaticJsonRpcProvider(rpc, { - name: 'Gnosis', - chainId: 100, // we currently only support Gnosis Trader agent - }); - return provider.getBalance(address).then((balance) => { - const formattedBalance = utils.formatEther(balance); - return Number(formattedBalance); - }); - } catch (e) { - return Promise.reject('Failed to get ETH balance'); - } -}; - -/** - * Returns the ERC20 balance of the given address - * @param address Address - * @param rpc string - * @param contractAddress Address - * @returns Promise - */ -const getErc20Balance = async ( - address: Address, - rpc: string, - contractAddress?: Address, -): Promise => { - try { - if (!contractAddress) - throw new Error('Contract address is required for ERC20 balance'); - const provider = new providers.StaticJsonRpcProvider(rpc, { - name: 'Gnosis', - chainId: 100, // we currently only support Gnosis Trader agent - }); - const contract = new ethers.Contract( - contractAddress, - [ - 'function balanceOf(address) view returns (uint256)', - 'function decimals() view returns (uint8)', - ], - provider, - ); - const [balance, decimals] = await Promise.all([ - contract.balanceOf(address), - contract.decimals(), - ]); - if (!balance || !decimals) - throw new Error('Failed to resolve balance or decimals'); - return Number(utils.formatUnits(balance, decimals)); - } catch (e) { - return Promise.reject(e); - } -}; - -/** - * Checks if the given RPC is valid - * @param rpc string - * @returns Promise - */ -const checkRpc = async (rpc: string): Promise => { - try { - if (!rpc) throw new Error('RPC is required'); - - const provider = new providers.StaticJsonRpcProvider(rpc, { - name: 'Gnosis', - chainId: 100, // we currently only support Gnosis Trader agent - }); - - const networkId = (await provider.getNetwork()).chainId; - if (!networkId) throw new Error('Failed to get network ID'); - - return Promise.resolve(true); - } catch (e) { - return Promise.resolve(false); - } -}; - -const readContract = ({ - address, - abi, -}: { - address: string; - abi: ContractInterface; -}) => { - const contract = new ethers.Contract(address, abi, gnosisProvider); - return contract; -}; - -export const EthersService = { - getEthBalance, - getErc20Balance, - checkRpc, - readContract, -}; diff --git a/frontend/service/GnosisSafe.ts b/frontend/service/GnosisSafe.ts deleted file mode 100644 index 5c2879499..000000000 --- a/frontend/service/GnosisSafe.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { ethers } from 'ethers'; - -import { GNOSIS_SAFE_ABI } from '@/abis/gnosisSafe'; -import { gnosisProvider } from '@/constants/providers'; -import { Address } from '@/types/Address'; - -const getOwners = async ({ - address, -}: { - address: Address; -}): Promise => { - const gnosisSafeContract = new ethers.Contract( - address, - GNOSIS_SAFE_ABI, - gnosisProvider, - ); - - return gnosisSafeContract.getOwners(); -}; - -export const GnosisSafeService = { - getOwners, -}; diff --git a/frontend/service/Multicall.ts b/frontend/service/Multicall.ts deleted file mode 100644 index 390274f14..000000000 --- a/frontend/service/Multicall.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { BigNumber, ethers } from 'ethers'; -import { Contract as MulticallContract, ContractCall } from 'ethers-multicall'; - -import { ERC20_BALANCEOF_FRAGMENT } from '@/abis/erc20'; -import { MULTICALL3_ABI } from '@/abis/multicall3'; -import { MULTICALL_CONTRACT_ADDRESS } from '@/constants/contractAddresses'; -import { gnosisMulticallProvider } from '@/constants/providers'; -import { Address } from '@/types/Address'; -import { AddressNumberRecord } from '@/types/Records'; - -const multicallContract = new MulticallContract( - MULTICALL_CONTRACT_ADDRESS, - MULTICALL3_ABI, -); - -/** - * Gets ETH balances for a list of addresses - * @param addresses - * @param rpc - * @returns Promise - */ -const getEthBalances = async ( - addresses: Address[], -): Promise => { - if (!addresses.length) return {}; - - const callData: ContractCall[] = addresses.map((address: Address) => - multicallContract.getEthBalance(address), - ); - - if (!callData.length) return {}; - - await gnosisMulticallProvider.init(); - const multicallResponse = await gnosisMulticallProvider.all(callData); - - return multicallResponse.reduce( - (acc: AddressNumberRecord, balance: BigNumber, index: number) => ({ - ...acc, - [addresses[index]]: parseFloat(ethers.utils.formatUnits(balance, 18)), - }), - {}, - ); -}; - -/** - * Gets ERC20 balances for a list of addresses - * @param addresses - * @param rpc - * @param contractAddress - * @returns Promise - */ -const getErc20Balances = async ( - addresses: Address[], - contractAddress: Address, -): Promise => { - if (!contractAddress) return {}; - if (!addresses.length) return {}; - - const callData: ContractCall[] = addresses.map((address: Address) => - new MulticallContract(contractAddress, ERC20_BALANCEOF_FRAGMENT).balanceOf( - address, - ), - ); - - await gnosisMulticallProvider.init(); - - const multicallResponse = await gnosisMulticallProvider.all(callData); - - return multicallResponse.reduce( - (acc: AddressNumberRecord, balance: BigNumber, index: number) => ({ - ...acc, - [addresses[index]]: parseFloat(ethers.utils.formatUnits(balance, 18)), - }), - {}, - ); -}; - -const MulticallService = { - getEthBalances, - getErc20Balances, -}; - -export default MulticallService; diff --git a/frontend/service/Services.ts b/frontend/service/Services.ts deleted file mode 100644 index a12591909..000000000 --- a/frontend/service/Services.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { Deployment, Service, ServiceHash, ServiceTemplate } from '@/client'; -import { BACKEND_URL } from '@/constants/urls'; - -/** - * Get a single service from the backend - * @param serviceHash - * @returns - */ -const getService = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}`).then((response) => - response.json(), - ); - -/** - * Gets an array of services from the backend - * @returns An array of services - */ -const getServices = async (): Promise => - fetch(`${BACKEND_URL}/services`, { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - }, - }).then((response) => response.json()); - -/** - * Creates a service - * @param serviceTemplate - * @returns Promise - */ -const createService = async ({ - serviceTemplate, - deploy, -}: { - serviceTemplate: ServiceTemplate; - deploy: boolean; -}): Promise => - new Promise((resolve, reject) => - fetch(`${BACKEND_URL}/services`, { - method: 'POST', - body: JSON.stringify({ - ...serviceTemplate, - deploy, - configuration: { - ...serviceTemplate.configuration, - rpc: `${process.env.GNOSIS_RPC}`, - }, - }), - headers: { - 'Content-Type': 'application/json', - }, - }).then((response) => { - if (response.ok) { - resolve(response.json()); - } - reject('Failed to create service'); - }), - ); - -const deployOnChain = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/onchain/deploy`, { - method: 'POST', - }).then((response) => response.json()); - -const stopOnChain = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/onchain/stop`, { - method: 'POST', - }).then((response) => response.json()); - -const buildDeployment = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/deployment/build`, { - method: 'POST', - }).then((response) => response.json()); - -const startDeployment = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/deployment/start`, { - method: 'POST', - }).then((response) => response.json()); - -const stopDeployment = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/deployment/stop`, { - method: 'POST', - }).then((response) => response.json()); - -const deleteDeployment = async ( - serviceHash: ServiceHash, -): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/deployment/delete`, { - method: 'POST', - }).then((response) => response.json()); - -const getDeployment = async (serviceHash: ServiceHash): Promise => - fetch(`${BACKEND_URL}/services/${serviceHash}/deployment`).then((response) => - response.json(), - ); - -export const ServicesService = { - getService, - getServices, - getDeployment, - createService, - deployOnChain, - stopOnChain, - buildDeployment, - startDeployment, - stopDeployment, - deleteDeployment, -}; diff --git a/frontend/service/Wallet.ts b/frontend/service/Wallet.ts deleted file mode 100644 index b09a8e95c..000000000 --- a/frontend/service/Wallet.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Chain } from '@/client'; -import { BACKEND_URL } from '@/constants/urls'; - -/** - * Returns a list of available wallets - */ -const getWallets = async () => - fetch(`${BACKEND_URL}/wallet`).then((res) => res.json()); - -const createEoa = async (chain: Chain) => - fetch(`${BACKEND_URL}/wallet`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ chain_type: chain }), - }).then((res) => res.json()); - -const createSafe = async (chain: Chain, owner?: string) => - fetch(`${BACKEND_URL}/wallet/safe`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ chain_type: chain, owner: owner }), - }).then((res) => res.json()); - -const addBackupOwner = async (chain: Chain, owner: string) => - fetch(`${BACKEND_URL}/wallet/safe`, { - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ chain_type: chain, owner: owner }), - }).then((res) => res.json()); - -export const WalletService = { - getWallets, - createEoa, - createSafe, - addBackupOwner, -}; diff --git a/frontend/styles/globals.scss b/frontend/styles/globals.scss deleted file mode 100644 index 13afcf16c..000000000 --- a/frontend/styles/globals.scss +++ /dev/null @@ -1,199 +0,0 @@ -@import '@fontsource/inter'; -@import '@fontsource/inter/600.css'; -@import '@fontsource/inter/700.css'; -@import '@fontsource/inter/900.css'; - -html, body { - margin: 0; - padding: 0; - height: auto; -} - - /* Hide scrollbar for Chrome, Safari and Opera */ -*::-webkit-scrollbar { - display: none; -} - -body { - max-width: 460px; - border-radius: 8px; - user-select: none; -} - -button, input, select, textarea, .ant-input-suffix { - -webkit-app-region: no-drag; -} - -// antd overrides -.ant-card { - -webkit-app-region: no-drag; -} - -.ant-alert { - .anticon { - margin-top: 3px; - } -} - -.antd-card { - background-color: white; - overflow-y: scroll; -} - -.balance { - font-family: 'Inter'; - font-weight: 900; - font-size: 56px; - line-height: 48px; -} - -.balance-symbol { - @extend .balance; - font-size: 32px; - line-height: 32px; -} - -.balance-currency { - @extend .balance; - font-weight: 600; - font-size: 24px; - line-height: 24px; -} - -.custom-alert { - align-items: flex-start; - - &--primary { - border-color: #ECD7FE; - background-color: #F8F0FF; - color: #36075F; - - .ant-alert-icon { - color: #7E22CE; - } - } - - &--info { - color: #002C8C; - } - - &--warning { - color: #873800; - } - - &--error { - color: #A8071A; - } - - .ant-typography { - color: inherit; - } - - &--full-width { - flex: auto; - margin: 0; - border-radius: 0; - border-left: 0; - border-right: 0; - padding: 12px 24px; - margin: -24px; - } -} - -.can-select-text { - user-select: text !important; -} - -.justify-start { - justify-content: flex-start; -} - -.m-0 { - margin: 0 !important; -} - -.mb-4 { - margin-bottom: 4px !important; -} - -.mb-8 { - margin-bottom: 8px !important; -} - -.mb-16 { - margin-bottom: 16px !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.mt-8 { - margin-top: 8px !important; -} - -.mt-12 { - margin-top: 12px !important; -} - -.mx-auto { - margin-left: auto !important; - margin-right: auto !important; -} - -.text-xl { - font-size: 20px; -} - -.text-base { - font-size: 16px !important; -} - -.text-sm { - font-size: 14px !important; -} - -.text-center { - text-align: center !important; -} - -.font-weight-600 { - font-weight: 600 !important; -} - -.break-word { - white-space: normal !important; - word-wrap: break-word !important; -} - -ul.alert-list { - margin: 0 0.5em; - padding-left: 1.25em; -} - -.w-3\/4 { - width: 75% !important; -} - -.loading-ellipses:after { - overflow: hidden; - display: inline-block; - vertical-align: bottom; - -webkit-animation: ellipsis steps(4, end) 900ms infinite; - animation: ellipsis steps(4, end) 900ms infinite; - content: "\2026"; - /* ascii code for the ellipsis character */ - width: 0px; -} - -@keyframes ellipsis { - to { - width: 40px; - } -} - -@-webkit-keyframes ellipsis { - to { - width: 40px; - } -} \ No newline at end of file diff --git a/frontend/theme/index.ts b/frontend/theme/index.ts deleted file mode 100644 index e42767da3..000000000 --- a/frontend/theme/index.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ThemeConfig } from 'antd'; - -export const mainTheme: ThemeConfig = { - token: { - colorLink: '#7E22CE', - colorPrimary: '#7E22CE', - colorWarning: '#FF9C27', - colorInfoText: '#36075F', - colorText: '#0F172A', - colorTextSecondary: '#4D596A', - colorFillSecondary: '#E4E4E4', - fontSize: 16, - fontFamily: 'Inter', - colorBgContainer: '#FFFFFF', - }, - components: { - Alert: { - fontSize: 16, - }, - Button: { - fontSize: 16, - fontSizeLG: 16, - }, - Card: { - colorBgContainer: '#FFFFFF', - padding: 20, - fontWeightStrong: 400, - }, - Input: { - fontSize: 20, - colorTextDisabled: '#334155', - }, - Tooltip: { - fontSize: 16, - colorText: 'black', - colorTextLightSolid: 'black', - colorBgSpotlight: 'white', - }, - Typography: { - colorTextDescription: '#4D596A', - }, - }, -}; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json deleted file mode 100644 index ca51cb094..000000000 --- a/frontend/tsconfig.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2015", - "allowJs": true, - "esModuleInterop": true, - "incremental": true, - "isolatedModules": true, - "jsx": "preserve", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "module": "esnext", - "moduleResolution": "bundler", - "noEmit": true, - "paths": { - "@/*": [ - "./*" - ] - }, - "resolveJsonModule": true, - "skipLibCheck": true, - "strict": true, - "types": [ - "@testing-library/jest-dom" - ] - }, - "exclude": [ - "node_modules" - ], - "include": [ - "**/*.ts", - "**/*.tsx", - "next-env.d.ts", - "**/*.d.ts" - ] -} \ No newline at end of file diff --git a/frontend/types/Address.ts b/frontend/types/Address.ts deleted file mode 100644 index f64ddbb97..000000000 --- a/frontend/types/Address.ts +++ /dev/null @@ -1 +0,0 @@ -export type Address = `0x${string}`; diff --git a/frontend/types/Autonolas.ts b/frontend/types/Autonolas.ts deleted file mode 100644 index f971ace82..000000000 --- a/frontend/types/Autonolas.ts +++ /dev/null @@ -1,23 +0,0 @@ -export type StakingRewardsInfo = { - mechRequestCount: number; - serviceInfo: unknown[]; - livenessPeriod: number; - livenessRatio: number; - rewardsPerSecond: number; - isEligibleForRewards: boolean; - availableRewardsForEpoch: number; - accruedServiceStakingRewards: number; - minimumStakedAmount: number; -}; - -export type StakingContractInfo = { - availableRewards: number; - maxNumServices: number; - serviceIds: number[]; - /** minimum staking duration (in seconds) */ - minimumStakingDuration: number; - /** time when service was staked (in seconds) */ - serviceStakingStartTime: number; - /** 0: not staked, 1: staked, 2: unstaked - current state of the service */ - serviceStakingState: number; -}; diff --git a/frontend/types/ElectronApi.ts b/frontend/types/ElectronApi.ts deleted file mode 100644 index 2f586a0d9..000000000 --- a/frontend/types/ElectronApi.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type ElectronStore = { - environmentName?: string; - isInitialFunded?: boolean; - firstStakingRewardAchieved?: boolean; - firstRewardNotificationShown?: boolean; -}; - -export type ElectronTrayIconStatus = 'low-gas' | 'running' | 'paused'; diff --git a/frontend/types/Records.ts b/frontend/types/Records.ts deleted file mode 100644 index 20a8611a9..000000000 --- a/frontend/types/Records.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Token } from '@/enums/Token'; - -import { Address } from './Address'; - -export type AddressNumberRecord = Record; -export type AddressBooleanRecord = Record; - -// defines token balances in a wallet by token name -export type WalletAddressNumberRecord = Record< - Address, - Record ->; diff --git a/frontend/utils/copyToClipboard.ts b/frontend/utils/copyToClipboard.ts deleted file mode 100644 index 12b85dddb..000000000 --- a/frontend/utils/copyToClipboard.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const copyToClipboard = async (text: string): Promise => - navigator.clipboard.writeText(text); diff --git a/frontend/utils/isDev.ts b/frontend/utils/isDev.ts deleted file mode 100644 index 0bd4ecf30..000000000 --- a/frontend/utils/isDev.ts +++ /dev/null @@ -1 +0,0 @@ -export const isDev = process.env.NODE_ENV === 'development'; diff --git a/frontend/utils/numberFormatters.ts b/frontend/utils/numberFormatters.ts deleted file mode 100644 index 7613469fa..000000000 --- a/frontend/utils/numberFormatters.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const balanceFormat = ( - balance: number | undefined, - decimals: 2, -): string => { - if (balance === undefined) return '--'; - return Intl.NumberFormat('en-US', { - notation: 'compact', - maximumFractionDigits: decimals, - minimumFractionDigits: decimals, - }).format(balance); -}; diff --git a/frontend/utils/service.ts b/frontend/utils/service.ts deleted file mode 100644 index 160a9fee5..000000000 --- a/frontend/utils/service.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { formatUnits } from 'ethers/lib/utils'; - -import { ServiceTemplate } from '@/client'; - -export const getMinimumStakedAmountRequired = ( - serviceTemplate: ServiceTemplate, -) => { - const olasCostOfBond = Number( - formatUnits(`${serviceTemplate.configuration.olas_cost_of_bond}`, 18), - ); - const olasRequiredToStake = Number( - formatUnits(`${serviceTemplate.configuration.olas_required_to_stake}`, 18), - ); - - return olasCostOfBond + olasRequiredToStake; -}; diff --git a/frontend/utils/truncate.ts b/frontend/utils/truncate.ts deleted file mode 100644 index ff8781d30..000000000 --- a/frontend/utils/truncate.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Address } from '@/types/Address'; - -export const truncateAddress = (address: Address) => - `${address?.substring(0, 6)}...${address?.substring(address.length - 4, address.length)}`; diff --git a/frontend/yarn.lock b/frontend/yarn.lock deleted file mode 100644 index dee5388e7..000000000 --- a/frontend/yarn.lock +++ /dev/null @@ -1,6263 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adobe/css-tools@^4.3.2": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" - integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@ant-design/colors@^7.0.0", "@ant-design/colors@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-7.0.2.tgz#c5c753a467ce8d86ba7ca4736d2c01f599bb5492" - integrity sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg== - dependencies: - "@ctrl/tinycolor" "^3.6.1" - -"@ant-design/cssinjs@^1.18.4", "@ant-design/cssinjs@^1.19.1": - version "1.20.0" - resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.20.0.tgz#878bc6c5b08f73db76da54c347a7ebb3fa4858bb" - integrity sha512-uG3iWzJxgNkADdZmc6W0Ci3iQAUOvLMcM8SnnmWq3r6JeocACft4ChnY/YWvI2Y+rG/68QBla/O+udke1yH3vg== - dependencies: - "@babel/runtime" "^7.11.1" - "@emotion/hash" "^0.8.0" - "@emotion/unitless" "^0.7.5" - classnames "^2.3.1" - csstype "^3.1.3" - rc-util "^5.35.0" - stylis "^4.0.13" - -"@ant-design/icons-svg@^4.4.0": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz#ed2be7fb4d82ac7e1d45a54a5b06d6cecf8be6f6" - integrity sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA== - -"@ant-design/icons@^5.3.0", "@ant-design/icons@^5.3.7": - version "5.3.7" - resolved "https://registry.yarnpkg.com/@ant-design/icons/-/icons-5.3.7.tgz#d9f3654bf7934ee5faba43f91b5a187f5309ec68" - integrity sha512-bCPXTAg66f5bdccM4TT21SQBDO1Ek2gho9h3nO9DAKXJP4sq+5VBjrQMSxMVXSB3HyEz+cUbHQ5+6ogxCOpaew== - dependencies: - "@ant-design/colors" "^7.0.0" - "@ant-design/icons-svg" "^4.4.0" - "@babel/runtime" "^7.11.2" - classnames "^2.2.6" - rc-util "^5.31.1" - -"@ant-design/react-slick@~1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ant-design/react-slick/-/react-slick-1.1.2.tgz#f84ce3e4d0dc941f02b16f1d1d6d7a371ffbb4f1" - integrity sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA== - dependencies: - "@babel/runtime" "^7.10.4" - classnames "^2.2.5" - json2mq "^0.2.0" - resize-observer-polyfill "^1.5.1" - throttle-debounce "^5.0.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== - dependencies: - "@babel/types" "^7.24.5" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.5", "@babel/runtime@^7.9.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== - dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@ctrl/tinycolor@^3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" - integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== - -"@emotion/hash@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - -"@emotion/is-prop-valid@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" - integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== - dependencies: - "@emotion/memoize" "^0.8.1" - -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - -"@emotion/unitless@0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - -"@emotion/unitless@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - 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" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@fontsource/inter@^5.0.17": - version "5.0.18" - resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-5.0.18.tgz#eaddac790ee74b70932030f37ebaa9fc76decbd8" - integrity sha512-YCsoYPTcs713sI7tLtxaPrIhXAXvEetGg5Ry02ivA8qUOb3fQHojbK/X9HLD5OOKvFUNR2Ynkwb1kR1hVKQHpw== - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - 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" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@next/env@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" - integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== - -"@next/eslint-plugin-next@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz#29b041233fac7417e22eefa4146432d5cd910820" - integrity sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q== - dependencies: - glob "10.3.10" - -"@next/swc-darwin-arm64@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" - integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== - -"@next/swc-darwin-x64@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" - integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== - -"@next/swc-linux-arm64-gnu@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" - integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== - -"@next/swc-linux-arm64-musl@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" - integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== - -"@next/swc-linux-x64-gnu@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" - integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== - -"@next/swc-linux-x64-musl@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" - integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== - -"@next/swc-win32-arm64-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" - integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== - -"@next/swc-win32-ia32-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" - integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== - -"@next/swc-win32-x64-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" - integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@rc-component/async-validator@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@rc-component/async-validator/-/async-validator-5.0.4.tgz#5291ad92f00a14b6766fc81735c234277f83e948" - integrity sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg== - dependencies: - "@babel/runtime" "^7.24.4" - -"@rc-component/color-picker@~1.5.3": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@rc-component/color-picker/-/color-picker-1.5.3.tgz#f3b0e14bb67ec5ee77d1fd5d261f63dd4fd00449" - integrity sha512-+tGGH3nLmYXTalVe0L8hSZNs73VTP5ueSHwUlDC77KKRaN7G4DS4wcpG5DTDzdcV/Yas+rzA6UGgIyzd8fS4cw== - dependencies: - "@babel/runtime" "^7.23.6" - "@ctrl/tinycolor" "^3.6.1" - classnames "^2.2.6" - rc-util "^5.38.1" - -"@rc-component/context@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@rc-component/context/-/context-1.4.0.tgz#dc6fb021d6773546af8f016ae4ce9aea088395e8" - integrity sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w== - dependencies: - "@babel/runtime" "^7.10.1" - rc-util "^5.27.0" - -"@rc-component/mini-decimal@^1.0.1": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@rc-component/mini-decimal/-/mini-decimal-1.1.0.tgz#7b7a362b14a0a54cb5bc6fd2b82731f29f11d9b0" - integrity sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ== - dependencies: - "@babel/runtime" "^7.18.0" - -"@rc-component/mutate-observer@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@rc-component/mutate-observer/-/mutate-observer-1.1.0.tgz#ee53cc88b78aade3cd0653609215a44779386fd8" - integrity sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw== - dependencies: - "@babel/runtime" "^7.18.0" - classnames "^2.3.2" - rc-util "^5.24.4" - -"@rc-component/portal@^1.0.0-8", "@rc-component/portal@^1.0.0-9", "@rc-component/portal@^1.0.2", "@rc-component/portal@^1.1.0", "@rc-component/portal@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@rc-component/portal/-/portal-1.1.2.tgz#55db1e51d784e034442e9700536faaa6ab63fc71" - integrity sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg== - dependencies: - "@babel/runtime" "^7.18.0" - classnames "^2.3.2" - rc-util "^5.24.4" - -"@rc-component/tour@~1.15.0": - version "1.15.0" - resolved "https://registry.yarnpkg.com/@rc-component/tour/-/tour-1.15.0.tgz#37a66ae5af8eefaf0ab0e22ddd8e6fecdbdc14a7" - integrity sha512-h6hyILDwL+In9GAgRobwRWihLqqsD7Uft3fZGrJ7L4EiyCoxbnNYwzPXDfz7vNDhWeVyvAWQJj9fJCzpI4+b4g== - dependencies: - "@babel/runtime" "^7.18.0" - "@rc-component/portal" "^1.0.0-9" - "@rc-component/trigger" "^2.0.0" - classnames "^2.3.2" - rc-util "^5.24.4" - -"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-2.1.1.tgz#47973f1156ba63810c913eb46cbaedeba913874b" - integrity sha512-UjHkedkgtEcgQu87w1VuWug1idoDJV7VUt0swxHXRcmei2uu1AuUzGBPEUlmOmXGJ+YtTgZfVLi7kuAUKoZTMA== - dependencies: - "@babel/runtime" "^7.23.2" - "@rc-component/portal" "^1.1.0" - classnames "^2.3.2" - rc-motion "^2.0.0" - rc-resize-observer "^1.3.1" - rc-util "^5.38.0" - -"@rushstack/eslint-patch@^1.3.3": - version "1.10.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" - integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@swc/counter@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== - -"@swc/helpers@0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.5.tgz#12689df71bfc9b21c4f4ca00ae55f2f16c8b77c0" - integrity sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A== - dependencies: - "@swc/counter" "^0.1.3" - tslib "^2.4.0" - -"@testing-library/dom@^9.0.0": - version "9.3.4" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" - integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.1.3" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - -"@testing-library/jest-dom@^6.4.2": - version "6.4.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#badb40296477149136dabef32b572ddd3b56adf1" - integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A== - dependencies: - "@adobe/css-tools" "^4.3.2" - "@babel/runtime" "^7.9.2" - aria-query "^5.0.0" - chalk "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.6.3" - lodash "^4.17.21" - redent "^3.0.0" - -"@testing-library/react@^14.2.1": - version "14.3.1" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.3.1.tgz#29513fc3770d6fb75245c4e1245c470e4ffdd830" - integrity sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ== - dependencies: - "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^9.0.0" - "@types/react-dom" "^18.0.0" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@types/aria-query@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" - integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/canvas-confetti@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@types/canvas-confetti/-/canvas-confetti-1.4.0.tgz#22127a1a9ed9d456e626d6e2b9a4d3b0a240e18b" - integrity sha512-Neq4mvVecrHmTdyo98EY5bnKCjkZGQ6Ma7VyOrxIcMHEZPmt4kfquccqfBMrpNrdryMHgk3oGQi7XtpZacltnw== - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.12": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/jsdom@^20.0.0": - version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" - integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== - dependencies: - "@types/node" "*" - "@types/tough-cookie" "*" - parse5 "^7.0.0" - -"@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/lodash@^4.14.202": - version "4.17.4" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.4.tgz#0303b64958ee070059e3a7184048a55159fe20b7" - integrity sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ== - -"@types/node@*": - version "20.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" - integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== - dependencies: - undici-types "~5.26.4" - -"@types/node@20.14.10": - version "20.14.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.10.tgz#a1a218290f1b6428682e3af044785e5874db469a" - integrity sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ== - dependencies: - undici-types "~5.26.4" - -"@types/prop-types@*": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== - -"@types/react-dom@^18", "@types/react-dom@^18.0.0": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" - integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@18.3.3": - version "18.3.3" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/semver@^7.3.12": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/stylis@4.2.5": - version "4.2.5" - resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df" - integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== - -"@types/tough-cookie@*": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^7.0.1": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz#07854a236f107bb45cbf4f62b89474cbea617f50" - integrity sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/type-utils" "7.10.0" - "@typescript-eslint/utils" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/parser@^5.4.2 || ^6.0.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/parser@^7.0.1": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.10.0.tgz#e6ac1cba7bc0400a4459e7eb5b23115bd71accfb" - integrity sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w== - dependencies: - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/typescript-estree" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/scope-manager@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz#054a27b1090199337a39cf755f83d9f2ce26546b" - integrity sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg== - dependencies: - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" - -"@typescript-eslint/type-utils@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz#8a75accce851d0a331aa9331268ef64e9b300270" - integrity sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g== - dependencies: - "@typescript-eslint/typescript-estree" "7.10.0" - "@typescript-eslint/utils" "7.10.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/types@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.10.0.tgz#da92309c97932a3a033762fd5faa8b067de84e3b" - integrity sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/typescript-estree@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz#6dcdc5de3149916a6a599fa89dde5c471b88b8bb" - integrity sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g== - dependencies: - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/utils@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.10.0.tgz#8ee43e5608c9f439524eaaea8de5b358b15c51b3" - integrity sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/typescript-estree" "7.10.0" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@typescript-eslint/visitor-keys@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz#2af2e91e73a75dd6b70b4486c48ae9d38a485a78" - integrity sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg== - dependencies: - "@typescript-eslint/types" "7.10.0" - eslint-visitor-keys "^3.4.3" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abab@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -acorn-globals@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" - integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== - dependencies: - acorn "^8.1.0" - acorn-walk "^8.0.2" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.0.2, acorn-walk@^8.1.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.1.0, acorn@^8.4.1, acorn@^8.8.1, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -antd@^5.14.0: - version "5.17.3" - resolved "https://registry.yarnpkg.com/antd/-/antd-5.17.3.tgz#c969755335cdef6fa671152602b7100557bff80c" - integrity sha512-U99hyy7t8dOQtNHzHifmwAXJLgmPMadavFBsd2mnfICD6m8l7u/NvCefRhd2jOf/SBNE2579YhwCEwTUiX2GnQ== - dependencies: - "@ant-design/colors" "^7.0.2" - "@ant-design/cssinjs" "^1.19.1" - "@ant-design/icons" "^5.3.7" - "@ant-design/react-slick" "~1.1.2" - "@babel/runtime" "^7.24.5" - "@ctrl/tinycolor" "^3.6.1" - "@rc-component/color-picker" "~1.5.3" - "@rc-component/mutate-observer" "^1.1.0" - "@rc-component/tour" "~1.15.0" - "@rc-component/trigger" "^2.1.1" - classnames "^2.5.1" - copy-to-clipboard "^3.3.3" - dayjs "^1.11.10" - qrcode.react "^3.1.0" - rc-cascader "~3.26.0" - rc-checkbox "~3.3.0" - rc-collapse "~3.7.3" - rc-dialog "~9.4.0" - rc-drawer "~7.1.0" - rc-dropdown "~4.2.0" - rc-field-form "~2.0.1" - rc-image "~7.6.0" - rc-input "~1.5.0" - rc-input-number "~9.1.0" - rc-mentions "~2.13.1" - rc-menu "~9.14.0" - rc-motion "^2.9.1" - rc-notification "~5.4.0" - rc-pagination "~4.0.4" - rc-picker "~4.5.0" - rc-progress "~4.0.0" - rc-rate "~2.12.0" - rc-resize-observer "^1.4.0" - rc-segmented "~2.3.0" - rc-select "~14.14.0" - rc-slider "~10.6.2" - rc-steps "~6.0.1" - rc-switch "~4.1.0" - rc-table "~7.45.6" - rc-tabs "~15.1.0" - rc-textarea "~1.7.0" - rc-tooltip "~6.2.0" - rc-tree "~5.8.7" - rc-tree-select "~5.21.0" - rc-upload "~4.5.2" - rc-util "^5.40.1" - scroll-into-view-if-needed "^3.1.0" - throttle-debounce "^5.0.0" - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - -aria-query@^5.0.0, aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== - dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" - -array-includes@^3.1.6, array-includes@^3.1.7: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" - -array-tree-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" - integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlast@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" - integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.findlastindex@^1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" - -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.toreversed@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" - integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" - es-shim-unscopables "^1.0.2" - -arraybuffer.prototype.slice@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" - integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== - 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" - -ast-types-flow@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" - integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" - integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== - dependencies: - possible-typed-array-names "^1.0.0" - -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== - -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - dependencies: - dequal "^2.0.3" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserslist@^4.22.2: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -busboy@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - 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" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelize@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" - integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== - -caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001587: - version "1.0.30001621" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" - integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== - -canvas-confetti@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/canvas-confetti/-/canvas-confetti-1.4.0.tgz#840f6db4a566f8f32abe28c00dcd82acf39c92bd" - integrity sha512-S18o4Y9PqI/uabdlT/jI3MY7XBJjNxnfapFIkjkMwpz6qNxLFZOm2b22OMf4ZYDL9lpNWI+Ih4fEMVPwO1KHFQ== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -"chokidar@>=3.0.0 <4.0.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1, classnames@^2.3.2, classnames@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" - integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== - -client-only@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" - integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -compute-scroll-into-view@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz#753f11d972596558d8fe7c6bcbc8497690ab4c87" - integrity sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -copy-to-clipboard@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" - integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== - dependencies: - toggle-selection "^1.0.6" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== - -css-to-react-native@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" - integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== - -cssom@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@3.1.3, csstype@^3.0.2, csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -data-urls@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== - dependencies: - abab "^2.0.6" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-data-view "^1.0.1" - -dayjs@^1.11.10: - version "1.11.11" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" - integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decimal.js@^10.4.2: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-equal@^2.0.5: - version "2.2.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" - integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.5" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.2" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.13" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -define-data-property@^1.0.1, define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== - -dom-accessibility-api@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" - integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== - -domexception@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== - dependencies: - webidl-conversions "^7.0.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -electron-to-chromium@^1.4.668: - version "1.4.780" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.780.tgz#8c6d7ff82b56b4219f2ae7918ee271ae25654f07" - integrity sha512-NPtACGFe7vunRYzvYqVRhQvsDrTevxpgDKxG/Vcbe0BTNOY+5+/2mOXSw2ls7ToNbE5Bf/+uQbjTxcmwMozpCw== - -elliptic@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -enhanced-resolve@^5.12.0: - version "5.16.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" - integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== - dependencies: - array-buffer-byte-length "^1.0.1" - arraybuffer.prototype.slice "^1.0.3" - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" - es-define-property "^1.0.0" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.4" - get-symbol-description "^1.0.2" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - hasown "^2.0.2" - internal-slot "^1.0.7" - is-array-buffer "^3.0.4" - is-callable "^1.2.7" - is-data-view "^1.0.1" - is-negative-zero "^2.0.3" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.3" - is-string "^1.0.7" - is-typed-array "^1.1.13" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" - safe-array-concat "^1.1.2" - safe-regex-test "^1.0.3" - string.prototype.trim "^1.2.9" - string.prototype.trimend "^1.0.8" - string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.2" - typed-array-length "^1.0.6" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.15" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-get-iterator@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - is-arguments "^1.1.1" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" - -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.3" - es-errors "^1.3.0" - es-set-tostringtag "^2.0.3" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.2" - safe-array-concat "^1.1.2" - -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== - dependencies: - get-intrinsic "^1.2.4" - has-tostringtag "^1.0.2" - hasown "^2.0.1" - -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-next@14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.0.tgz#7e309d426b8afacaba3b32fdbb02ba220b6d0a97" - integrity sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg== - dependencies: - "@next/eslint-plugin-next" "14.1.0" - "@rushstack/eslint-patch" "^1.3.3" - "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" - eslint-import-resolver-node "^0.3.6" - eslint-import-resolver-typescript "^3.5.2" - eslint-plugin-import "^2.28.1" - eslint-plugin-jsx-a11y "^6.7.1" - eslint-plugin-react "^7.33.2" - eslint-plugin-react-hooks "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - -eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-typescript@^3.5.2: - version "3.6.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" - integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== - 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" - -eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@^2.28.1, eslint-plugin-import@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - 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" - -eslint-plugin-jest@^27.6.3: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-jsx-a11y@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== - dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" - array.prototype.flatmap "^1.3.2" - ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" - jsx-ast-utils "^3.3.5" - language-tags "^1.0.9" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - -eslint-plugin-next@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-next/-/eslint-plugin-next-0.0.0.tgz#f9ef680e8f68763c716ab44697c4b3cc3e0b2069" - integrity sha512-IldNDVb6WNduggwRbYzSGZhaskUwVecJ6fhmqwX01+S1aohwAWNzU4me6y47DDzpD/g0fdayNBGxEdt9vKkUtg== - -eslint-plugin-prettier@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -"eslint-plugin-react-hooks@^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": - version "4.6.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" - integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== - -eslint-plugin-react@^7.33.2: - version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" - integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlast "^1.2.4" - array.prototype.flatmap "^1.3.2" - array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.3" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.17" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - object.hasown "^1.1.3" - object.values "^1.1.7" - prop-types "^15.8.1" - resolve "^2.0.0-next.5" - semver "^6.3.1" - string.prototype.matchall "^4.0.10" - -eslint-plugin-simple-import-sort@^12.0.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.0.tgz#8186ad55474d2f5c986a2f1bf70625a981e30d05" - integrity sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig== - -eslint-plugin-unused-imports@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz#63a98c9ad5f622cd9f830f70bc77739f25ccfe0d" - integrity sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ== - dependencies: - eslint-rule-composer "^0.3.0" - -eslint-rule-composer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" - integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.56.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - 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" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -ethers-multicall@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/ethers-multicall/-/ethers-multicall-0.2.3.tgz#872b5ad7d6b5d4d7f2960c33bf36bd46d034ac41" - integrity sha512-RaWQuLy+HzeKOibptlc9RZ6j7bT1H6VnkdAKTHiLx2t/lpyfS2ckXHdQhhRbCaXNc1iu6CgoisgMejxKHg84tg== - dependencies: - ethers "^5.0.0" - -ethers@5.7.2, ethers@^5.0.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9, fast-glob@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - 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" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" - integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== - dependencies: - call-bind "^1.0.5" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - -get-tsconfig@^4.5.0: - version "4.7.5" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.5.tgz#5e012498579e9a6947511ed0cd403272c7acbbaf" - integrity sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw== - dependencies: - resolve-pkg-maps "^1.0.0" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@10.3.10: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - 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" - -glob@^7.1.3, glob@^7.1.4: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" - integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== - dependencies: - define-properties "^1.2.1" - gopd "^1.0.1" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - 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" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-encoding-sniffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== - dependencies: - whatwg-encoding "^2.0.0" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -ignore@^5.2.0, ignore@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -immutable@^4.0.0: - version "4.3.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" - integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.4, internal-slot@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" - integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== - dependencies: - es-errors "^1.3.0" - hasown "^2.0.0" - side-channel "^1.0.4" - -is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" - integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-data-view@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" - integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== - dependencies: - is-typed-array "^1.1.13" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-map@^2.0.2, is-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" - integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== - -is-negative-zero@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" - integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-set@^2.0.2, is-set@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" - integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== - -is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" - integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== - dependencies: - call-bind "^1.0.7" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" - integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== - dependencies: - which-typed-array "^1.1.14" - -is-weakmap@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" - integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" - integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-jsdom@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" - integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/jsdom" "^20.0.0" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jsdom "^20.0.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsdom@^20.0.0: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" - integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== - dependencies: - abab "^2.0.6" - acorn "^8.8.1" - acorn-globals "^7.0.0" - cssom "^0.5.0" - cssstyle "^2.3.0" - data-urls "^3.0.2" - decimal.js "^10.4.2" - domexception "^4.0.0" - escodegen "^2.0.0" - form-data "^4.0.0" - html-encoding-sniffer "^3.0.0" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.1" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.2" - parse5 "^7.1.1" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.2" - w3c-xmlserializer "^4.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^2.0.0" - whatwg-mimetype "^3.0.0" - whatwg-url "^11.0.0" - ws "^8.11.0" - xml-name-validator "^4.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json2mq@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" - integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== - dependencies: - string-convert "^0.2.0" - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -language-subtag-registry@^0.3.20: - version "0.3.23" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" - integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== - -language-tags@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" - integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== - dependencies: - language-subtag-registry "^0.3.20" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.1, minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" - integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -nanoid@^3.3.6, nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -next@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/next/-/next-14.2.3.tgz#f117dd5d5f20c307e7b8e4f9c1c97d961008925d" - integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== - dependencies: - "@next/env" "14.2.3" - "@swc/helpers" "0.5.5" - busboy "1.6.0" - caniuse-lite "^1.0.30001579" - graceful-fs "^4.2.11" - postcss "8.4.31" - styled-jsx "5.1.1" - optionalDependencies: - "@next/swc-darwin-arm64" "14.2.3" - "@next/swc-darwin-x64" "14.2.3" - "@next/swc-linux-arm64-gnu" "14.2.3" - "@next/swc-linux-arm64-musl" "14.2.3" - "@next/swc-linux-x64-gnu" "14.2.3" - "@next/swc-linux-x64-musl" "14.2.3" - "@next/swc-win32-arm64-msvc" "14.2.3" - "@next/swc-win32-ia32-msvc" "14.2.3" - "@next/swc-win32-x64-msvc" "14.2.3" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.2: - version "2.2.10" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" - integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4, object.assign@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" - integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -object.fromentries@^2.0.7: - version "2.0.8" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" - integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.groupby@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" - integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - -object.hasown@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" - integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== - dependencies: - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.values@^1.1.6, object.values@^1.1.7: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse5@^7.0.0, parse5@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== - -postcss-value-parser@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@8.4.31: - version "8.4.31" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" - integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@8.4.38: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.2.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - -pretty-format@^27.0.2: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -qrcode.react@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/qrcode.react/-/qrcode.react-3.1.0.tgz#5c91ddc0340f768316fbdb8fff2765134c2aecd8" - integrity sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -rc-cascader@~3.26.0: - version "3.26.0" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.26.0.tgz#1bcc9c29451047dc99e28fdd125c94828d7ddf76" - integrity sha512-L1dml383TPSJD1I11YwxuVbmqaJY64psZqFp1ETlgl3LEOwDu76Cyl11fw5dmjJhMlUWwM5dECQfqJgfebhUjg== - dependencies: - "@babel/runtime" "^7.12.5" - array-tree-filter "^2.1.0" - classnames "^2.3.1" - rc-select "~14.14.0" - rc-tree "~5.8.1" - rc-util "^5.37.0" - -rc-checkbox@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/rc-checkbox/-/rc-checkbox-3.3.0.tgz#0ffcb65ab78c7d2fcd1a0d6554af36786516bd02" - integrity sha512-Ih3ZaAcoAiFKJjifzwsGiT/f/quIkxJoklW4yKGho14Olulwn8gN7hOBve0/WGDg5o/l/5mL0w7ff7/YGvefVw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.3.2" - rc-util "^5.25.2" - -rc-collapse@~3.7.3: - version "3.7.3" - resolved "https://registry.yarnpkg.com/rc-collapse/-/rc-collapse-3.7.3.tgz#68161683d8fd1004bef4eb281fc106f3c8dc16eb" - integrity sha512-60FJcdTRn0X5sELF18TANwtVi7FtModq649H11mYF1jh83DniMoM4MqY627sEKRCTm4+WXfGDcB7hY5oW6xhyw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.3.4" - rc-util "^5.27.0" - -rc-dialog@~9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/rc-dialog/-/rc-dialog-9.4.0.tgz#194c107d34cb36a56f1db4a49dc73f6d59eeae85" - integrity sha512-AScCexaLACvf8KZRqCPz12BJ8olszXOS4lKlkMyzDQHS1m0zj1KZMYgmMCh39ee0Dcv8kyrj8mTqxuLyhH+QuQ== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/portal" "^1.0.0-8" - classnames "^2.2.6" - rc-motion "^2.3.0" - rc-util "^5.21.0" - -rc-drawer@~7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/rc-drawer/-/rc-drawer-7.1.0.tgz#2beabb8bab1784aea255d0d850bc206c3dc715da" - integrity sha512-nBE1rF5iZvpavoyqhSSz2mk/yANltA7g3aF0U45xkx381n3we/RKs9cJfNKp9mSWCedOKWt9FLEwZDaAaOGn2w== - dependencies: - "@babel/runtime" "^7.23.9" - "@rc-component/portal" "^1.1.1" - classnames "^2.2.6" - rc-motion "^2.6.1" - rc-util "^5.38.1" - -rc-dropdown@~4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-4.2.0.tgz#c6052fcfe9c701487b141e411cdc277dc7c6f061" - integrity sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng== - dependencies: - "@babel/runtime" "^7.18.3" - "@rc-component/trigger" "^2.0.0" - classnames "^2.2.6" - rc-util "^5.17.0" - -rc-field-form@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-2.0.1.tgz#97dc352f3899e9617f2abfd0c09bf0fcd17409e2" - integrity sha512-3WK/POHBcfMFKrzScrkmgMIXqoVQ0KgVwcVnej/ukwuQG4ZHCJaTi2KhM+tWTK4WODBXbmjKg5pKHj2IVmSg4A== - dependencies: - "@babel/runtime" "^7.18.0" - "@rc-component/async-validator" "^5.0.3" - rc-util "^5.32.2" - -rc-image@~7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/rc-image/-/rc-image-7.6.0.tgz#2867087b77c8595ea9eb37d18ca863e47904b191" - integrity sha512-tL3Rvd1sS+frZQ01i+tkeUPaOeFz2iG9/scAt/Cfs0hyCRVA/w0Pu1J/JxIX8blalvmHE0bZQRYdOmRAzWu4Hg== - dependencies: - "@babel/runtime" "^7.11.2" - "@rc-component/portal" "^1.0.2" - classnames "^2.2.6" - rc-dialog "~9.4.0" - rc-motion "^2.6.2" - rc-util "^5.34.1" - -rc-input-number@~9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/rc-input-number/-/rc-input-number-9.1.0.tgz#fd577db284b65548c156500322a2feaa04321565" - integrity sha512-NqJ6i25Xn/AgYfVxynlevIhX3FuKlMwIFpucGG1h98SlK32wQwDK0zhN9VY32McOmuaqzftduNYWWooWz8pXQA== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/mini-decimal" "^1.0.1" - classnames "^2.2.5" - rc-input "~1.5.0" - rc-util "^5.40.1" - -rc-input@~1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-1.5.1.tgz#36d37eb045f1fa17de7da1a3fab94edfa331ab92" - integrity sha512-+nOzQJDeIfIpNP/SgY45LXSKbuMlp4Yap2y8c+ZpU7XbLmNzUd6+d5/S75sA/52jsVE6S/AkhkkDEAOjIu7i6g== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.18.1" - -rc-mentions@~2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-2.13.1.tgz#14586ffa4a1ddd4079564f38abf2b4351671feca" - integrity sha512-DSyUDq/PPCleUX1eghIn371lTSRQsIuCs1N7xR9nZcHP9R1NkE7JjpWUP8Gy4EGVPu0JN0qIcokxYJaoGPnofg== - dependencies: - "@babel/runtime" "^7.22.5" - "@rc-component/trigger" "^2.0.0" - classnames "^2.2.6" - rc-input "~1.5.0" - rc-menu "~9.14.0" - rc-textarea "~1.7.0" - rc-util "^5.34.1" - -rc-menu@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.14.0.tgz#5e072cfc731a6dd95005d4247f02543679b0836b" - integrity sha512-La3LBCDMLMs9Q/8mTGbnscb+ZeJ26ebkLz9xJFHd2SD8vfsCKl1Z/k3mwbxyKL01lB40fel1s9Nn9LAv/nmVJQ== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/trigger" "^2.0.0" - classnames "2.x" - rc-motion "^2.4.3" - rc-overflow "^1.3.1" - rc-util "^5.27.0" - -rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4, rc-motion@^2.6.1, rc-motion@^2.6.2, rc-motion@^2.9.0, rc-motion@^2.9.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.1.tgz#5b405437f9f673ed1a59b6b797c2227c2d6b3d91" - integrity sha512-QD4bUqByjVQs7PhUT1d4bNxvtTcK9ETwtg7psbDfo6TmYalH/1hhjj4r2hbhW7g5OOEqYHhfwfj4noIvuOVRtQ== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-util "^5.39.3" - -rc-notification@~5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/rc-notification/-/rc-notification-5.4.0.tgz#c5ea20bfe4ed2dbacc7ef945777626c050945db8" - integrity sha512-li19y9RoYJciF3WRFvD+DvWS70jdL8Fr+Gfb/OshK+iY6iTkwzoigmSIp76/kWh5tF5i/i9im12X3nsF85GYdA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.9.0" - rc-util "^5.20.1" - -rc-overflow@^1.3.1, rc-overflow@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/rc-overflow/-/rc-overflow-1.3.2.tgz#72ee49e85a1308d8d4e3bd53285dc1f3e0bcce2c" - integrity sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-resize-observer "^1.0.0" - rc-util "^5.37.0" - -rc-pagination@~4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/rc-pagination/-/rc-pagination-4.0.4.tgz#ea401388ae86eac17ed5b41212d487f12b65b773" - integrity sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.3.2" - rc-util "^5.38.0" - -rc-picker@~4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-4.5.0.tgz#ae7a028ed6184e0ef40a2c8aaeb9d5dbef89d4b8" - integrity sha512-suqz9bzuhBQlf7u+bZd1bJLPzhXpk12w6AjQ9BTPTiFwexVZgUKViG1KNLyfFvW6tCUZZK0HmCCX7JAyM+JnCg== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/trigger" "^2.0.0" - classnames "^2.2.1" - rc-overflow "^1.3.2" - rc-resize-observer "^1.4.0" - rc-util "^5.38.1" - -rc-progress@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-4.0.0.tgz#5382147d9add33d3a5fbd264001373df6440e126" - integrity sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.6" - rc-util "^5.16.1" - -rc-rate@~2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/rc-rate/-/rc-rate-2.12.0.tgz#0182deffed3b009cdcc61660da8746c39ed91ed5" - integrity sha512-g092v5iZCdVzbjdn28FzvWebK2IutoVoiTeqoLTj9WM7SjA/gOJIw5/JFZMRyJYYVe1jLAU2UhAfstIpCNRozg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.0.1" - -rc-resize-observer@^1.0.0, rc-resize-observer@^1.1.0, rc-resize-observer@^1.3.1, rc-resize-observer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.4.0.tgz#7bba61e6b3c604834980647cce6451914750d0cc" - integrity sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q== - dependencies: - "@babel/runtime" "^7.20.7" - classnames "^2.2.1" - rc-util "^5.38.0" - resize-observer-polyfill "^1.5.1" - -rc-segmented@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/rc-segmented/-/rc-segmented-2.3.0.tgz#b3fe080fb434a266c02e30bb62a47d2c6e094341" - integrity sha512-I3FtM5Smua/ESXutFfb8gJ8ZPcvFR+qUgeeGFQHBOvRiRKyAk4aBE5nfqrxXx+h8/vn60DQjOt6i4RNtrbOobg== - dependencies: - "@babel/runtime" "^7.11.1" - classnames "^2.2.1" - rc-motion "^2.4.4" - rc-util "^5.17.0" - -rc-select@~14.14.0: - version "14.14.0" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.14.0.tgz#110771fad72496843b245236bcb0007553b9fe0d" - integrity sha512-Uo2wulrjoPPRLCPd7zlK4ZFVJxlTN//yp1xWP/U+TUOQCyXrT+Duvq/Si5OzVcmQyWAUSbsplc2OwNNhvbOeKQ== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/trigger" "^2.1.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-overflow "^1.3.1" - rc-util "^5.16.1" - rc-virtual-list "^3.5.2" - -rc-slider@~10.6.2: - version "10.6.2" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.6.2.tgz#8bd3b63b24f2f3682ea1bf86d021073189cf33eb" - integrity sha512-FjkoFjyvUQWcBo1F3RgSglky3ar0+qHLM41PlFVYB4Bj3RD8E/Mv7kqMouLFBU+3aFglMzzctAIWRwajEuueSw== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.5" - rc-util "^5.36.0" - -rc-steps@~6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/rc-steps/-/rc-steps-6.0.1.tgz#c2136cd0087733f6d509209a84a5c80dc29a274d" - integrity sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g== - dependencies: - "@babel/runtime" "^7.16.7" - classnames "^2.2.3" - rc-util "^5.16.1" - -rc-switch@~4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rc-switch/-/rc-switch-4.1.0.tgz#f37d81b4e0c5afd1274fd85367b17306bf25e7d7" - integrity sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg== - dependencies: - "@babel/runtime" "^7.21.0" - classnames "^2.2.1" - rc-util "^5.30.0" - -rc-table@~7.45.6: - version "7.45.6" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.45.6.tgz#53286fc08cd18f0be704de76fdbf19d1de7749da" - integrity sha512-FYsTya3RQzLYct+o3fqHIZQIwrmsvrvhTg/I6hzlJZ1XoVAGoTmgkN1mMilVlYgksZTey9BCNYh94c6yhdjTXQ== - dependencies: - "@babel/runtime" "^7.10.1" - "@rc-component/context" "^1.4.0" - classnames "^2.2.5" - rc-resize-observer "^1.1.0" - rc-util "^5.37.0" - rc-virtual-list "^3.11.1" - -rc-tabs@~15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/rc-tabs/-/rc-tabs-15.1.0.tgz#6f6addf3ec4d0815f9f05d1317b47a579838e92f" - integrity sha512-xTNz4Km1025emtkv1q7xKhjPwAtXr/wycuXVTAcFJg+DKhnPDDbnwbA9KRW0SawAVOGvVEj8ZrBlU0u0FGLrbg== - dependencies: - "@babel/runtime" "^7.11.2" - classnames "2.x" - rc-dropdown "~4.2.0" - rc-menu "~9.14.0" - rc-motion "^2.6.2" - rc-resize-observer "^1.0.0" - rc-util "^5.34.1" - -rc-textarea@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-1.7.0.tgz#115c421359dddee58c601008ec2209b41cb8f8df" - integrity sha512-UxizYJkWkmxP3zofXgc487QiGyDmhhheDLLjIWbFtDmiru1ls30KpO8odDaPyqNUIy9ugj5djxTEuezIn6t3Jg== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "^2.2.1" - rc-input "~1.5.0" - rc-resize-observer "^1.0.0" - rc-util "^5.27.0" - -rc-tooltip@~6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/rc-tooltip/-/rc-tooltip-6.2.0.tgz#4dd7575674137a5b14f118a5c16435d3f5e4a9c9" - integrity sha512-iS/3iOAvtDh9GIx1ulY7EFUXUtktFccNLsARo3NPgLf0QW9oT0w3dA9cYWlhqAKmD+uriEwdWz1kH0Qs4zk2Aw== - dependencies: - "@babel/runtime" "^7.11.2" - "@rc-component/trigger" "^2.0.0" - classnames "^2.3.1" - -rc-tree-select@~5.21.0: - version "5.21.0" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-5.21.0.tgz#4ff94d5c28cba9810c4970d1f12ab7248c3b6e55" - integrity sha512-w+9qEu6zh0G3wt9N/hzWNSnqYH1i9mH1Nqxo0caxLRRFXF5yZWYmpCDoDTMdQM1Y4z3Q5yj08qyrPH/d4AtumA== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-select "~14.14.0" - rc-tree "~5.8.1" - rc-util "^5.16.1" - -rc-tree@~5.8.1, rc-tree@~5.8.7: - version "5.8.7" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.8.7.tgz#79fe560eca8a998a5cd866cdf374ffc3643754f1" - integrity sha512-cpsIQZ4nNYwpj6cqPRt52e/69URuNdgQF9wZ10InmEf8W3+i0A41OVmZWwHuX9gegQSqj+DPmaDkZFKQZ+ZV1w== - dependencies: - "@babel/runtime" "^7.10.1" - classnames "2.x" - rc-motion "^2.0.1" - rc-util "^5.16.1" - rc-virtual-list "^3.5.1" - -rc-upload@~4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/rc-upload/-/rc-upload-4.5.2.tgz#ea493fbaaf57d9369ee954b20e1d8bc35c818a1a" - integrity sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA== - dependencies: - "@babel/runtime" "^7.18.3" - classnames "^2.2.5" - rc-util "^5.2.0" - -rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2.0, rc-util@^5.20.1, rc-util@^5.21.0, rc-util@^5.24.4, rc-util@^5.25.2, rc-util@^5.27.0, rc-util@^5.30.0, rc-util@^5.31.1, rc-util@^5.32.2, rc-util@^5.34.1, rc-util@^5.35.0, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.39.3, rc-util@^5.40.1: - version "5.41.0" - resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.41.0.tgz#b1ba000d4f3a9e72563370a3243b59f89b40e1bd" - integrity sha512-xtlCim9RpmVv0Ar2Nnc3WfJCxjQkTf3xHPWoFdjp1fSs2NirQwqiQrfqdU9HUe0kdfb168M/T8Dq0IaX50xeKg== - dependencies: - "@babel/runtime" "^7.18.3" - react-is "^18.2.0" - -rc-virtual-list@^3.11.1, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.14.2.tgz#8ffee57100eab1eeae8df6a67bf75d0b7fd176cc" - integrity sha512-rA+W5xryhklJAcmswNyuKB3ZGeB855io+yOFQK5u/RXhjdshGblfKpNkQr4/9fBhZns0+uiL/0/s6IP2krtSmg== - dependencies: - "@babel/runtime" "^7.20.0" - classnames "^2.2.6" - rc-resize-observer "^1.0.0" - rc-util "^5.36.0" - -react-canvas-confetti@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/react-canvas-confetti/-/react-canvas-confetti-1.2.1.tgz#22ac64cbc478cf57cb5f61c130322e359b35389d" - integrity sha512-onNjQNkhQjrB2JVCeRpJW7o8VlBNJvo3Eht9zlQlofNLVvvOd1+PzBLU5Ev8n5sFBkTbKJmIUVG0eZnkAl5cpg== - dependencies: - "@types/canvas-confetti" "1.4.0" - canvas-confetti "1.4.0" - -react-dom@^18.3.1: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" - integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.2" - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-is@^18.0.0, react-is@^18.2.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -react@^18.3.1: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" - integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== - dependencies: - loose-envify "^1.1.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reflect.getprototypeof@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" - integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.1" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== - dependencies: - call-bind "^1.0.6" - define-properties "^1.2.1" - es-errors "^1.3.0" - set-function-name "^2.0.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.20.0, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.5: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-array-concat@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" - integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== - dependencies: - call-bind "^1.0.7" - get-intrinsic "^1.2.4" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-regex-test@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" - integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== - dependencies: - call-bind "^1.0.6" - es-errors "^1.3.0" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3.0.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sass@^1.72.0: - version "1.77.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" - integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -saxes@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== - dependencies: - xmlchars "^2.2.0" - -scheduler@^0.23.2: - version "0.23.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" - integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== - dependencies: - loose-envify "^1.1.0" - -scroll-into-view-if-needed@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz#fa9524518c799b45a2ef6bbffb92bcad0296d01f" - integrity sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ== - dependencies: - compute-scroll-into-view "^3.0.2" - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -set-function-name@^2.0.1, set-function-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" - integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.2" - -shallowequal@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4, side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -stop-iteration-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - -string-convert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" - integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.10: - version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" - integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-errors "^1.3.0" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - regexp.prototype.flags "^1.5.2" - set-function-name "^2.0.2" - side-channel "^1.0.6" - -string.prototype.trim@^1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" - integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-abstract "^1.23.0" - es-object-atoms "^1.0.0" - -string.prototype.trimend@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" - integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -string.prototype.trimstart@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" - integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -styled-components@^6.1.8: - version "6.1.11" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.11.tgz#01948e5195bf1d39e57e0a85b41958c80e40cfb8" - integrity sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA== - dependencies: - "@emotion/is-prop-valid" "1.2.2" - "@emotion/unitless" "0.8.1" - "@types/stylis" "4.2.5" - css-to-react-native "3.2.0" - csstype "3.1.3" - postcss "8.4.38" - shallowequal "1.1.0" - stylis "4.3.2" - tslib "2.6.2" - -styled-jsx@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" - integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw== - dependencies: - client-only "0.0.1" - -stylis@4.3.2, stylis@^4.0.13: - version "4.3.2" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" - integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -throttle-debounce@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" - integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== - -tough-cookie@^4.1.2: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== - dependencies: - punycode "^2.1.1" - -ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@2.6.2, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typed-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" - integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - is-typed-array "^1.1.13" - -typed-array-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" - integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== - 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" - -typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== - 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" - -typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== - 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" - -typescript@5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" - integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -update-browserslist-db@^1.0.13: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -usehooks-ts@^2.14.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/usehooks-ts/-/usehooks-ts-2.16.0.tgz#31deaa2f1147f65666aae925bd890b54e63b0d3f" - integrity sha512-bez95WqYujxp6hFdM/CpRDiVPirZPxlMzOH2QB8yopoKQMXpscyZoxOjpEdaxvV+CAWUDSM62cWnqHE0E/MZ7w== - dependencies: - lodash.debounce "^4.0.8" - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -w3c-xmlserializer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" - integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== - dependencies: - xml-name-validator "^4.0.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -webidl-conversions@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== - -whatwg-encoding@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== - dependencies: - iconv-lite "0.6.3" - -whatwg-mimetype@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== - -whatwg-url@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== - dependencies: - tr46 "^3.0.0" - webidl-conversions "^7.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - 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" - -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" - integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== - dependencies: - is-map "^2.0.3" - is-set "^2.0.3" - is-weakmap "^2.0.2" - is-weakset "^2.0.3" - -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== - dependencies: - available-typed-arrays "^1.0.7" - call-bind "^1.0.7" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.2" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@^8.11.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.3.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - 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" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/hardhat.config.js b/hardhat.config.js deleted file mode 100644 index 854bee0ff..000000000 --- a/hardhat.config.js +++ /dev/null @@ -1,16 +0,0 @@ -require('dotenv').config(); - -/**@type import('hardhat/config').HardhatUserConfig */ -const config = { - defaultNetwork: "hardhat", - networks: { - hardhat: { - forking: { - url: process.env.FORK_URL, - }, - chainId: 100, - }, - }, -}; - -module.exports = config \ No newline at end of file diff --git a/operate/cli.py b/operate/cli.py index 7d3292760..a08d312b9 100644 --- a/operate/cli.py +++ b/operate/cli.py @@ -395,27 +395,33 @@ async def _create_wallet(request: Request) -> t.List[t.Dict]: @with_retries async def _get_safes(request: Request) -> t.List[t.Dict]: """Create wallet safe""" - safes = [] + all_safes = [] for wallet in operate.wallet_manager: - safes.append({wallet.ledger_type: wallet.safe}) - return JSONResponse(content=safes) + safes = [] + if wallet.safes is not None: + safes = list(wallet.safes.values()) + all_safes.append({wallet.ledger_type: safes}) + return JSONResponse(content=all_safes) @app.get("/api/wallet/safe/{chain}") @with_retries async def _get_safe(request: Request) -> t.List[t.Dict]: """Create wallet safe""" - ledger_type = get_ledger_type_from_chain_type( - chain=ChainType.from_string(request.path_params["chain"]) - ) + chain_type = ChainType.from_string(request.path_params["chain"]) + ledger_type = get_ledger_type_from_chain_type(chain=chain_type) manager = operate.wallet_manager if not manager.exists(ledger_type=ledger_type): return JSONResponse( content={"error": "Wallet does not exist"}, status_code=404, ) + safes = manager.load(ledger_type=ledger_type).safes + if safes is None or safes.get(chain_type) is None: + return JSONResponse(content={"error": "No safes found"}) + return JSONResponse( content={ - "safe": manager.load(ledger_type=ledger_type).safe, + "safe": safes[chain_type], }, ) @@ -443,22 +449,73 @@ async def _create_safe(request: Request) -> t.List[t.Dict]: return JSONResponse(content={"error": "Wallet does not exist"}) wallet = manager.load(ledger_type=ledger_type) - if wallet.safe is not None: + if wallet.safes is not None and wallet.safes.get(chain_type) is not None: return JSONResponse( - content={"safe": wallet.safe, "message": "Safe already exists!"} + content={"safe": wallet.safes.get(chain_type), "message": "Safe already exists!"} ) + safes = t.cast(t.Dict[ChainType, str], wallet.safes) wallet.create_safe( # pylint: disable=no-member chain_type=chain_type, owner=data.get("owner"), ) wallet.transfer( - to=t.cast(str, wallet.safe), + to=t.cast(str, safes.get(chain_type)), amount=int(1e18), chain_type=chain_type, from_safe=False, ) - return JSONResponse(content={"safe": wallet.safe, "message": "Safe created!"}) + return JSONResponse(content={"safe": safes.get(chain_type), "message": "Safe created!"}) + + + @app.post("/api/wallet/safes") + @with_retries + async def _create_safes(request: Request) -> t.List[t.Dict]: + """Create wallet safes""" + if operate.user_account is None: + return JSONResponse( + content={"error": "Cannot create safe; User account does not exist!"}, + status_code=400, + ) + + if operate.password is None: + return JSONResponse( + content={"error": "You need to login before creating a safe"}, + status_code=401, + ) + + data = await request.json() + chain_types = [ChainType(chain_type) for chain_type in data["chain_types"]] + # check that all chains are supported + for chain_type in chain_types: + ledger_type = get_ledger_type_from_chain_type(chain=chain_type) + manager = operate.wallet_manager + if not manager.exists(ledger_type=ledger_type): + return JSONResponse(content={"error": f"Wallet does not exist for chain_type {chain_type}"}) + + # mint the safes + for chain_type in chain_types: + ledger_type = get_ledger_type_from_chain_type(chain=chain_type) + manager = operate.wallet_manager + + wallet = manager.load(ledger_type=ledger_type) + if wallet.safes is not None and wallet.safes.get(chain_type) is not None: + logger.info(f"Safe already exists for chain_type {chain_type}") + continue + + safes = t.cast(t.Dict[ChainType, str], wallet.safes) + wallet.create_safe( # pylint: disable=no-member + chain_type=chain_type, + owner=data.get("owner"), + ) + wallet.transfer( + to=t.cast(str, safes.get(chain_type)), + amount=int(1e18), + chain_type=chain_type, + from_safe=False, + ) + + return JSONResponse(content={"safes": safes, "message": "Safes created!"}) @app.put("/api/wallet/safe") @with_retries @@ -505,47 +562,33 @@ async def _create_services(request: Request) -> JSONResponse: return USER_NOT_LOGGED_IN_ERROR template = await request.json() manager = operate.service_manager() - update = False if len(manager.json) > 0: old_hash = manager.json[0]["hash"] if old_hash == template["hash"]: logger.info(f'Loading service {template["hash"]}') service = manager.load_or_create( hash=template["hash"], - rpc=template["configuration"]["rpc"], - on_chain_user_params=services.manage.OnChainUserParams.from_json( - template["configuration"] - ), + service_template=template, ) else: logger.info(f"Updating service from {old_hash} to " + template["hash"]) service = manager.update_service( old_hash=old_hash, new_hash=template["hash"], - rpc=template["configuration"]["rpc"], - on_chain_user_params=services.manage.OnChainUserParams.from_json( - template["configuration"] - ), - from_safe=True, + service_template=template, ) - update = True else: logger.info(f'Creating service {template["hash"]}') service = manager.load_or_create( hash=template["hash"], - rpc=template["configuration"]["rpc"], - on_chain_user_params=services.manage.OnChainUserParams.from_json( - template["configuration"] - ), + service_template=template, ) if template.get("deploy", False): def _fn() -> None: - manager.deploy_service_onchain_from_safe( - hash=service.hash, update=update - ) - manager.stake_service_on_chain_from_safe(hash=service.hash) + manager.deploy_service_onchain_from_safe(hash=service.hash) + # manager.stake_service_on_chain_from_safe(hash=service.hash) # Done inside deploy_service_onchain manager.fund_service(hash=service.hash) manager.deploy_service_locally(hash=service.hash) @@ -570,8 +613,8 @@ async def _update_services(request: Request) -> JSONResponse: ) if template.get("deploy", False): manager = operate.service_manager() - manager.deploy_service_onchain_from_safe(hash=service.hash, update=True) - manager.stake_service_on_chain_from_safe(hash=service.hash) + manager.deploy_service_onchain_from_safe(hash=service.hash) + # manager.stake_service_on_chain_from_safe(hash=service.hash) # Done in deploy_service_onchain_from_safe manager.fund_service(hash=service.hash) manager.deploy_service_locally(hash=service.hash) schedule_funding_job(service=service.hash) @@ -595,6 +638,7 @@ async def _get_service(request: Request) -> JSONResponse: ) ) + # TODO this endpoint is possibly not used @app.post("/api/services/{service}/onchain/deploy") @with_retries async def _deploy_service_onchain(request: Request) -> JSONResponse: @@ -660,6 +704,7 @@ async def _get_service_deployment(request: Request) -> JSONResponse: @with_retries async def _build_service_locally(request: Request) -> JSONResponse: """Create a service.""" + # TODO: add support for chain id. if not operate.service_manager().exists(service=request.path_params["service"]): return service_not_found_error(service=request.path_params["service"]) deployment = ( @@ -687,7 +732,7 @@ async def _start_service_locally(request: Request) -> JSONResponse: def _fn() -> None: manager.deploy_service_onchain(hash=service) - manager.stake_service_on_chain(hash=service) + # manager.stake_service_on_chain(hash=service) manager.fund_service(hash=service) manager.deploy_service_locally(hash=service, force=True) diff --git a/operate/constants.py b/operate/constants.py index 6136f15c2..8af868559 100644 --- a/operate/constants.py +++ b/operate/constants.py @@ -33,5 +33,5 @@ SERVICE_YAML = "service.yaml" ON_CHAIN_INTERACT_TIMEOUT = 120.0 -ON_CHAIN_INTERACT_RETRIES = 40.0 +ON_CHAIN_INTERACT_RETRIES = 40 ON_CHAIN_INTERACT_SLEEP = 3.0 diff --git a/operate/ledger/__init__.py b/operate/ledger/__init__.py index 078a93d1e..eaf88968d 100644 --- a/operate/ledger/__init__.py +++ b/operate/ledger/__init__.py @@ -22,6 +22,8 @@ import os import typing as t +from autonomy.chain.config import Chain + from operate.ledger.base import LedgerHelper from operate.ledger.ethereum import Ethereum from operate.ledger.solana import Solana @@ -33,10 +35,12 @@ GOERLI_PUBLIC_RPC = os.environ.get("DEV_RPC", "https://ethereum-goerli.publicnode.com") SOLANA_PUBLIC_RPC = os.environ.get("DEV_RPC", "https://api.mainnet-beta.solana.com") -ETHEREUM_RPC = os.environ.get("DEV_RPC", "https://ethereum.publicnode.com") +ETHEREUM_RPC = os.environ.get("ETHEREUM_RPC", "https://ethereum.publicnode.com") GNOSIS_RPC = os.environ.get("DEV_RPC", "https://rpc-gate.autonolas.tech/gnosis-rpc/") GOERLI_RPC = os.environ.get("DEV_RPC", "https://ethereum-goerli.publicnode.com") SOLANA_RPC = os.environ.get("DEV_RPC", "https://api.mainnet-beta.solana.com") +OPTIMISM_RPC = os.environ.get("OPTIMISM_RPC", "https://optimism-rpc.publicnode.com") +BASE_RPC = os.environ.get("BASE_RPC", "https://base-rpc.publicnode.com") PUBLIC_RPCS = { ChainType.ETHEREUM: ETHEREUM_PUBLIC_RPC, @@ -50,12 +54,16 @@ ChainType.GNOSIS: GNOSIS_RPC, ChainType.GOERLI: GOERLI_RPC, ChainType.SOLANA: SOLANA_RPC, + ChainType.OPTIMISM: OPTIMISM_RPC, + ChainType.BASE: BASE_RPC, } CHAIN_HELPERS: t.Dict[ChainType, t.Type[LedgerHelper]] = { ChainType.ETHEREUM: Ethereum, ChainType.GNOSIS: Ethereum, ChainType.GOERLI: Ethereum, + ChainType.BASE: Ethereum, + ChainType.OPTIMISM: Ethereum, ChainType.SOLANA: Solana, } diff --git a/operate/ledger/profiles.py b/operate/ledger/profiles.py index 94a15512f..cb9fa85b1 100644 --- a/operate/ledger/profiles.py +++ b/operate/ledger/profiles.py @@ -32,13 +32,61 @@ "gnosis_safe_same_address_multisig": "0x6e7f594f680f7aBad18b7a63de50F0FeE47dfD06", "multisend": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", } + ), + ChainType.OPTIMISM: ContractAddresses( + { + "service_manager": "0xFbBEc0C8b13B38a9aC0499694A69a10204c5E2aB", + "service_registry": "0x3d77596beb0f130a4415df3D2D8232B3d3D31e44", + "service_registry_token_utility": "0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac", + "gnosis_safe_proxy_factory": "0xE43d4F4103b623B61E095E8bEA34e1bc8979e168", + "gnosis_safe_same_address_multisig": "0xb09CcF0Dbf0C178806Aaee28956c74bd66d21f73", + "multisend": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + } + ), + ChainType.ETHEREUM: ContractAddresses( + { + "service_manager": "0x2EA682121f815FBcF86EA3F3CaFdd5d67F2dB143", + "service_registry": "0x48b6af7B12C71f09e2fC8aF4855De4Ff54e775cA", + "service_registry_token_utility": "0x3Fb926116D454b95c669B6Bf2E7c3bad8d19affA", + "gnosis_safe_proxy_factory": "0x46C0D07F55d4F9B5Eed2Fc9680B5953e5fd7b461", + "gnosis_safe_same_address_multisig": "0xfa517d01DaA100cB1932FA4345F68874f7E7eF46", + "multisend": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + } + ), + ChainType.BASE: ContractAddresses( + { + "service_manager": "0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b", + "service_registry": "0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE", + "service_registry_token_utility": "0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5", + "gnosis_safe_proxy_factory": "0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac", + "gnosis_safe_same_address_multisig": "0xFbBEc0C8b13B38a9aC0499694A69a10204c5E2aB", + "multisend": "0x40A2aCCbd92BCA938b02010E17A5b8929b49130D", + } ) } STAKING = { - ChainType.GNOSIS: "0xEE9F19b5DF06c7E8Bfc7B28745dcf944C504198A", + ChainType.GNOSIS: { + "pearl_alpha": "0xEE9F19b5DF06c7E8Bfc7B28745dcf944C504198A", + "pearl_beta": "0xeF44Fb0842DDeF59D37f85D61A1eF492bbA6135d", + }, + ChainType.OPTIMISM: { + "pearl_alpha": "0xEE9F19b5DF06c7E8Bfc7B28745dcf944C504198A", + "pearl_beta": "0xeF44Fb0842DDeF59D37f85D61A1eF492bbA6135d", + }, + ChainType.BASE: { + "pearl_alpha": "0xEE9F19b5DF06c7E8Bfc7B28745dcf944C504198A", + "pearl_beta": "0xeF44Fb0842DDeF59D37f85D61A1eF492bbA6135d", + }, + ChainType.ETHEREUM: { + "pearl_alpha": "0xEE9F19b5DF06c7E8Bfc7B28745dcf944C504198A", + "pearl_beta": "0xeF44Fb0842DDeF59D37f85D61A1eF492bbA6135d", + }, } OLAS = { ChainType.GNOSIS: "0xcE11e14225575945b8E6Dc0D4F2dD4C570f79d9f", + ChainType.OPTIMISM: "0x01B8b6384298D4848E3BE63D4C9D17830EeE488A", + ChainType.BASE: "0x54330d28ca3357F294334BDC454a032e7f353416", + ChainType.ETHEREUM: "0x0001A500A6B18995B03f44bb040A5fFc28E45CB0", } diff --git a/operate/services/manage.py b/operate/services/manage.py index f1cb481a0..75909e5a0 100644 --- a/operate/services/manage.py +++ b/operate/services/manage.py @@ -21,12 +21,15 @@ import asyncio import logging +import os import shutil import traceback import typing as t +from collections import Counter from concurrent.futures import ThreadPoolExecutor from pathlib import Path +import requests from aea.helpers.base import IPFSHash from aea.helpers.logging import setup_logger from autonomy.chain.base import registry_contracts @@ -36,13 +39,17 @@ from operate.ledger.profiles import CONTRACTS, OLAS, STAKING from operate.services.protocol import EthSafeTxBuilder, OnChainManager, StakingState from operate.services.service import ( + ChainConfig, DELETE_PREFIX, Deployment, + NON_EXISTENT_TOKEN, OnChainData, OnChainState, OnChainUserParams, Service, ) +from operate.types import LedgerConfig, ServiceTemplate, ChainType +from operate.utils.gnosis import NULL_ADDRESS from operate.wallet.master import MasterWalletManager @@ -59,6 +66,8 @@ DOCKER_COMPOSE_YAML = "docker-compose.yaml" SERVICE_YAML = "service.yaml" HTTP_OK = 200 +URI_HASH_POSITION = 7 +IPFS_GATEWAY = "https://gateway.autonolas.tech/ipfs/" class ServiceManager: @@ -99,8 +108,16 @@ def json(self) -> t.List[t.Dict]: continue if not path.name.startswith("bafybei"): continue - service = Service.load(path=path) - data.append(service.json) + try: + service = Service.load(path=path) + data.append(service.json) + except Exception as e: # pylint: disable=broad-except + self.logger.warning( + f"Failed to load service: {path.name}. Exception: {e}" + ) + # delete the invalid path + shutil.rmtree(path) + self.logger.info(f"Deleted invalid service: {path.name}") return data def exists(self, service: str) -> bool: @@ -115,48 +132,47 @@ def get_on_chain_manager(self, service: Service) -> OnChainManager: contracts=CONTRACTS[service.ledger_config.chain], ) - def get_eth_safe_tx_builder(self, service: Service) -> EthSafeTxBuilder: + def get_eth_safe_tx_builder(self, ledger_config: LedgerConfig) -> EthSafeTxBuilder: """Get EthSafeTxBuilder instance.""" return EthSafeTxBuilder( - rpc=service.ledger_config.rpc, - wallet=self.wallet_manager.load(service.ledger_config.type), - contracts=CONTRACTS[service.ledger_config.chain], + rpc=ledger_config.rpc, + wallet=self.wallet_manager.load(ledger_config.type), + contracts=CONTRACTS[ledger_config.chain], ) def load_or_create( self, hash: str, - rpc: t.Optional[str] = None, - on_chain_user_params: t.Optional[OnChainUserParams] = None, + service_template: t.Optional[ServiceTemplate] = None, keys: t.Optional[t.List[Key]] = None, ) -> Service: """ Create or load a service :param hash: Service hash - :param rpc: RPC string - :param on_chain_user_params: On-chain user parameters + :param service_template: Service template :param keys: Keys :return: Service instance """ path = self.path / hash if path.exists(): - return Service.load(path=path) + service = Service.load(path=path) + + if service_template is not None: + service.update_user_params_from_template(service_template=service_template) - if rpc is None: - raise ValueError("RPC cannot be None when creating a new service") + return service - if on_chain_user_params is None: + if service_template is None: raise ValueError( - "On-chain user parameters cannot be None when creating a new service" + "'service_template' cannot be None when creating a new service" ) service = Service.new( hash=hash, keys=keys or [], - rpc=rpc, storage=self.path, - on_chain_user_params=on_chain_user_params, + service_template=service_template, ) if not service.keys: @@ -168,6 +184,40 @@ def load_or_create( return service + def _get_on_chain_state(self, chain_config: ChainConfig) -> OnChainState: + chain_data = chain_config.chain_data + ledger_config = chain_config.ledger_config + if chain_data.token == NON_EXISTENT_TOKEN: + service_state = OnChainState.NON_EXISTENT + chain_data.on_chain_state = service_state + # TODO save service state + # service.store() + return service_state + + sftxb = self.get_eth_safe_tx_builder(ledger_config=ledger_config) + info = sftxb.info(token_id=chain_data.token) + service_state = OnChainState(info["service_state"]) + chain_data.on_chain_state = service_state + # TODO save service state + # service.store() + return service_state + + def _get_on_chain_hash(self, chain_config: ChainConfig) -> t.Optional[str]: + chain_data = chain_config.chain_data + ledger_config = chain_config.ledger_config + if chain_data.token == NON_EXISTENT_TOKEN: + return None + + sftxb = self.get_eth_safe_tx_builder(ledger_config=ledger_config) + info = sftxb.info(token_id=chain_data.token) + config_hash = info["config_hash"] + res = requests.get(f"{IPFS_GATEWAY}f01701220{config_hash}", timeout=30) + if res.status_code == 200: + return res.json().get("code_uri", "")[URI_HASH_POSITION:] + raise ValueError( + f"Something went wrong while trying to get the code uri from IPFS: {res}" + ) + def deploy_service_onchain( # pylint: disable=too-many-statements self, hash: str, @@ -207,13 +257,13 @@ def deploy_service_onchain( # pylint: disable=too-many-statements if user_params.use_staking: self.logger.info("Checking staking compatibility") if service.chain_data.on_chain_state in ( - OnChainState.NOTMINTED, - OnChainState.MINTED, + OnChainState.NON_EXISTENT, + OnChainState.PRE_REGISTRATION, ): required_olas = ( user_params.olas_cost_of_bond + user_params.olas_required_to_stake ) - elif service.chain_data.on_chain_state == OnChainState.ACTIVATED: + elif service.chain_data.on_chain_state == OnChainState.ACTIVE_REGISTRATION: required_olas = user_params.olas_required_to_stake else: required_olas = 0 @@ -232,7 +282,7 @@ def deploy_service_onchain( # pylint: disable=too-many-statements f"required olas: {required_olas}; your balance {balance}" ) - if service.chain_data.on_chain_state == OnChainState.NOTMINTED: + if service.chain_data.on_chain_state == OnChainState.NON_EXISTENT: self.logger.info("Minting service") service.chain_data.token = t.cast( int, @@ -255,13 +305,13 @@ def deploy_service_onchain( # pylint: disable=too-many-statements ), ).get("token"), ) - service.chain_data.on_chain_state = OnChainState.MINTED + service.chain_data.on_chain_state = OnChainState.PRE_REGISTRATION service.store() info = ocm.info(token_id=service.chain_data.token) service.chain_data.on_chain_state = OnChainState(info["service_state"]) - if service.chain_data.on_chain_state == OnChainState.MINTED: + if service.chain_data.on_chain_state == OnChainState.PRE_REGISTRATION: self.logger.info("Activating service") ocm.activate( service_id=service.chain_data.token, @@ -271,14 +321,14 @@ def deploy_service_onchain( # pylint: disable=too-many-statements else None ), ) - service.chain_data.on_chain_state = OnChainState.ACTIVATED + service.chain_data.on_chain_state = OnChainState.ACTIVE_REGISTRATION service.store() info = ocm.info(token_id=service.chain_data.token) service.chain_data.on_chain_state = OnChainState(info["service_state"]) - if service.chain_data.on_chain_state == OnChainState.ACTIVATED: - self.logger.info("Registering service") + if service.chain_data.on_chain_state == OnChainState.ACTIVE_REGISTRATION: + self.logger.info("Registering agent instances") ocm.register( service_id=service.chain_data.token, instances=instances, @@ -289,13 +339,13 @@ def deploy_service_onchain( # pylint: disable=too-many-statements else None ), ) - service.chain_data.on_chain_state = OnChainState.REGISTERED + service.chain_data.on_chain_state = OnChainState.FINISHED_REGISTRATION service.store() info = ocm.info(token_id=service.chain_data.token) service.chain_data.on_chain_state = OnChainState(info["service_state"]) - if service.chain_data.on_chain_state == OnChainState.REGISTERED: + if service.chain_data.on_chain_state == OnChainState.FINISHED_REGISTRATION: self.logger.info("Deploying service") ocm.deploy( service_id=service.chain_data.token, @@ -323,82 +373,193 @@ def deploy_service_onchain( # pylint: disable=too-many-statements def deploy_service_onchain_from_safe( # pylint: disable=too-many-statements,too-many-locals self, hash: str, - update: bool = False, ) -> None: """ Deploy as service on-chain :param hash: Service hash - :param update: Update the existing deployment """ - self.logger.info("Loading service") service = self.load_or_create(hash=hash) - user_params = service.chain_data.user_params + for chain_id in service.chain_configs.keys(): + self.deploy_service_onchain_from_safe_single_chain( + hash=hash, + chain_id=chain_id, + ) + + def deploy_service_onchain_from_safe_single_chain( # pylint: disable=too-many-statements,too-many-locals + self, + hash: str, + chain_id: str, + ) -> None: + """ + Deploy as service on-chain + + :param hash: Service hash + """ + + self.logger.info(f"_deploy_service_onchain_from_safe {chain_id=}") + service = self.load_or_create(hash=hash) + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config + chain_data = chain_config.chain_data + user_params = chain_config.chain_data.user_params keys = service.keys instances = [key.address for key in keys] - wallet = self.wallet_manager.load(service.ledger_config.type) - sftxb = self.get_eth_safe_tx_builder(service=service) - if user_params.use_staking and not sftxb.staking_slots_available( - staking_contract=STAKING[service.ledger_config.chain] - ): - raise ValueError("No staking slots available") - - if service.chain_data.token > -1: + wallet = self.wallet_manager.load(ledger_config.type) + sftxb = self.get_eth_safe_tx_builder(ledger_config=ledger_config) + chain_type = ChainType.from_id(int(chain_id)) + safe = wallet.safes[chain_type] + # TODO fix this + os.environ["CUSTOM_CHAIN_RPC"] = ledger_config.rpc + os.environ["OPEN_AUTONOMY_SUBGRAPH_URL"] = "https://subgraph.autonolas.tech/subgraphs/name/autonolas-staging" + + current_agent_id = None + if chain_data.token > -1: self.logger.info("Syncing service state") - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) - service.chain_data.instances = info["instances"] - service.chain_data.multisig = info["multisig"] + info = sftxb.info(token_id=chain_data.token) + chain_data.on_chain_state = OnChainState(info["service_state"]) + chain_data.instances = info["instances"] + chain_data.multisig = info["multisig"] + current_agent_id = info["canonical_agents"][0] # TODO Allow multiple agents service.store() - self.logger.info(f"Service state: {service.chain_data.on_chain_state.name}") + self.logger.info(f"Service state: {chain_data.on_chain_state.name}") + + if user_params.use_staking: + staking_params = sftxb.get_staking_params( + staking_contract=STAKING[ledger_config.chain][user_params.staking_program_id], + ) + else: # TODO fix this - using pearl beta params + staking_params = dict( + agent_ids=[25], + service_registry="0x9338b5153AE39BB89f50468E608eD9d764B755fD", # nosec + staking_token="0xcE11e14225575945b8E6Dc0D4F2dD4C570f79d9f", # nosec + service_registry_token_utility="0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8", # nosec + min_staking_deposit=20000000000000000000, + activity_checker="0x155547857680A6D51bebC5603397488988DEb1c8" # nosec + ) if user_params.use_staking: self.logger.info("Checking staking compatibility") - if service.chain_data.on_chain_state in ( - OnChainState.NOTMINTED, - OnChainState.MINTED, + + # TODO: Missing check when the service is currently staked in a program, but needs to be staked + # in a different target program. The In this case, balance = currently staked balance + safe balance + + if chain_data.on_chain_state in ( + OnChainState.NON_EXISTENT, + OnChainState.PRE_REGISTRATION, ): required_olas = ( - user_params.olas_cost_of_bond + user_params.olas_required_to_stake + staking_params["min_staking_deposit"] + staking_params["min_staking_deposit"] # bond = staking ) - elif service.chain_data.on_chain_state == OnChainState.ACTIVATED: - required_olas = user_params.olas_required_to_stake + elif chain_data.on_chain_state == OnChainState.ACTIVE_REGISTRATION: + required_olas = staking_params["min_staking_deposit"] else: required_olas = 0 balance = ( registry_contracts.erc20.get_instance( ledger_api=sftxb.ledger_api, - contract_address=OLAS[service.ledger_config.chain], + contract_address=OLAS[ledger_config.chain], ) - .functions.balanceOf(wallet.safe) + .functions.balanceOf(safe) .call() ) if balance < required_olas: raise ValueError( "You don't have enough olas to stake, " - f"address: {wallet.safe}; required olas: {required_olas}; your balance: {balance}" + f"address: {safe}; required olas: {required_olas}; your balance: {balance}" + ) + + on_chain_hash = self._get_on_chain_hash(chain_config=chain_config) + is_first_mint = self._get_on_chain_state(chain_config=chain_config) == OnChainState.NON_EXISTENT + is_update = ( + (not is_first_mint) + and (on_chain_hash is not None) + and (on_chain_hash != service.hash or current_agent_id != staking_params["agent_ids"][0]) + ) + if user_params.use_staking: + current_staking_program = self._get_current_staking_program(chain_data, ledger_config, sftxb) + self.logger.info(f"{current_staking_program=}") + + self.logger.info(f"{user_params.staking_program_id=}") + self.logger.info(f"{on_chain_hash=}") + self.logger.info(f"{service.hash=}") + self.logger.info(f"{current_agent_id=}") + self.logger.info(f"{staking_params['agent_ids'][0]=}") + self.logger.info(f"{is_first_mint=}") + self.logger.info(f"{is_update=}") + + if is_update: + self._terminate_service_on_chain_from_safe( + hash=hash, + chain_id=chain_id + ) + + # Update service + if self._get_on_chain_state(chain_config=chain_config) == OnChainState.PRE_REGISTRATION: + self.logger.info("Updating service") + receipt = ( + sftxb.new_tx() + .add( + sftxb.get_mint_tx_data( + package_path=service.service_path, + agent_id=staking_params["agent_ids"][0], + number_of_slots=service.helper.config.number_of_agents, + cost_of_bond=( + staking_params["min_staking_deposit"] + if user_params.use_staking + else user_params.cost_of_bond + ), + threshold=user_params.threshold, + nft=IPFSHash(user_params.nft), + update_token=chain_data.token, + token=( + staking_params["staking_token"] + if user_params.use_staking + else None + ), + ) + ) + .settle() ) + event_data, *_ = t.cast( + t.Tuple, + registry_contracts.service_registry.process_receipt( + ledger_api=sftxb.ledger_api, + contract_address=staking_params["service_registry"], + event="UpdateService", + receipt=receipt, + ).get("events"), + ) + chain_data.on_chain_state = OnChainState.PRE_REGISTRATION + service.store() + + # Mint service + if self._get_on_chain_state(chain_config=chain_config) == OnChainState.NON_EXISTENT: + + if user_params.use_staking and not sftxb.staking_slots_available( + staking_contract=STAKING[ledger_config.chain][user_params.staking_program_id] + ): + raise ValueError("No staking slots available") - if service.chain_data.on_chain_state == OnChainState.NOTMINTED: self.logger.info("Minting service") receipt = ( sftxb.new_tx() .add( sftxb.get_mint_tx_data( package_path=service.service_path, - agent_id=user_params.agent_id, + agent_id=staking_params["agent_ids"][0], number_of_slots=service.helper.config.number_of_agents, cost_of_bond=( - user_params.olas_cost_of_bond + staking_params["min_staking_deposit"] if user_params.use_staking else user_params.cost_of_bond ), threshold=user_params.threshold, nft=IPFSHash(user_params.nft), - update_token=service.chain_data.token if update else None, + update_token=None, token=( - OLAS[service.ledger_config.chain] + staking_params["staking_token"] if user_params.use_staking else None ), @@ -410,32 +571,30 @@ def deploy_service_onchain_from_safe( # pylint: disable=too-many-statements,too t.Tuple, registry_contracts.service_registry.process_receipt( ledger_api=sftxb.ledger_api, - contract_address="0x9338b5153AE39BB89f50468E608eD9d764B755fD", + contract_address=staking_params["service_registry"], event="CreateService", receipt=receipt, ).get("events"), ) - service.chain_data.token = event_data["args"]["serviceId"] - service.chain_data.on_chain_state = OnChainState.MINTED + chain_data.token = event_data["args"]["serviceId"] + chain_data.on_chain_state = OnChainState.PRE_REGISTRATION service.store() - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) - - if service.chain_data.on_chain_state == OnChainState.MINTED: + if self._get_on_chain_state(chain_config=chain_config) == OnChainState.PRE_REGISTRATION: cost_of_bond = user_params.cost_of_bond if user_params.use_staking: - token_utility = "0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8" # nosec - olas_token = "0xcE11e14225575945b8E6Dc0D4F2dD4C570f79d9f" # nosec + token_utility = staking_params["service_registry_token_utility"] + olas_token = staking_params["staking_token"] + agent_id = staking_params["agent_ids"][0] self.logger.info( - f"Approving OLAS as bonding token from {wallet.safe} to {token_utility}" + f"Approving OLAS as bonding token from {safe} to {token_utility}" ) cost_of_bond = ( registry_contracts.service_registry_token_utility.get_agent_bond( ledger_api=sftxb.ledger_api, contract_address=token_utility, - service_id=service.chain_data.token, - agent_id=user_params.agent_id, + service_id=chain_data.token, + agent_id=agent_id, ).get("bond") ) sftxb.new_tx().add( @@ -451,43 +610,41 @@ def deploy_service_onchain_from_safe( # pylint: disable=too-many-statements,too contract_address=olas_token, ) .functions.allowance( - wallet.safe, + safe, token_utility, ) .call() ) self.logger.info( - f"Approved {token_utility_allowance} OLAS from {wallet.safe} to {token_utility}" + f"Approved {token_utility_allowance} OLAS from {safe} to {token_utility}" ) cost_of_bond = 1 self.logger.info("Activating service") sftxb.new_tx().add( sftxb.get_activate_data( - service_id=service.chain_data.token, + service_id=chain_data.token, cost_of_bond=cost_of_bond, ) ).settle() - service.chain_data.on_chain_state = OnChainState.ACTIVATED + chain_data.on_chain_state = OnChainState.ACTIVE_REGISTRATION service.store() - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) - - if service.chain_data.on_chain_state == OnChainState.ACTIVATED: + if self._get_on_chain_state(chain_config=chain_config) == OnChainState.ACTIVE_REGISTRATION: cost_of_bond = user_params.cost_of_bond + agent_id = staking_params["agent_ids"][0] if user_params.use_staking: - token_utility = "0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8" # nosec - olas_token = "0xcE11e14225575945b8E6Dc0D4F2dD4C570f79d9f" # nosec + token_utility = staking_params["service_registry_token_utility"] + olas_token = staking_params["staking_token"] self.logger.info( - f"Approving OLAS as bonding token from {wallet.safe} to {token_utility}" + f"Approving OLAS as bonding token from {safe} to {token_utility}" ) cost_of_bond = ( registry_contracts.service_registry_token_utility.get_agent_bond( ledger_api=sftxb.ledger_api, contract_address=token_utility, - service_id=service.chain_data.token, - agent_id=user_params.agent_id, + service_id=chain_data.token, + agent_id=agent_id, ).get("bond") ) sftxb.new_tx().add( @@ -503,54 +660,62 @@ def deploy_service_onchain_from_safe( # pylint: disable=too-many-statements,too contract_address=olas_token, ) .functions.allowance( - wallet.safe, + safe, token_utility, ) .call() ) self.logger.info( - f"Approved {token_utility_allowance} OLAS from {wallet.safe} to {token_utility}" + f"Approved {token_utility_allowance} OLAS from {safe} to {token_utility}" ) cost_of_bond = 1 self.logger.info( - f"Registering service: {service.chain_data.token} -> {instances}" + f"Registering agent instances: {chain_data.token} -> {instances}" ) sftxb.new_tx().add( sftxb.get_register_instances_data( - service_id=service.chain_data.token, + service_id=chain_data.token, instances=instances, - agents=[user_params.agent_id for _ in instances], + agents=[agent_id for _ in instances], cost_of_bond=cost_of_bond, ) ).settle() - service.chain_data.on_chain_state = OnChainState.REGISTERED + chain_data.on_chain_state = OnChainState.FINISHED_REGISTRATION service.store() - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) - - if service.chain_data.on_chain_state == OnChainState.REGISTERED: + if self._get_on_chain_state(chain_config=chain_config) == OnChainState.FINISHED_REGISTRATION: self.logger.info("Deploying service") - sftxb.new_tx().add( - sftxb.get_deploy_data( - service_id=service.chain_data.token, - reuse_multisig=update, - ) - ).settle() - service.chain_data.on_chain_state = OnChainState.DEPLOYED + + reuse_multisig = True + info = sftxb.info(token_id=chain_data.token) + if info["multisig"] == NULL_ADDRESS: + reuse_multisig = False + + self.logger.info(f"{reuse_multisig=}") + + messages = sftxb.get_deploy_data_from_safe( + service_id=chain_data.token, + reuse_multisig=reuse_multisig, + master_safe=safe, + ) + tx = sftxb.new_tx() + for message in messages: + tx.add(message) + tx.settle() + + chain_data.on_chain_state = OnChainState.DEPLOYED service.store() - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data = OnChainData( - token=service.chain_data.token, - instances=info["instances"], - multisig=info["multisig"], - staked=False, - on_chain_state=service.chain_data.on_chain_state, - user_params=service.chain_data.user_params, - ) + # Update local Service + info = sftxb.info(token_id=chain_data.token) + chain_data.instances = info["instances"] + chain_data.multisig = info["multisig"] + chain_data.on_chain_state = OnChainState(info["service_state"]) service.store() + if user_params.use_staking: + self.stake_service_on_chain_from_safe(hash=hash, chain_id=chain_id) + def terminate_service_on_chain(self, hash: str) -> None: """ @@ -576,32 +741,100 @@ def terminate_service_on_chain(self, hash: str) -> None: else None ), ) - service.chain_data.on_chain_state = OnChainState.TERMINATED + service.chain_data.on_chain_state = OnChainState.TERMINATED_BONDED service.store() - def terminate_service_on_chain_from_safe(self, hash: str) -> None: + def _terminate_service_on_chain_from_safe(self, hash: str, chain_id: str) -> None: """ Terminate service on-chain :param hash: Service hash """ + self.logger.info("terminate_service_on_chain_from_safe") service = self.load_or_create(hash=hash) - sftxb = self.get_eth_safe_tx_builder(service=service) - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config + chain_data = chain_config.chain_data + keys = service.keys + instances = [key.address for key in keys] + wallet = self.wallet_manager.load(ledger_config.type) - if service.chain_data.on_chain_state != OnChainState.DEPLOYED: - self.logger.info("Cannot terminate service") + # TODO fixme + os.environ["CUSTOM_CHAIN_RPC"] = ledger_config.rpc + + sftxb = self.get_eth_safe_tx_builder(ledger_config=ledger_config) + info = sftxb.info(token_id=chain_data.token) + chain_data.on_chain_state = OnChainState(info["service_state"]) + + # Determine if the service is staked in a known staking program + current_staking_program = self._get_current_staking_program(chain_data, ledger_config, sftxb) + is_staked = current_staking_program is not None + + can_unstake = False + if current_staking_program is not None: + can_unstake = sftxb.can_unstake( + service_id=chain_data.token, + staking_contract=STAKING[ledger_config.chain][current_staking_program], + ) + + # Cannot unstake, terminate flow. + if is_staked and not can_unstake: + self.logger.info("Service cannot be terminated on-chain: cannot unstake.") return - self.logger.info("Terminating service") - sftxb.new_tx().add( - sftxb.get_terminate_data( - service_id=service.chain_data.token, + # Unstake the service if applies + if is_staked and can_unstake: + self.unstake_service_on_chain_from_safe(hash=hash, chain_id=chain_id, staking_program_id=current_staking_program) + + if self._get_on_chain_state(chain_config) in ( + OnChainState.ACTIVE_REGISTRATION, + OnChainState.FINISHED_REGISTRATION, + OnChainState.DEPLOYED, + ): + self.logger.info("Terminating service") + sftxb.new_tx().add( + sftxb.get_terminate_data( + service_id=chain_data.token, + ) + ).settle() + + if self._get_on_chain_state(chain_config) == OnChainState.TERMINATED_BONDED: + self.logger.info("Unbonding service") + sftxb.new_tx().add( + sftxb.get_unbond_data( + service_id=chain_data.token, + ) + ).settle() + + # Swap service safe + current_safe_owners = sftxb.get_service_safe_owners(service_id=chain_data.token) + counter_current_safe_owners = Counter(s.lower() for s in current_safe_owners) + counter_instances = Counter(s.lower() for s in instances) + + if counter_current_safe_owners == counter_instances: + self.logger.info("Swapping Safe owners") + sftxb.swap( # noqa: E800 + service_id=chain_data.token, # noqa: E800 + multisig=chain_data.multisig, # TODO this can be read from the registry + owner_key=str( + self.keys_manager.get(key=current_safe_owners[0]).private_key # TODO allow multiple owners + ), # noqa: E800 + new_owner_address=wallet.safe if wallet.safe else wallet.crypto.address # TODO it should always be safe address + ) # noqa: E800 + + def _get_current_staking_program(self, chain_data, ledger_config, sftxb) -> t.Optional[str]: + if chain_data.token == NON_EXISTENT_TOKEN: + return None + + current_staking_program = None + for staking_program in STAKING[ledger_config.chain]: + state = sftxb.staking_status( + service_id=chain_data.token, + staking_contract=STAKING[ledger_config.chain][staking_program], ) - ).settle() - service.chain_data.on_chain_state = OnChainState.TERMINATED - service.store() + if state in (StakingState.STAKED, StakingState.EVICTED): + current_staking_program = staking_program + return current_staking_program def unbond_service_on_chain(self, hash: str) -> None: """ @@ -614,7 +847,7 @@ def unbond_service_on_chain(self, hash: str) -> None: info = ocm.info(token_id=service.chain_data.token) service.chain_data.on_chain_state = OnChainState(info["service_state"]) - if service.chain_data.on_chain_state != OnChainState.TERMINATED: + if service.chain_data.on_chain_state != OnChainState.TERMINATED_BONDED: self.logger.info("Cannot unbond service") return @@ -630,131 +863,120 @@ def unbond_service_on_chain(self, hash: str) -> None: service.chain_data.on_chain_state = OnChainState.UNBONDED service.store() - def unbond_service_on_chain_from_safe(self, hash: str) -> None: - """ - Terminate service on-chain - - :param hash: Service hash - """ - service = self.load_or_create(hash=hash) - sftxb = self.get_eth_safe_tx_builder(service=service) - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) - - if service.chain_data.on_chain_state != OnChainState.TERMINATED: - self.logger.info("Cannot unbond service") - return - - self.logger.info("Unbonding service") - sftxb.new_tx().add( - sftxb.get_unbond_data( - service_id=service.chain_data.token, - ) - ).settle() - service.chain_data.on_chain_state = OnChainState.TERMINATED - service.store() - - def stake_service_on_chain(self, hash: str) -> None: + def stake_service_on_chain(self, hash: str, chain_id: int, staking_program_id: str) -> None: """ Stake service on-chain :param hash: Service hash """ - service = self.load_or_create(hash=hash) - if not service.chain_data.user_params.use_staking: - self.logger.info("Cannot stake service, `use_staking` is set to false") - return - - ocm = self.get_on_chain_manager(service=service) - info = ocm.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) - - if service.chain_data.on_chain_state != OnChainState.DEPLOYED: - self.logger.info("Cannot stake service, it's not in deployed state") - return - - state = ocm.staking_status( - service_id=service.chain_data.token, - staking_contract=STAKING[service.ledger_config.chain], - ) - self.logger.info(f"Checking staking status for: {service.chain_data.token}") - if state == StakingState.STAKED: - self.logger.info(f"{service.chain_data.token} is already staked") - service.chain_data.staked = True - service.store() - return - - if state == StakingState.EVICTED: - self.logger.info(f"{service.chain_data.token} has been evicted") - service.chain_data.staked = True - service.store() - self.unstake_service_on_chain(hash=hash) - - self.logger.info(f"Staking service: {service.chain_data.token}") - ocm.stake( - service_id=service.chain_data.token, - service_registry=CONTRACTS[service.ledger_config.chain]["service_registry"], - staking_contract=STAKING[service.ledger_config.chain], - ) - service.chain_data.staked = True - service.store() + raise NotImplementedError - def stake_service_on_chain_from_safe(self, hash: str) -> None: + def stake_service_on_chain_from_safe(self, hash: str, chain_id: str) -> None: """ Stake service on-chain :param hash: Service hash + :param chain_id: The chain id to use. + :param target_staking_program_id: The staking program id the agent should be on. """ service = self.load_or_create(hash=hash) - if not service.chain_data.user_params.use_staking: - self.logger.info("Cannot stake service, `use_staking` is set to false") - return + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config + chain_data = chain_config.chain_data + user_params = chain_data.user_params + target_staking_program = user_params.staking_program_id + target_staking_contract = STAKING[ledger_config.chain][target_staking_program] + sftxb = self.get_eth_safe_tx_builder(ledger_config=ledger_config) + + # TODO fixme + os.environ["CUSTOM_CHAIN_RPC"] = ledger_config.rpc + + # Determine if the service is staked in a known staking program + current_staking_program = self._get_current_staking_program(chain_data, ledger_config, sftxb) + is_staked = current_staking_program is not None + current_staking_contract = STAKING[ledger_config.chain][current_staking_program] if is_staked else None + + # perform the unstaking flow if necessary + if is_staked: + can_unstake = sftxb.can_unstake(chain_config.chain_data.token, current_staking_contract) + if not chain_config.chain_data.user_params.use_staking and can_unstake: + self.logger.info(f"Use staking is set to false, but service {chain_config.chain_data.token} is staked and can be unstaked. Unstaking...") + self.unstake_service_on_chain_from_safe(hash=hash, chain_id=chain_id, staking_program_id=current_staking_program) + + info = sftxb.info(token_id=chain_config.chain_data.token) + chain_config.chain_data.on_chain_state = OnChainState(info["service_state"]) + staking_state = sftxb.staking_status( + service_id=chain_data.token, + staking_contract=current_staking_contract, + ) - sftxb = self.get_eth_safe_tx_builder(service=service) - info = sftxb.info(token_id=service.chain_data.token) - service.chain_data.on_chain_state = OnChainState(info["service_state"]) + if staking_state == StakingState.EVICTED and can_unstake: + self.logger.info(f"Service {chain_config.chain_data.token} has been evicted and can be unstaked. Unstaking...") + self.unstake_service_on_chain_from_safe(hash=hash, chain_id=chain_id, staking_program_id=current_staking_program) - if service.chain_data.on_chain_state != OnChainState.DEPLOYED: - self.logger.info("Cannot stake service, it's not in deployed state") - return + if staking_state == StakingState.STAKED and can_unstake and not sftxb.staking_rewards_available(current_staking_contract): + self.logger.info( + f"There are no rewards available, service {chain_config.chain_data.token} " + f"is already staked and can be unstaked. Unstaking..." + ) + self.unstake_service_on_chain_from_safe(hash=hash, chain_id=chain_id, staking_program_id=current_staking_program) - state = sftxb.staking_status( - service_id=service.chain_data.token, - staking_contract=STAKING[service.ledger_config.chain], + if staking_state == StakingState.STAKED and current_staking_program != target_staking_contract and can_unstake: + self.logger.info( + f"{chain_config.chain_data.token} is staked in a different staking program. Unstaking..." + ) + self.unstake_service_on_chain_from_safe(hash=hash, chain_id=chain_id, staking_program_id=current_staking_program) + + staking_state = sftxb.staking_status( + service_id=chain_config.chain_data.token, + staking_contract=target_staking_contract, ) - self.logger.info(f"Checking staking status for: {service.chain_data.token}") - if state == StakingState.STAKED: - self.logger.info(f"{service.chain_data.token} is already staked") - service.chain_data.staked = True - service.store() - return + self.logger.info("Checking conditions to stake.") + + staking_rewards_available = sftxb.staking_rewards_available(target_staking_contract) + staking_slots_available = sftxb.staking_slots_available(target_staking_contract) + on_chain_state = self._get_on_chain_state(chain_config=chain_config) + current_staking_program = self._get_current_staking_program(chain_data, ledger_config, sftxb) + + self.logger.info(f"use_staking={chain_config.chain_data.user_params.use_staking}") + self.logger.info(f"{staking_state=}") + self.logger.info(f"{staking_rewards_available=}") + self.logger.info(f"{staking_slots_available=}") + self.logger.info(f"{on_chain_state=}") + self.logger.info(f"{current_staking_program=}") + self.logger.info(f"{target_staking_program=}") + + if ( + chain_config.chain_data.user_params.use_staking + and staking_state == StakingState.UNSTAKED + and staking_rewards_available + and staking_slots_available + and on_chain_state == OnChainState.DEPLOYED + ): + self.logger.info(f"Approving staking: {chain_config.chain_data.token}") + sftxb.new_tx().add( + sftxb.get_staking_approval_data( + service_id=chain_config.chain_data.token, + service_registry=CONTRACTS[ledger_config.chain][ + "service_registry" + ], + staking_contract=target_staking_contract, + ) + ).settle() - if state == StakingState.EVICTED: - self.logger.info(f"{service.chain_data.token} has been evicted") - service.chain_data.staked = True + self.logger.info(f"Staking service: {chain_config.chain_data.token}") + sftxb.new_tx().add( + sftxb.get_staking_data( + service_id=chain_config.chain_data.token, + staking_contract=target_staking_contract, + ) + ).settle() + chain_config.chain_data.staked = True service.store() - self.unstake_service_on_chain_from_safe(hash=hash) - - self.logger.info(f"Approving staking: {service.chain_data.token}") - sftxb.new_tx().add( - sftxb.get_staking_approval_data( - service_id=service.chain_data.token, - service_registry=CONTRACTS[service.ledger_config.chain][ - "service_registry" - ], - staking_contract=STAKING[service.ledger_config.chain], - ) - ).settle() - self.logger.info(f"Staking service: {service.chain_data.token}") - sftxb.new_tx().add( - sftxb.get_staking_data( - service_id=service.chain_data.token, - staking_contract=STAKING[service.ledger_config.chain], - ) - ).settle() - service.chain_data.staked = True - service.store() + current_staking_program = self._get_current_staking_program(chain_data, ledger_config, sftxb) + self.logger.info(f"{target_staking_program=}") + self.logger.info(f"{current_staking_program=}") def unstake_service_on_chain(self, hash: str) -> None: """ @@ -789,39 +1011,45 @@ def unstake_service_on_chain(self, hash: str) -> None: service.chain_data.staked = False service.store() - def unstake_service_on_chain_from_safe(self, hash: str) -> None: + def unstake_service_on_chain_from_safe(self, hash: str, chain_id: str, staking_program_id: str) -> None: """ Unbond service on-chain :param hash: Service hash """ + + self.logger.info("unstake_service_on_chain_from_safe") service = self.load_or_create(hash=hash) - if not service.chain_data.user_params.use_staking: + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config + chain_data = chain_config.chain_data + + if not chain_data.user_params.use_staking: self.logger.info("Cannot unstake service, `use_staking` is set to false") return - sftxb = self.get_eth_safe_tx_builder(service=service) + sftxb = self.get_eth_safe_tx_builder(ledger_config=ledger_config) state = sftxb.staking_status( - service_id=service.chain_data.token, - staking_contract=STAKING[service.ledger_config.chain], + service_id=chain_data.token, + staking_contract=STAKING[ledger_config.chain][staking_program_id], ) self.logger.info( - f"Staking status for service {service.chain_data.token}: {state}" + f"Staking status for service {chain_data.token}: {state}" ) if state not in {StakingState.STAKED, StakingState.EVICTED}: self.logger.info("Cannot unstake service, it's not staked") - service.chain_data.staked = False + chain_data.staked = False service.store() return - self.logger.info(f"Unstaking service: {service.chain_data.token}") + self.logger.info(f"Unstaking service: {chain_data.token}") sftxb.new_tx().add( sftxb.get_unstaking_data( - service_id=service.chain_data.token, - staking_contract=STAKING[service.ledger_config.chain], + service_id=chain_data.token, + staking_contract=STAKING[ledger_config.chain][staking_program_id], ) ).settle() - service.chain_data.staked = False + chain_data.staked = False service.store() def fund_service( # pylint: disable=too-many-arguments @@ -833,14 +1061,18 @@ def fund_service( # pylint: disable=too-many-arguments agent_fund_threshold: t.Optional[float] = None, safe_fund_treshold: t.Optional[float] = None, from_safe: bool = True, + chain_id: str = "10", ) -> None: """Fund service if required.""" service = self.load_or_create(hash=hash) - wallet = self.wallet_manager.load(ledger_type=service.ledger_config.type) - ledger_api = wallet.ledger_api(chain_type=service.ledger_config.chain, rpc=rpc) + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config + chain_data = chain_config.chain_data + wallet = self.wallet_manager.load(ledger_config.type) + ledger_api = wallet.ledger_api(chain_type=ledger_config.chain, rpc=rpc or ledger_config.rpc) agent_fund_threshold = ( agent_fund_threshold - or service.chain_data.user_params.fund_requirements.agent + or chain_data.user_params.fund_requirements.agent ) for key in service.keys: @@ -851,34 +1083,36 @@ def fund_service( # pylint: disable=too-many-arguments self.logger.info("Funding agents") to_transfer = ( agent_topup - or service.chain_data.user_params.fund_requirements.agent + or chain_data.user_params.fund_requirements.agent ) self.logger.info(f"Transferring {to_transfer} units to {key.address}") wallet.transfer( to=key.address, amount=int(to_transfer), - chain_type=service.ledger_config.chain, + chain_type=ledger_config.chain, from_safe=from_safe, + rpc=rpc or ledger_config.rpc, ) - safe_balanace = ledger_api.get_balance(service.chain_data.multisig) + safe_balance = ledger_api.get_balance(chain_data.multisig) safe_fund_treshold = ( - safe_fund_treshold or service.chain_data.user_params.fund_requirements.safe + safe_fund_treshold or chain_data.user_params.fund_requirements.safe ) - self.logger.info(f"Safe {service.chain_data.multisig} balance: {safe_balanace}") + self.logger.info(f"Safe {chain_data.multisig} balance: {safe_balance}") self.logger.info(f"Required balance: {safe_fund_treshold}") - if safe_balanace < safe_fund_treshold: + if safe_balance < safe_fund_treshold: self.logger.info("Funding safe") to_transfer = ( - safe_topup or service.chain_data.user_params.fund_requirements.safe + safe_topup or chain_data.user_params.fund_requirements.safe ) self.logger.info( - f"Transferring {to_transfer} units to {service.chain_data.multisig}" + f"Transferring {to_transfer} units to {chain_data.multisig}" ) wallet.transfer( - to=t.cast(str, service.chain_data.multisig), + to=t.cast(str, chain_data.multisig), amount=int(to_transfer), - chain_type=service.ledger_config.chain, + chain_type=ledger_config.chain, + rpc=rpc or ledger_config.rpc, ) async def funding_job( @@ -890,6 +1124,9 @@ async def funding_job( """Start a background funding job.""" loop = loop or asyncio.get_event_loop() service = self.load_or_create(hash=hash) + chain_id = service.home_chain_id + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config with ThreadPoolExecutor() as executor: while True: try: @@ -897,7 +1134,7 @@ async def funding_job( executor, self.fund_service, hash, # Service hash - PUBLIC_RPCS[service.ledger_config.chain], # RPC + PUBLIC_RPCS[ledger_config.chain], # RPC 100000000000000000, # agent_topup 2000000000000000000, # safe_topup 50000000000000000, # agent_fund_threshold @@ -910,7 +1147,7 @@ async def funding_job( ) await asyncio.sleep(60) - def deploy_service_locally(self, hash: str, force: bool = True) -> Deployment: + def deploy_service_locally(self, hash: str, force: bool = True, chain_id: str = "100", use_docker: bool = False) -> Deployment: """ Deploy service locally @@ -919,8 +1156,8 @@ def deploy_service_locally(self, hash: str, force: bool = True) -> Deployment: :return: Deployment instance """ deployment = self.load_or_create(hash=hash).deployment - deployment.build(force=force) - deployment.start() + deployment.build(use_docker=use_docker, force=force, chain_id=chain_id) + deployment.start(use_docker=use_docker) return deployment def stop_service_locally(self, hash: str, delete: bool = False) -> Deployment: @@ -941,68 +1178,31 @@ def update_service( self, old_hash: str, new_hash: str, - rpc: t.Optional[str] = None, - on_chain_user_params: t.Optional[OnChainUserParams] = None, - from_safe: bool = True, # pylint: disable=unused-argument + service_template: t.Optional[ServiceTemplate] = None, ) -> Service: """Update a service.""" + + self.logger.info("-----Entering update local service-----") old_service = self.load_or_create( - hash=old_hash, + hash=old_hash ) - # TODO code for updating service commented until safe swap transaction is implemented - # This is a temporary fix that will only work for services that have not started the - # update flow. Services having started the update flow must need to manually change - # the Safe owner to the Operator. - # ( # noqa: E800 - # self.unstake_service_on_chain_from_safe # noqa: E800 - # if from_safe # noqa: E800 - # else self.unstake_service_on_chain # noqa: E800 - # )( # noqa: E800 - # hash=old_hash, # noqa: E800 - # ) # noqa: E800 - # ( # noqa: E800 - # self.terminate_service_on_chain_from_safe # noqa: E800 - # if from_safe # noqa: E800 - # else self.terminate_service_on_chain # noqa: E800 - # )( # noqa: E800 - # hash=old_hash, # noqa: E800 - # ) # noqa: E800 - # ( # noqa: E800 - # self.unbond_service_on_chain_from_safe # noqa: E800 - # if from_safe # noqa: E800 - # else self.unbond_service_on_chain # noqa: E800 - # )( # noqa: E800 - # hash=old_hash, # noqa: E800 - # ) # noqa: E800 - - # owner, *_ = old_service.chain_data.instances # noqa: E800 - # if from_safe: # noqa: E800 - # sftx = self.get_eth_safe_tx_builder(service=old_service) # noqa: E800 - # sftx.new_tx().add( # noqa: E800 - # sftx.get_swap_data( # noqa: E800 - # service_id=old_service.chain_data.token, # noqa: E800 - # multisig=old_service.chain_data.multisig, # noqa: E800 - # owner_key=str(self.keys_manager.get(key=owner).private_key), # noqa: E800 - # ) # noqa: E800 - # ).settle() # noqa: E800 - # else: # noqa: E800 - # ocm = self.get_on_chain_manager(service=old_service) # noqa: E800 - # ocm.swap( # noqa: E800 - # service_id=old_service.chain_data.token, # noqa: E800 - # multisig=old_service.chain_data.multisig, # noqa: E800 - # owner_key=str(self.keys_manager.get(key=owner).private_key), # noqa: E800 - # ) # noqa: E800 - new_service = self.load_or_create( hash=new_hash, - rpc=rpc or old_service.ledger_config.rpc, - on_chain_user_params=on_chain_user_params - or old_service.chain_data.user_params, + service_template=service_template ) new_service.keys = old_service.keys - new_service.chain_data = old_service.chain_data - new_service.ledger_config = old_service.ledger_config - new_service.chain_data.on_chain_state = OnChainState.NOTMINTED + # new_Service.home_chain_id = old_service.home_chain_id + + # TODO - Ensure this works as expected - New service must copy all chain_data from old service, + # but if service_template is not None, it must copy the user_params + # passed in the service_template and copy the remaining attributes from old_service. + + new_service.chain_configs = {} + for chain_id, config in old_service.chain_configs.items(): + new_service.chain_configs[chain_id] = config + if service_template: + new_service.chain_configs[chain_id].chain_data.user_params = OnChainUserParams.from_json(service_template["configurations"][chain_id]) + new_service.store() # The following logging has been added to identify OS issues when @@ -1023,3 +1223,4 @@ def update_service( def _log_directories(self) -> None: directories = [str(p) for p in self.path.iterdir() if p.is_dir()] self.logger.info(f"Directories in {self.path}: {', '.join(directories)}") + diff --git a/operate/services/protocol.py b/operate/services/protocol.py index f6d8acf46..b9fd314bb 100644 --- a/operate/services/protocol.py +++ b/operate/services/protocol.py @@ -41,6 +41,7 @@ from autonomy.chain.constants import ( GNOSIS_SAFE_PROXY_FACTORY_CONTRACT, GNOSIS_SAFE_SAME_ADDRESS_MULTISIG_CONTRACT, + MULTISEND_CONTRACT, ) from autonomy.chain.service import ( get_agent_instances, @@ -52,7 +53,9 @@ from autonomy.cli.helpers.chain import MintHelper as MintManager from autonomy.cli.helpers.chain import OnChainHelper from autonomy.cli.helpers.chain import ServiceHelper as ServiceManager +from eth_utils import to_bytes from hexbytes import HexBytes +from web3.contract import Contract from operate.constants import ( ON_CHAIN_INTERACT_RETRIES, @@ -66,11 +69,13 @@ from operate.types import ContractAddresses from operate.utils.gnosis import ( MultiSendOperation, + NULL_ADDRESS, SafeOperation, hash_payload_to_hex, skill_input_hex_to_payload, ) from operate.wallet.master import MasterWallet +from operate.types import ChainType as OperateChainType ETHEREUM_ERC20 = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" @@ -240,6 +245,48 @@ def service_info(self, staking_contract: str, service_id: int) -> dict: service_id, ).get("data") + def agent_ids(self, staking_contract: str) -> t.List[int]: + instance = self.staking_ctr.get_instance( + ledger_api=self.ledger_api, + contract_address=staking_contract, + ) + return instance.functions.getAgentIds().call() + + def service_registry(self, staking_contract: str) -> str: + instance = self.staking_ctr.get_instance( + ledger_api=self.ledger_api, + contract_address=staking_contract, + ) + return instance.functions.serviceRegistry().call() + + def staking_token(self, staking_contract: str) -> str: + instance = self.staking_ctr.get_instance( + ledger_api=self.ledger_api, + contract_address=staking_contract, + ) + return instance.functions.stakingToken().call() + + def service_registry_token_utility(self, staking_contract: str) -> str: + instance = self.staking_ctr.get_instance( + ledger_api=self.ledger_api, + contract_address=staking_contract, + ) + return instance.functions.serviceRegistryTokenUtility().call() + + def min_staking_deposit(self, staking_contract: str) -> str: + instance = self.staking_ctr.get_instance( + ledger_api=self.ledger_api, + contract_address=staking_contract, + ) + return instance.functions.minStakingDeposit().call() + + def activity_checker(self, staking_contract: str) -> str: + instance = self.staking_ctr.get_instance( + ledger_api=self.ledger_api, + contract_address=staking_contract, + ) + return instance.functions.activityChecker().call() + def check_staking_compatibility( self, service_id: int, @@ -462,6 +509,13 @@ def _patch(self) -> None: for name, address in self.contracts.items(): ContractConfigs.get(name=name).contracts[self.chain_type] = address + @property + def safe(self) -> str: + """Get safe address.""" + chain_id = self.ledger_api.api.eth.chain_id + chain_type = OperateChainType.from_id(chain_id) + return self.wallet.safes[chain_type] + @property def crypto(self) -> Crypto: """Load crypto object.""" @@ -484,6 +538,25 @@ def ledger_api(self) -> LedgerApi: ) return ledger_api + @property + def service_manager_instance(self) -> Contract: + """Load service manager contract instance.""" + contract_interface = registry_contracts.service_manager.contract_interface.get(self.ledger_api.identifier, {}) + instance = self.ledger_api.get_contract_instance( + contract_interface, + self.contracts["service_manager"], + ) + return instance + + + def owner_of(self, token_id: int) -> str: + """Get owner of a service.""" + self._patch() + ledger_api, _ = OnChainHelper.get_ledger_and_crypto_objects( + chain_type=self.chain_type + ) + + def info(self, token_id: int) -> t.Dict: """Get service info.""" self._patch() @@ -498,7 +571,7 @@ def info(self, token_id: int) -> t.Dict: max_agents, number_of_agent_instances, service_state, - cannonical_agents, + canonical_agents, ) = get_service_info( ledger_api=ledger_api, chain_type=self.chain_type, @@ -517,11 +590,156 @@ def info(self, token_id: int) -> t.Dict: max_agents=max_agents, number_of_agent_instances=number_of_agent_instances, service_state=service_state, - cannonical_agents=cannonical_agents, + canonical_agents=canonical_agents, instances=instances, ) + def get_service_safe_owners(self, service_id: int) -> t.List[str]: + """Get list of owners.""" + ledger_api, _ = OnChainHelper.get_ledger_and_crypto_objects( + chain_type=self.chain_type + ) + ( + _, + multisig_address, + _, + _, + _, + _, + _, + _, + ) = get_service_info( + ledger_api=ledger_api, + chain_type=self.chain_type, + token_id=service_id, + ) + return registry_contracts.gnosis_safe.get_owners( + ledger_api=ledger_api, + contract_address=multisig_address, + ).get("owners", []) + + + def swap( # pylint: disable=too-many-arguments,too-many-locals + self, + service_id: int, + multisig: str, + owner_key: str, + new_owner_address: str + ) -> None: + """Swap safe owner.""" + logging.info(f"Swapping safe for service {service_id} [{multisig}]...") + self._patch() + manager = ServiceManager( + service_id=service_id, + chain_type=self.chain_type, + key=self.wallet.key_path, + password=self.wallet.password, + timeout=ON_CHAIN_INTERACT_TIMEOUT, + retries=ON_CHAIN_INTERACT_RETRIES, + sleep=ON_CHAIN_INTERACT_SLEEP, + ) + with tempfile.TemporaryDirectory() as temp_dir: + key_file = Path(temp_dir, "key.txt") + key_file.write_text(owner_key, encoding="utf-8") + owner_crypto = EthereumCrypto(private_key_path=str(key_file)) + owner_cryptos: t.List[EthereumCrypto] = [owner_crypto] + owners = [ + manager.ledger_api.api.to_checksum_address(owner_crypto.address) + for owner_crypto in owner_cryptos + ] + owner_to_swap = owners[0] + multisend_txs = [] + txd = registry_contracts.gnosis_safe.get_swap_owner_data( + ledger_api=manager.ledger_api, + contract_address=multisig, + old_owner=manager.ledger_api.api.to_checksum_address(owner_to_swap), + new_owner=manager.ledger_api.api.to_checksum_address( + new_owner_address + ), + ).get("data") + multisend_txs.append( + { + "operation": MultiSendOperation.CALL, + "to": multisig, + "value": 0, + "data": HexBytes(txd[2:]), + } + ) + multisend_txd = registry_contracts.multisend.get_tx_data( # type: ignore + ledger_api=manager.ledger_api, + contract_address=ContractConfigs.multisend.contracts[self.chain_type], + multi_send_txs=multisend_txs, + ).get("data") + multisend_data = bytes.fromhex(multisend_txd[2:]) + safe_tx_hash = registry_contracts.gnosis_safe.get_raw_safe_transaction_hash( + ledger_api=manager.ledger_api, + contract_address=multisig, + to_address=ContractConfigs.multisend.contracts[self.chain_type], + value=0, + data=multisend_data, + safe_tx_gas=0, + operation=SafeOperation.DELEGATE_CALL.value, + ).get("tx_hash")[2:] + payload_data = hash_payload_to_hex( + safe_tx_hash=safe_tx_hash, + ether_value=0, + safe_tx_gas=0, + to_address=ContractConfigs.multisend.contracts[self.chain_type], + data=multisend_data, + ) + tx_params = skill_input_hex_to_payload(payload=payload_data) + safe_tx_bytes = binascii.unhexlify(tx_params["safe_tx_hash"]) + owner_to_signature = {} + for owner_crypto in owner_cryptos: + signature = owner_crypto.sign_message( + message=safe_tx_bytes, + is_deprecated_mode=True, + ) + owner_to_signature[ + manager.ledger_api.api.to_checksum_address(owner_crypto.address) + ] = signature[2:] + tx = registry_contracts.gnosis_safe.get_raw_safe_transaction( + ledger_api=manager.ledger_api, + contract_address=multisig, + sender_address=owner_crypto.address, + owners=tuple(owners), # type: ignore + to_address=tx_params["to_address"], + value=tx_params["ether_value"], + data=tx_params["data"], + safe_tx_gas=tx_params["safe_tx_gas"], + signatures_by_owner=owner_to_signature, + operation=SafeOperation.DELEGATE_CALL.value, + ) + stx = owner_crypto.sign_transaction(tx) + tx_digest = manager.ledger_api.send_signed_transaction(stx) + receipt = manager.ledger_api.api.eth.wait_for_transaction_receipt(tx_digest) + if receipt["status"] != 1: + raise RuntimeError("Error swapping owners") + + def staking_slots_available(self, staking_contract: str) -> bool: + """Check if there are available slots on the staking contract""" + self._patch() + return StakingManager( + key=self.wallet.key_path, + password=self.wallet.password, + chain_type=self.chain_type, + ).slots_available( + staking_contract=staking_contract, + ) + + def staking_rewards_available(self, staking_contract: str) -> bool: + """Check if there are available staking rewards on the staking contract""" + self._patch() + available_rewards = StakingManager( + key=self.wallet.key_path, + password=self.wallet.password, + chain_type=self.chain_type, + ).available_rewards( + staking_contract=staking_contract, + ) + return available_rewards > 0 + class OnChainManager(_ChainUtil): """On chain service management.""" @@ -657,102 +875,6 @@ def deploy( reuse_multisig=reuse_multisig, ) - def swap( # pylint: disable=too-many-arguments,too-many-locals - self, - service_id: int, - multisig: str, - owner_key: str, - ) -> None: - """Swap safe owner.""" - logging.info(f"Swapping safe for service {service_id} [{multisig}]...") - self._patch() - manager = ServiceManager( - service_id=service_id, - chain_type=self.chain_type, - key=self.wallet.key_path, - password=self.wallet.password, - timeout=ON_CHAIN_INTERACT_TIMEOUT, - retries=ON_CHAIN_INTERACT_RETRIES, - sleep=ON_CHAIN_INTERACT_SLEEP, - ) - with tempfile.TemporaryDirectory() as temp_dir: - key_file = Path(temp_dir, "key.txt") - key_file.write_text(owner_key, encoding="utf-8") - owner_crypto = EthereumCrypto(private_key_path=str(key_file)) - owner_cryptos: t.List[EthereumCrypto] = [owner_crypto] - owners = [ - manager.ledger_api.api.to_checksum_address(owner_crypto.address) - for owner_crypto in owner_cryptos - ] - owner_to_swap = owners[0] - multisend_txs = [] - txd = registry_contracts.gnosis_safe.get_swap_owner_data( - ledger_api=manager.ledger_api, - contract_address=multisig, - old_owner=manager.ledger_api.api.to_checksum_address(owner_to_swap), - new_owner=manager.ledger_api.api.to_checksum_address( - manager.crypto.address - ), - ).get("data") - multisend_txs.append( - { - "operation": MultiSendOperation.CALL, - "to": multisig, - "value": 0, - "data": HexBytes(txd[2:]), - } - ) - multisend_txd = registry_contracts.multisend.get_tx_data( # type: ignore - ledger_api=manager.ledger_api, - contract_address=ContractConfigs.multisend.contracts[self.chain_type], - multi_send_txs=multisend_txs, - ).get("data") - multisend_data = bytes.fromhex(multisend_txd[2:]) - safe_tx_hash = registry_contracts.gnosis_safe.get_raw_safe_transaction_hash( - ledger_api=manager.ledger_api, - contract_address=multisig, - to_address=ContractConfigs.multisend.contracts[self.chain_type], - value=0, - data=multisend_data, - safe_tx_gas=0, - operation=SafeOperation.DELEGATE_CALL.value, - ).get("tx_hash")[2:] - payload_data = hash_payload_to_hex( - safe_tx_hash=safe_tx_hash, - ether_value=0, - safe_tx_gas=0, - to_address=ContractConfigs.multisend.contracts[self.chain_type], - data=multisend_data, - ) - tx_params = skill_input_hex_to_payload(payload=payload_data) - safe_tx_bytes = binascii.unhexlify(tx_params["safe_tx_hash"]) - owner_to_signature = {} - for owner_crypto in owner_cryptos: - signature = owner_crypto.sign_message( - message=safe_tx_bytes, - is_deprecated_mode=True, - ) - owner_to_signature[ - manager.ledger_api.api.to_checksum_address(owner_crypto.address) - ] = signature[2:] - tx = registry_contracts.gnosis_safe.get_raw_safe_transaction( - ledger_api=manager.ledger_api, - contract_address=multisig, - sender_address=owner_crypto.address, - owners=tuple(owners), # type: ignore - to_address=tx_params["to_address"], - value=tx_params["ether_value"], - data=tx_params["data"], - safe_tx_gas=tx_params["safe_tx_gas"], - signatures_by_owner=owner_to_signature, - operation=SafeOperation.DELEGATE_CALL.value, - ) - stx = owner_crypto.sign_transaction(tx) - tx_digest = manager.ledger_api.send_signed_transaction(stx) - receipt = manager.ledger_api.api.eth.wait_for_transaction_receipt(tx_digest) - if receipt["status"] != 1: - raise RuntimeError("Error swapping owners") - def terminate(self, service_id: int, token: t.Optional[str] = None) -> None: """Terminate service.""" logging.info(f"Terminating service {service_id}...") @@ -787,29 +909,6 @@ def unbond(self, service_id: int, token: t.Optional[str] = None) -> None: token=token, ).unbond_service() - def staking_slots_available(self, staking_contract: str) -> bool: - """Check if there are available slots on the staking contract""" - self._patch() - return StakingManager( - key=self.wallet.key_path, - password=self.wallet.password, - chain_type=self.chain_type, - ).slots_available( - staking_contract=staking_contract, - ) - - def staking_rewards_available(self, staking_contract: str) -> bool: - """Check if there are available staking rewards on the staking contract""" - self._patch() - available_rewards = StakingManager( - key=self.wallet.key_path, - password=self.wallet.password, - chain_type=self.chain_type, - ).available_rewards( - staking_contract=staking_contract, - ) - return available_rewards > 0 - def stake( self, service_id: int, @@ -862,7 +961,7 @@ def new_tx(self) -> GnosisSafeTransaction: ledger_api=self.ledger_api, crypto=self.crypto, chain_type=self.chain_type, - safe=t.cast(str, self.wallet.safe), + safe=self.safe, ) def get_mint_tx_data( # pylint: disable=too-many-arguments @@ -895,25 +994,36 @@ def get_mint_tx_data( # pylint: disable=too-many-arguments ) .load_metadata() .verify_nft(nft=nft) - .verify_service_dependencies(agent_id=agent_id) + #.verify_service_dependencies(agent_id=agent_id) # TODO add this check once subgraph production indexes agent 25 .publish_metadata() ) - instance = registry_contracts.service_manager.get_instance( - ledger_api=self.ledger_api, - contract_address=self.contracts["service_manager"], - ) - txd = instance.encodeABI( - fn_name="create" if update_token is None else "update", - args=[ - self.wallet.safe, - token or ETHEREUM_ERC20, - manager.metadata_hash, - [agent_id], - [[number_of_slots, cost_of_bond]], - threshold, - ], - ) + instance = self.service_manager_instance + if update_token is None: + safe = self.safe + txd = instance.encodeABI( + fn_name="create", + args=[ + safe, + token or ETHEREUM_ERC20, + manager.metadata_hash, + [agent_id], + [[number_of_slots, cost_of_bond]], + threshold, + ], + ) + else: + txd = instance.encodeABI( + fn_name="update", + args=[ + token or ETHEREUM_ERC20, + manager.metadata_hash, + [agent_id], + [[number_of_slots, cost_of_bond]], + threshold, + update_token + ], + ) return { "to": self.contracts["service_manager"], @@ -946,16 +1056,13 @@ def get_olas_approval_data( def get_activate_data(self, service_id: int, cost_of_bond: int) -> t.Dict: """Get activate tx data.""" - instance = registry_contracts.service_manager.get_instance( - ledger_api=self.ledger_api, - contract_address=self.contracts["service_manager"], - ) + instance = self.service_manager_instance txd = instance.encodeABI( fn_name="activateRegistration", args=[service_id], ) return { - "from": self.wallet.safe, + "from": self.safe, "to": self.contracts["service_manager"], "data": txd[2:], "operation": MultiSendOperation.CALL, @@ -970,10 +1077,7 @@ def get_register_instances_data( cost_of_bond: int, ) -> t.Dict: """Get register instances tx data.""" - instance = registry_contracts.service_manager.get_instance( - ledger_api=self.ledger_api, - contract_address=self.contracts["service_manager"], - ) + instance = self.service_manager_instance txd = instance.encodeABI( fn_name="registerAgents", args=[ @@ -983,7 +1087,7 @@ def get_register_instances_data( ], ) return { - "from": self.wallet.safe, + "from": self.safe, "to": self.contracts["service_manager"], "data": txd[2:], "operation": MultiSendOperation.CALL, @@ -996,10 +1100,7 @@ def get_deploy_data( reuse_multisig: bool = False, ) -> t.Dict: """Get deploy tx data.""" - instance = registry_contracts.service_manager.get_instance( - ledger_api=self.ledger_api, - contract_address=self.contracts["service_manager"], - ) + instance = self.service_manager_instance if reuse_multisig: _deployment_payload, error = get_reuse_multisig_payload( ledger_api=self.ledger_api, @@ -1034,12 +1135,55 @@ def get_deploy_data( "value": 0, } + def get_deploy_data_from_safe( + self, + service_id: int, + master_safe: str, + reuse_multisig: bool = False, + ) -> t.List[t.Dict[str, t.Any]]: + """Get the deploy data instructions for a safe""" + registry_instance = self.service_manager_instance + approve_hash_message = None + if reuse_multisig: + _deployment_payload, approve_hash_message, error = get_reuse_multisig_from_safe_payload( + ledger_api=self.ledger_api, + chain_type=self.chain_type, + service_id=service_id, + master_safe=master_safe, + ) + if _deployment_payload is None: + raise ValueError(error) + deployment_payload = _deployment_payload + gnosis_safe_multisig = ContractConfigs.get( + GNOSIS_SAFE_SAME_ADDRESS_MULTISIG_CONTRACT.name + ).contracts[self.chain_type] + else: + deployment_payload = get_delployment_payload() + gnosis_safe_multisig = ContractConfigs.get( + GNOSIS_SAFE_PROXY_FACTORY_CONTRACT.name + ).contracts[self.chain_type] + + deploy_data = registry_instance.encodeABI( + fn_name="deploy", + args=[ + service_id, + gnosis_safe_multisig, + deployment_payload, + ], + ) + deploy_message = { + "to": self.contracts["service_manager"], + "data": deploy_data[2:], + "operation": MultiSendOperation.CALL, + "value": 0, + } + if approve_hash_message is None: + return [deploy_message] + return [approve_hash_message, deploy_message] + def get_terminate_data(self, service_id: int) -> t.Dict: """Get terminate tx data.""" - instance = registry_contracts.service_manager.get_instance( - ledger_api=self.ledger_api, - contract_address=self.contracts["service_manager"], - ) + instance = self.service_manager_instance txd = instance.encodeABI( fn_name="terminate", args=[service_id], @@ -1053,10 +1197,7 @@ def get_terminate_data(self, service_id: int) -> t.Dict: def get_unbond_data(self, service_id: int) -> t.Dict: """Get unbond tx data.""" - instance = registry_contracts.service_manager.get_instance( - ledger_api=self.ledger_api, - contract_address=self.contracts["service_manager"], - ) + instance = self.service_manager_instance txd = instance.encodeABI( fn_name="unbond", args=[service_id], @@ -1086,7 +1227,7 @@ def get_staking_approval_data( staking_contract=staking_contract, ) return { - "from": self.wallet.safe, + "from": self.safe, "to": self.contracts["service_registry"], "data": txd[2:], "operation": MultiSendOperation.CALL, @@ -1160,7 +1301,220 @@ def staking_status(self, service_id: int, staking_contract: str) -> StakingState staking_contract=staking_contract, ) + def get_staking_params(self, staking_contract: str) -> t.Dict: + """Get agent IDs for the staking contract""" + self._patch() + staking_manager = StakingManager( + key=self.wallet.key_path, + password=self.wallet.password, + chain_type=self.chain_type, + ) + agent_ids = staking_manager.agent_ids( + staking_contract=staking_contract, + ) + service_registry = staking_manager.service_registry( + staking_contract=staking_contract, + ) + staking_token = staking_manager.staking_token( + staking_contract=staking_contract, + ) + service_registry_token_utility = staking_manager.service_registry_token_utility( + staking_contract=staking_contract, + ) + min_staking_deposit = staking_manager.min_staking_deposit( + staking_contract=staking_contract, + ) + activity_checker = staking_manager.activity_checker( + staking_contract=staking_contract, + ) + + return dict( + agent_ids=agent_ids, + service_registry=service_registry, + staking_token=staking_token, + service_registry_token_utility=service_registry_token_utility, + min_staking_deposit=min_staking_deposit, + activity_checker=activity_checker + ) + + def can_unstake(self, service_id: int, staking_contract: str) -> bool: + """Can unstake the service?""" + try: + StakingManager( + key=self.wallet.key_path, + password=self.wallet.password, + chain_type=self.chain_type, + ).check_if_unstaking_possible( + service_id=service_id, + staking_contract=staking_contract, + ) + return True + except ValueError: + return False + def get_swap_data(self, service_id: int, multisig: str, owner_key: str) -> t.Dict: """Swap safe owner.""" # TODO: Discuss implementation raise NotImplementedError() + + + +def get_packed_signature_for_approved_hash(owners: t.Tuple[str]) -> bytes: + """Get the packed signatures.""" + sorted_owners = sorted(owners, key=str.lower) + signatures = b'' + for owner in sorted_owners: + # Convert address to bytes and ensure it is 32 bytes long (left-padded with zeros) + r_bytes = to_bytes(hexstr=owner[2:].rjust(64, '0')) + + # `s` as 32 zero bytes + s_bytes = b'\x00' * 32 + + # `v` as a single byte + v_bytes = to_bytes(1) + + # Concatenate r, s, and v to form the packed signature + packed_signature = r_bytes + s_bytes + v_bytes + signatures += packed_signature + + return signatures + + +def get_reuse_multisig_from_safe_payload( # pylint: disable=too-many-locals + ledger_api: LedgerApi, + chain_type: ChainType, + service_id: int, + master_safe: str, +) -> t.Tuple[Optional[str], Optional[t.Dict[str, t.Any]], Optional[str]]: + """Reuse multisig.""" + _, multisig_address, _, threshold, *_ = get_service_info( + ledger_api=ledger_api, + chain_type=chain_type, + token_id=service_id, + ) + if multisig_address == NULL_ADDRESS: + return None, None, "Cannot reuse multisig, No previous deployment exist!" + + multisend_address = ContractConfigs.get(MULTISEND_CONTRACT.name).contracts[ + chain_type + ] + multisig_instance = registry_contracts.gnosis_safe.get_instance( + ledger_api=ledger_api, + contract_address=multisig_address, + ) + + # Verify if the service was terminated properly or not + old_owners = multisig_instance.functions.getOwners().call() + if len(old_owners) != 1 or master_safe not in old_owners: + return ( + None, + None, + "Service was not terminated properly, the service owner should be the only owner of the safe", + ) + + # Build multisend tx to add new instances as owners + txs = [] + new_owners = t.cast( + t.List[str], + get_agent_instances( + ledger_api=ledger_api, + chain_type=chain_type, + token_id=service_id, + ).get("agentInstances"), + ) + + for _owner in new_owners: + txs.append( + { + "to": multisig_address, + "data": HexBytes( + bytes.fromhex( + multisig_instance.encodeABI( + fn_name="addOwnerWithThreshold", + args=[_owner, 1], + )[2:] + ) + ), + "operation": MultiSendOperation.CALL, + "value": 0, + } + ) + + txs.append( + { + "to": multisig_address, + "data": HexBytes( + bytes.fromhex( + multisig_instance.encodeABI( + fn_name="removeOwner", + args=[new_owners[0], master_safe, 1], + )[2:] + ) + ), + "operation": MultiSendOperation.CALL, + "value": 0, + } + ) + + txs.append( + { + "to": multisig_address, + "data": HexBytes( + bytes.fromhex( + multisig_instance.encodeABI( + fn_name="changeThreshold", + args=[threshold], + )[2:] + ) + ), + "operation": MultiSendOperation.CALL, + "value": 0, + } + ) + + multisend_tx = registry_contracts.multisend.get_multisend_tx( + ledger_api=ledger_api, + contract_address=multisend_address, + txs=txs, + ) + signature_bytes = get_packed_signature_for_approved_hash(owners=(master_safe, )) + + safe_tx_hash = registry_contracts.gnosis_safe.get_raw_safe_transaction_hash( + ledger_api=ledger_api, + contract_address=multisig_address, + to_address=multisend_address, + value=multisend_tx["value"], + data=multisend_tx["data"], + operation=1, + ).get("tx_hash") + approve_hash_data = multisig_instance.encodeABI( + fn_name="approveHash", + args=[ + safe_tx_hash, + ], + ) + approve_hash_message = { + "to": multisig_address, + "data": approve_hash_data[2:], + "operation": MultiSendOperation.CALL, + "value": 0, + } + + safe_exec_data = multisig_instance.encodeABI( + fn_name="execTransaction", + args=[ + multisend_address, # to address + multisend_tx["value"], # value + multisend_tx["data"], # data + 1, # operation + 0, # safe tx gas + 0, # bas gas + 0, # safe gas price + NULL_ADDRESS, # gas token + NULL_ADDRESS, # refund receiver + signature_bytes, # signatures + ], + ) + payload = multisig_address + safe_exec_data[2:] + return payload, approve_hash_message, None + diff --git a/operate/services/service.py b/operate/services/service.py index 193ba7561..f2549a1fd 100644 --- a/operate/services/service.py +++ b/operate/services/service.py @@ -66,17 +66,21 @@ from operate.services.deployment_runner import run_host_deployment, stop_host_deployment from operate.services.utils import tendermint from operate.types import ( + ChainConfig, + ChainConfigs, ChainType, DeployedNodes, DeploymentConfig, DeploymentStatus, LedgerConfig, + LedgerConfigs, LedgerType, OnChainData, OnChainState, OnChainUserParams, + ServiceTemplate, ) - +from aea.helpers.env_vars import apply_env_variables SAFE_CONTRACT_ADDRESS = "safe_contract_address" ALL_PARTICIPANTS = "all_participants" @@ -86,6 +90,7 @@ # pylint: disable=no-member,redefined-builtin,too-many-instance-attributes DUMMY_MULTISIG = "0xm" +NON_EXISTENT_TOKEN = -1 def mkdirs(build_dir: Path) -> None: @@ -225,6 +230,7 @@ def try_update_runtime_params( self.service.overrides = overrides + class ServiceHelper: """Service config helper.""" @@ -233,21 +239,27 @@ def __init__(self, path: Path) -> None: self.path = path self.config = load_service_config(service_path=path) - def ledger_config(self) -> "LedgerConfig": - """Get ledger config.""" - # TODO: Multiledger/Multiagent support + def ledger_configs(self) -> "LedgerConfigs": + """Get ledger configs.""" + ledger_configs = {} for override in self.config.overrides: + override = apply_env_variables( + override, + env_variables=os.environ.copy() + ) if ( override["type"] == "connection" and "valory/ledger" in override["public_id"] ): - (_, config), *_ = override["config"]["ledger_apis"].items() - return LedgerConfig( - rpc=config["address"], - chain=ChainType.from_id(cid=config["chain_id"]), - type=LedgerType.ETHEREUM, - ) - raise ValueError("No ledger config found.") + for chain_id, config in override["config"]["ledger_apis"].items(): + chain = ChainType.from_id(cid=config["chain_id"]) + ledger_configs[str(config["chain_id"])] = LedgerConfig( + rpc=config["address"], + chain=chain, + type=LedgerType.ETHEREUM, + ) + print(f"Adding {chain} {config['address']}") + return ledger_configs def deployment_config(self) -> DeploymentConfig: """Returns deployment config.""" @@ -368,6 +380,7 @@ def load(cls, path: Path) -> "Deployment": def _build_docker( self, force: bool = True, + chain_id: str = "100", ) -> None: """Build docker deployment.""" service = Service.load(path=self.path) @@ -408,16 +421,19 @@ def _build_docker( ) builder.deplopyment_type = DockerComposeGenerator.deployment_type builder.try_update_abci_connection_params() + + home_chain_data = service.chain_configs[service.home_chain_id] builder.try_update_runtime_params( - multisig_address=service.chain_data.multisig, - agent_instances=service.chain_data.instances, - service_id=service.chain_data.token, + multisig_address=home_chain_data.chain_data.multisig, + agent_instances=home_chain_data.chain_data.instances, + service_id=home_chain_data.chain_data.token, consensus_threshold=None, ) # TODO: Support for multiledger + ledger_config = service.chain_configs[service.home_chain_id].ledger_config builder.try_update_ledger_params( - chain=LedgerType(service.ledger_config.type).name.lower(), - address=service.ledger_config.rpc, + chain=LedgerType(ledger_config.type).name.lower(), + address=ledger_config.rpc, ) # build deployment @@ -475,7 +491,7 @@ def _build_docker( self.status = DeploymentStatus.BUILT self.store() - def _build_host(self, force: bool = True) -> None: + def _build_host(self, force: bool = True, chain_id: str = "100") -> None: """Build host depployment.""" build = self.path / DEPLOYMENT if build.exists() and not force: @@ -491,6 +507,10 @@ def _build_host(self, force: bool = True) -> None: "Host deployment currently only supports single agent deployments" ) + chain_config = service.chain_configs[chain_id] + ledger_config = chain_config.ledger_config + chain_data = chain_config.chain_data + keys_file = self.path / KEYS_JSON keys_file.write_text( json.dumps( @@ -515,15 +535,15 @@ def _build_host(self, force: bool = True) -> None: builder.deplopyment_type = HostDeploymentGenerator.deployment_type builder.try_update_abci_connection_params() builder.try_update_runtime_params( - multisig_address=service.chain_data.multisig, - agent_instances=service.chain_data.instances, - service_id=service.chain_data.token, + multisig_address=chain_data.multisig, + agent_instances=chain_data.instances, + service_id=chain_data.token, consensus_threshold=None, ) # TODO: Support for multiledger builder.try_update_ledger_params( - chain=LedgerType(service.ledger_config.type).name.lower(), - address=service.ledger_config.rpc, + chain=LedgerType(ledger_config.type).name.lower(), + address=ledger_config.rpc, ) ( @@ -560,6 +580,7 @@ def build( self, use_docker: bool = False, force: bool = True, + chain_id: str = "100", ) -> None: """ Build a deployment @@ -569,8 +590,8 @@ def build( :return: Deployment object """ if use_docker: - return self._build_docker(force=force) - return self._build_host(force=force) + return self._build_docker(force=force, chain_id=chain_id) + return self._build_host(force=force, chain_id=chain_id) def start(self, use_docker: bool = False) -> None: """Start the service""" @@ -622,10 +643,11 @@ def delete(self) -> None: class Service(LocalResource): """Service class.""" + version: int hash: str keys: Keys - ledger_config: LedgerConfig - chain_data: OnChainData + home_chain_id: str + chain_configs: ChainConfigs path: Path service_path: Path @@ -637,9 +659,59 @@ class Service(LocalResource): _file = "config.json" + @classmethod + def migrate_format(cls, path: Path) -> None: + """Migrate the JSON file format if needed.""" + file_path = path / Service._file if Service._file is not None and path.name != Service._file else path + + with open(file_path, 'r', encoding='utf-8') as file: + data = json.load(file) + + if 'version' in data: + # Data is already in the new format + return + + # Migrate from old format to new format + new_data = { + "version": 2, + "hash": data.get("hash"), + "keys": data.get("keys"), + "home_chain_id": "100", # Assuming a default value for home_chain_id + "chain_configs": { + '10': { + "ledger_config": { + "rpc": data.get("ledger_config", {}).get("rpc"), + "type": data.get("ledger_config", {}).get("type"), + "chain": data.get("ledger_config", {}).get("chain") + }, + "chain_data": { + "instances": data.get("chain_data", {}).get("instances", []), + "token": data.get("chain_data", {}).get("token"), + "multisig": data.get("chain_data", {}).get("multisig"), + "staked": data.get("chain_data", {}).get("staked", False), + "on_chain_state": data.get("chain_data", {}).get("on_chain_state", 3), + "user_params": { + "staking_program_id": "pearl_alpha", + "nft": data.get("chain_data", {}).get("user_params", {}).get("nft"), + "threshold": data.get("chain_data", {}).get("user_params", {}).get("threshold"), + "use_staking": data.get("chain_data", {}).get("user_params", {}).get("use_staking"), + "cost_of_bond": data.get("chain_data", {}).get("user_params", {}).get("cost_of_bond"), + "fund_requirements": data.get("chain_data", {}).get("user_params", {}).get("fund_requirements", {}) + } + } + } + }, + "service_path": data.get("service_path", ""), + "name": data.get("name", "") + } + + with open(file_path, 'w', encoding='utf-8') as file: + json.dump(new_data, file, indent=2) + @classmethod def load(cls, path: Path) -> "Service": """Load a service""" + cls.migrate_format(path) return super().load(path) # type: ignore @property @@ -662,8 +734,7 @@ def deployment(self) -> Deployment: def new( hash: str, keys: Keys, - rpc: str, - on_chain_user_params: OnChainUserParams, + service_template: ServiceTemplate, storage: Path, ) -> "Service": """Create a new service.""" @@ -676,32 +747,50 @@ def new( ) ) with (service_path / "service.yaml").open("r", encoding="utf-8") as fp: - config, *_ = yaml_load_all(fp) + service_yaml, *_ = yaml_load_all(fp) - ledger_config = ServiceHelper(path=service_path).ledger_config() - service = Service( - name=config["author"] + "/" + config["name"], - hash=hash, - keys=keys, - ledger_config=LedgerConfig( - rpc=rpc, - type=ledger_config.type, - chain=ledger_config.chain, - ), - chain_data=OnChainData( + ledger_configs = ServiceHelper(path=service_path).ledger_configs() + + chain_configs = {} + for chain, config in service_template["configurations"].items(): + ledger_config = ledger_configs[chain] + ledger_config.rpc = config["rpc"] + + chain_data = OnChainData( instances=[], - token=-1, + token=NON_EXISTENT_TOKEN, multisig=DUMMY_MULTISIG, staked=False, - on_chain_state=OnChainState.NOTMINTED, - user_params=on_chain_user_params, - ), + on_chain_state=OnChainState.NON_EXISTENT, + user_params=OnChainUserParams.from_json(config), + ) + + chain_configs[chain] = ChainConfig( + ledger_config=ledger_config, + chain_data=chain_data, + ) + + service = Service( + version=2, # TODO implement in appropriate place + name=service_yaml["author"] + "/" + service_yaml["name"], + hash=service_template["hash"], + keys=keys, + home_chain_id=service_template["home_chain_id"], + chain_configs=chain_configs, path=service_path.parent, service_path=service_path, ) service.store() return service + def update_user_params_from_template(self, service_template: ServiceTemplate): + """Update user params from template.""" + for chain, config in service_template["configurations"].items(): + for chain, config in service_template["configurations"].items(): + self.chain_configs[chain].chain_data.user_params = OnChainUserParams.from_json(config) + + self.store() + def delete(self) -> None: """Delete a service.""" parent_directory = self.path.parent diff --git a/operate/types.py b/operate/types.py index 29f83ec71..e87669e87 100644 --- a/operate/types.py +++ b/operate/types.py @@ -41,6 +41,8 @@ "goerli": 1, "gnosis": 2, "solana": 3, + "optimism": 4, + "base": 5 } _CHAIN_ID_TO_CHAIN_NAME = { @@ -48,6 +50,8 @@ 5: "goerli", 100: "gnosis", 1399811149: "solana", + 10: "optimism", + 8453: "base" } _CHAIN_NAME_TO_ID = {val: key for key, val in _CHAIN_ID_TO_CHAIN_NAME.items()} @@ -87,6 +91,8 @@ class ChainType(enum.IntEnum): GOERLI = 1 GNOSIS = 2 SOLANA = 3 + OPTIMISM = 4 + BASE = 5 @property def id(self) -> int: @@ -130,16 +136,17 @@ class DeploymentStatus(enum.IntEnum): DELETED = 6 +# TODO defined in aea.chain.base.OnChainState class OnChainState(enum.IntEnum): """On-chain state.""" - NOTMINTED = 0 - MINTED = 1 - ACTIVATED = 2 - REGISTERED = 3 + NON_EXISTENT = 0 + PRE_REGISTRATION = 1 + ACTIVE_REGISTRATION = 2 + FINISHED_REGISTRATION = 3 DEPLOYED = 4 - TERMINATED = 5 - UNBONDED = 6 + TERMINATED_BONDED = 5 + UNBONDED = 6 # TODO this is not an on-chain state https://github.com/valory-xyz/autonolas-registries/blob/main/contracts/ServiceRegistryL2.sol class ContractAddresses(TypedDict): @@ -162,18 +169,7 @@ class LedgerConfig(LocalResource): chain: ChainType -LedgerConfigs = t.List[LedgerConfig] - - -class ServiceState(enum.IntEnum): - """Service state""" - - NON_EXISTENT = 0 - PRE_REGISTRATION = 1 - ACTIVE_REGISTRATION = 2 - FINISHED_REGISTRATION = 3 - DEPLOYED = 4 - TERMINATED_BONDED = 5 +LedgerConfigs = t.Dict[str, LedgerConfig] class DeploymentConfig(TypedDict): @@ -192,17 +188,18 @@ class FundRequirementsTemplate(TypedDict): class ConfigurationTemplate(TypedDict): """Configuration template.""" + staking_program_id: str nft: str rpc: str - agent_id: int threshold: int use_staking: bool cost_of_bond: int - olas_cost_of_bond: int - olas_required_to_stake: int fund_requirements: FundRequirementsTemplate +ConfigurationTemplates = t.Dict[str, ConfigurationTemplate] + + class ServiceTemplate(TypedDict): """Service template.""" @@ -210,7 +207,9 @@ class ServiceTemplate(TypedDict): hash: str image: str description: str - configuration: ConfigurationTemplate + service_version: str + home_chain_id: str + configurations: ConfigurationTemplates @dataclass @@ -233,13 +232,11 @@ class OnChainFundRequirements(LocalResource): class OnChainUserParams(LocalResource): """On-chain user params.""" + staking_program_id: str nft: str - agent_id: int threshold: int use_staking: bool cost_of_bond: int - olas_cost_of_bond: int - olas_required_to_stake: int fund_requirements: OnChainFundRequirements @classmethod @@ -258,3 +255,19 @@ class OnChainData(LocalResource): staked: bool on_chain_state: OnChainState user_params: OnChainUserParams + + +@dataclass +class ChainConfig(LocalResource): + """Chain config.""" + + ledger_config: LedgerConfig + chain_data: OnChainData + + @classmethod + def from_json(cls, obj: t.Dict) -> "ChainConfig": + """Load the chain config.""" + return super().from_json(obj) # type: ignore + + +ChainConfigs = t.Dict[str, ChainConfig] diff --git a/operate/wallet/master.py b/operate/wallet/master.py index ecbd60fc9..3b8be2af5 100644 --- a/operate/wallet/master.py +++ b/operate/wallet/master.py @@ -21,7 +21,7 @@ import json import typing as t -from dataclasses import dataclass +from dataclasses import dataclass, field from pathlib import Path from aea.crypto.base import Crypto, LedgerApi @@ -49,7 +49,7 @@ class MasterWallet(LocalResource): """Master wallet.""" path: Path - safe: t.Optional[str] = None + safes: t.Optional[t.Dict[ChainType, str]] = {} ledger_type: LedgerType _key: str @@ -99,6 +99,7 @@ def transfer( amount: int, chain_type: ChainType, from_safe: bool = True, + rpc: t.Optional[str] = None, ) -> None: """Transfer funds to the given account.""" raise NotImplementedError() @@ -155,16 +156,16 @@ class EthereumMasterWallet(MasterWallet): safe_chains: t.List[ChainType] # For cross-chain support ledger_type: LedgerType = LedgerType.ETHEREUM - safe: t.Optional[str] = None + safes: t.Optional[t.Dict[ChainType, str]] = field(default_factory=dict) safe_nonce: t.Optional[int] = None # For cross-chain reusability _file = ledger_type.config_file _key = ledger_type.key_file _crypto_cls = EthereumCrypto - def _transfer_from_eoa(self, to: str, amount: int, chain_type: ChainType) -> None: + def _transfer_from_eoa(self, to: str, amount: int, chain_type: ChainType, rpc: t.Optional[str] = None) -> None: """Transfer funds from EOA wallet.""" - ledger_api = t.cast(EthereumApi, self.ledger_api(chain_type=chain_type)) + ledger_api = t.cast(EthereumApi, self.ledger_api(chain_type=chain_type, rpc=rpc)) tx_helper = TxSettler( ledger_api=ledger_api, crypto=self.crypto, @@ -195,12 +196,12 @@ def _build_tx( # pylint: disable=unused-argument setattr(tx_helper, "build", _build_tx) # noqa: B010 tx_helper.transact(lambda x: x, "", kwargs={}) - def _transfer_from_safe(self, to: str, amount: int, chain_type: ChainType) -> None: + def _transfer_from_safe(self, to: str, amount: int, chain_type: ChainType, rpc: t.Optional[str] = None) -> None: """Transfer funds from safe wallet.""" transfer_from_safe( - ledger_api=self.ledger_api(chain_type=chain_type), + ledger_api=self.ledger_api(chain_type=chain_type, rpc=rpc), crypto=self.crypto, - safe=t.cast(str, self.safe), + safe=t.cast(str, self.safes[chain_type]), to=to, amount=amount, ) @@ -211,6 +212,7 @@ def transfer( amount: int, chain_type: ChainType, from_safe: bool = True, + rpc: t.Optional[str] = None, ) -> None: """Transfer funds to the given account.""" if from_safe: @@ -218,11 +220,13 @@ def transfer( to=to, amount=amount, chain_type=chain_type, + rpc=rpc, ) return self._transfer_from_eoa( to=to, amount=amount, chain_type=chain_type, + rpc=rpc, ) @classmethod @@ -260,13 +264,16 @@ def create_safe( """Create safe.""" if chain_type in self.safe_chains: return - self.safe, self.safe_nonce = create_gnosis_safe( + safe, self.safe_nonce = create_gnosis_safe( ledger_api=self.ledger_api(chain_type=chain_type, rpc=rpc), crypto=self.crypto, owner=owner, salt_nonce=self.safe_nonce, ) self.safe_chains.append(chain_type) + if self.safes is None: + self.safes = {} + self.safes[chain_type] = safe self.store() def add_backup_owner( @@ -277,11 +284,14 @@ def add_backup_owner( ) -> None: """Add a backup owner.""" ledger_api = self.ledger_api(chain_type=chain_type, rpc=rpc) - if len(get_owners(ledger_api=ledger_api, safe=t.cast(str, self.safe))) == 2: + if chain_type not in self.safes: + raise ValueError(f"Safes not created for chain_type {chain_type}!") + safe = t.cast(str, self.safes[chain_type]) + if len(get_owners(ledger_api=ledger_api, safe=safe)) == 2: raise ValueError("Backup owner already exist!") add_owner( ledger_api=ledger_api, - safe=t.cast(str, self.safe), + safe=safe, owner=owner, crypto=self.crypto, ) @@ -295,11 +305,14 @@ def swap_backup_owner( ) -> None: """Swap backup owner.""" ledger_api = self.ledger_api(chain_type=chain_type, rpc=rpc) - if len(get_owners(ledger_api=ledger_api, safe=t.cast(str, self.safe))) == 1: + if chain_type not in self.safes: + raise ValueError(f"Safes not created for chain_type {chain_type}!") + safe = t.cast(str, self.safes[chain_type]) + if len(get_owners(ledger_api=ledger_api, safe=safe)) == 1: raise ValueError("Backup owner does not exist, cannot swap!") swap_owner( ledger_api=ledger_api, - safe=t.cast(str, self.safe), + safe=safe, old_owner=old_owner, new_owner=new_owner, crypto=self.crypto, @@ -313,7 +326,10 @@ def add_or_swap_owner( ) -> None: """Add or swap backup owner.""" ledger_api = self.ledger_api(chain_type=chain_type, rpc=rpc) - owners = get_owners(ledger_api=ledger_api, safe=t.cast(str, self.safe)) + if chain_type not in self.safes: + raise ValueError(f"Safes not created for chain_type {chain_type}!") + safe = t.cast(str, self.safes[chain_type]) + owners = get_owners(ledger_api=ledger_api, safe=safe) if len(owners) == 1: return self.add_backup_owner(chain_type=chain_type, owner=owner, rpc=rpc) @@ -332,7 +348,13 @@ def add_or_swap_owner( @classmethod def load(cls, path: Path) -> "EthereumMasterWallet": """Load master wallet.""" - return super().load(path) # type: ignore + raw_ethereum_wallet = super().load(path) # type: ignore + safes = {} + for id_, safe_address in raw_ethereum_wallet.safes.items(): + safes[ChainType(int(id_))] = safe_address + + raw_ethereum_wallet.safes = safes + return t.cast(EthereumMasterWallet, raw_ethereum_wallet) LEDGER_TYPE_TO_WALLET_CLASS = { diff --git a/package.json b/package.json index 23a69d72b..c5afe288e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "cross-env": "^7.0.3", "dotenv": "^16.4.5", "electron-log": "^5.1.4", - "electron-store": "^9.0.0", + "electron-store": "8.2.0", "electron-updater": "^6.1.8", "ethers": "5.7.2", "ethers-multicall": "^0.2.3", @@ -43,7 +43,6 @@ "productName": "Pearl", "description": "An all-in-one application designed to streamline your entry into the world of autonomous agents and earning OLAS through staking.", "scripts": { - "build": "rm -rf dist/ && node build.tester.js", "build:frontend": "cd frontend && yarn build && rm -rf ../electron/.next && cp -r .next ../electron/.next && rm -rf ../electron/public && cp -r public ../electron/public", "dev:backend": "poetry run python operate/cli.py", "dev:frontend": "cd frontend && yarn dev", @@ -52,9 +51,12 @@ "install:backend": "poetry install --no-root", "install:frontend": "cd frontend && yarn", "lint:frontend": "cd frontend && yarn lint", - "start": "electron .", + "start": "yarn electron .", + "dev": "dotenv -e .env -- yarn start", "start:frontend": "cd frontend && yarn start", - "test:frontend": "cd frontend && yarn test" + "test:frontend": "cd frontend && yarn test", + "download-binaries": "sh download_binaries.sh", + "build:pearl": "sh build_pearl.sh" }, - "version": "0.1.0-rc110" -} + "version": "0.1.0-rc115" +} \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index f98e0f9a6..eef748974 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "aiohttp" version = "3.9.5" description = "Async http client/server framework (asyncio)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -101,7 +100,6 @@ speedups = ["Brotli", "aiodns", "brotlicffi"] name = "aiosignal" version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -116,7 +114,6 @@ frozenlist = ">=1.1.0" name = "altgraph" version = "0.17.4" description = "Python graph (network) package" -category = "main" optional = false python-versions = "*" files = [ @@ -128,7 +125,6 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -140,7 +136,6 @@ files = [ name = "anyio" version = "4.4.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -163,7 +158,6 @@ trio = ["trio (>=0.23)"] name = "asn1crypto" version = "1.5.1" description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" -category = "main" optional = false python-versions = "*" files = [ @@ -171,11 +165,28 @@ files = [ {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, ] +[[package]] +name = "asttokens" +version = "2.4.1" +description = "Annotate AST trees with source code positions" +optional = false +python-versions = "*" +files = [ + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, +] + +[package.dependencies] +six = ">=1.12.0" + +[package.extras] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] + [[package]] name = "async-timeout" version = "4.0.3" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -187,7 +198,6 @@ files = [ name = "attrs" version = "23.2.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -207,7 +217,6 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p name = "backoff" version = "2.2.1" description = "Function decoration for backoff and retry" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -219,7 +228,6 @@ files = [ name = "base58" version = "2.1.1" description = "Base58 and Base58Check implementation." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -232,39 +240,38 @@ tests = ["PyHamcrest (>=2.0.2)", "mypy", "pytest (>=4.6)", "pytest-benchmark", " [[package]] name = "bcrypt" -version = "4.1.3" +version = "4.2.0" description = "Modern password hashing for your software and your servers" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "bcrypt-4.1.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:48429c83292b57bf4af6ab75809f8f4daf52aa5d480632e53707805cc1ce9b74"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8bea4c152b91fd8319fef4c6a790da5c07840421c2b785084989bf8bbb7455"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d3b317050a9a711a5c7214bf04e28333cf528e0ed0ec9a4e55ba628d0f07c1a"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:094fd31e08c2b102a14880ee5b3d09913ecf334cd604af27e1013c76831f7b05"}, - {file = "bcrypt-4.1.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4fb253d65da30d9269e0a6f4b0de32bd657a0208a6f4e43d3e645774fb5457f3"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:193bb49eeeb9c1e2db9ba65d09dc6384edd5608d9d672b4125e9320af9153a15"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8cbb119267068c2581ae38790e0d1fbae65d0725247a930fc9900c285d95725d"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6cac78a8d42f9d120b3987f82252bdbeb7e6e900a5e1ba37f6be6fe4e3848286"}, - {file = "bcrypt-4.1.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01746eb2c4299dd0ae1670234bf77704f581dd72cc180f444bfe74eb80495b64"}, - {file = "bcrypt-4.1.3-cp37-abi3-win32.whl", hash = "sha256:037c5bf7c196a63dcce75545c8874610c600809d5d82c305dd327cd4969995bf"}, - {file = "bcrypt-4.1.3-cp37-abi3-win_amd64.whl", hash = "sha256:8a893d192dfb7c8e883c4576813bf18bb9d59e2cfd88b68b725990f033f1b978"}, - {file = "bcrypt-4.1.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d4cf6ef1525f79255ef048b3489602868c47aea61f375377f0d00514fe4a78c"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5698ce5292a4e4b9e5861f7e53b1d89242ad39d54c3da451a93cac17b61921a"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec3c2e1ca3e5c4b9edb94290b356d082b721f3f50758bce7cce11d8a7c89ce84"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3a5be252fef513363fe281bafc596c31b552cf81d04c5085bc5dac29670faa08"}, - {file = "bcrypt-4.1.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5f7cd3399fbc4ec290378b541b0cf3d4398e4737a65d0f938c7c0f9d5e686611"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c4c8d9b3e97209dd7111bf726e79f638ad9224b4691d1c7cfefa571a09b1b2d6"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:31adb9cbb8737a581a843e13df22ffb7c84638342de3708a98d5c986770f2834"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:551b320396e1d05e49cc18dd77d970accd52b322441628aca04801bbd1d52a73"}, - {file = "bcrypt-4.1.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6717543d2c110a155e6821ce5670c1f512f602eabb77dba95717ca76af79867d"}, - {file = "bcrypt-4.1.3-cp39-abi3-win32.whl", hash = "sha256:6004f5229b50f8493c49232b8e75726b568535fd300e5039e255d919fc3a07f2"}, - {file = "bcrypt-4.1.3-cp39-abi3-win_amd64.whl", hash = "sha256:2505b54afb074627111b5a8dc9b6ae69d0f01fea65c2fcaea403448c503d3991"}, - {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:cb9c707c10bddaf9e5ba7cdb769f3e889e60b7d4fea22834b261f51ca2b89fed"}, - {file = "bcrypt-4.1.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9f8ea645eb94fb6e7bea0cf4ba121c07a3a182ac52876493870033141aa687bc"}, - {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f44a97780677e7ac0ca393bd7982b19dbbd8d7228c1afe10b128fd9550eef5f1"}, - {file = "bcrypt-4.1.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d84702adb8f2798d813b17d8187d27076cca3cd52fe3686bb07a9083930ce650"}, - {file = "bcrypt-4.1.3.tar.gz", hash = "sha256:2ee15dd749f5952fe3f0430d0ff6b74082e159c50332a1413d51b5689cf06623"}, + {file = "bcrypt-4.2.0-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:096a15d26ed6ce37a14c1ac1e48119660f21b24cba457f160a4b830f3fe6b5cb"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c02d944ca89d9b1922ceb8a46460dd17df1ba37ab66feac4870f6862a1533c00"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d84cf6d877918620b687b8fd1bf7781d11e8a0998f576c7aa939776b512b98d"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1bb429fedbe0249465cdd85a58e8376f31bb315e484f16e68ca4c786dcc04291"}, + {file = "bcrypt-4.2.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:655ea221910bcac76ea08aaa76df427ef8625f92e55a8ee44fbf7753dbabb328"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:1ee38e858bf5d0287c39b7a1fc59eec64bbf880c7d504d3a06a96c16e14058e7"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0da52759f7f30e83f1e30a888d9163a81353ef224d82dc58eb5bb52efcabc399"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3698393a1b1f1fd5714524193849d0c6d524d33523acca37cd28f02899285060"}, + {file = "bcrypt-4.2.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:762a2c5fb35f89606a9fde5e51392dad0cd1ab7ae64149a8b935fe8d79dd5ed7"}, + {file = "bcrypt-4.2.0-cp37-abi3-win32.whl", hash = "sha256:5a1e8aa9b28ae28020a3ac4b053117fb51c57a010b9f969603ed885f23841458"}, + {file = "bcrypt-4.2.0-cp37-abi3-win_amd64.whl", hash = "sha256:8f6ede91359e5df88d1f5c1ef47428a4420136f3ce97763e31b86dd8280fbdf5"}, + {file = "bcrypt-4.2.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:c52aac18ea1f4a4f65963ea4f9530c306b56ccd0c6f8c8da0c06976e34a6e841"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3bbbfb2734f0e4f37c5136130405332640a1e46e6b23e000eeff2ba8d005da68"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3413bd60460f76097ee2e0a493ccebe4a7601918219c02f503984f0a7ee0aebe"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8d7bb9c42801035e61c109c345a28ed7e84426ae4865511eb82e913df18f58c2"}, + {file = "bcrypt-4.2.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d3a6d28cb2305b43feac298774b997e372e56c7c7afd90a12b3dc49b189151c"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9c1c4ad86351339c5f320ca372dfba6cb6beb25e8efc659bedd918d921956bae"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:27fe0f57bb5573104b5a6de5e4153c60814c711b29364c10a75a54bb6d7ff48d"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8ac68872c82f1add6a20bd489870c71b00ebacd2e9134a8aa3f98a0052ab4b0e"}, + {file = "bcrypt-4.2.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:cb2a8ec2bc07d3553ccebf0746bbf3d19426d1c6d1adbd4fa48925f66af7b9e8"}, + {file = "bcrypt-4.2.0-cp39-abi3-win32.whl", hash = "sha256:77800b7147c9dc905db1cba26abe31e504d8247ac73580b4aa179f98e6608f34"}, + {file = "bcrypt-4.2.0-cp39-abi3-win_amd64.whl", hash = "sha256:61ed14326ee023917ecd093ee6ef422a72f3aec6f07e21ea5f10622b735538a9"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:39e1d30c7233cfc54f5c3f2c825156fe044efdd3e0b9d309512cc514a263ec2a"}, + {file = "bcrypt-4.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f4f4acf526fcd1c34e7ce851147deedd4e26e6402369304220250598b26448db"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:1ff39b78a52cf03fdf902635e4c81e544714861ba3f0efc56558979dd4f09170"}, + {file = "bcrypt-4.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:373db9abe198e8e2c70d12b479464e0d5092cc122b20ec504097b5f2297ed184"}, + {file = "bcrypt-4.2.0.tar.gz", hash = "sha256:cf69eaf5185fd58f268f805b505ce31f9b9fc2d64b376642164e9244540c1221"}, ] [package.extras] @@ -275,7 +282,6 @@ typecheck = ["mypy"] name = "bech32" version = "1.2.0" description = "Reference implementation for Bech32 and segwit addresses." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -287,7 +293,6 @@ files = [ name = "bitarray" version = "2.9.2" description = "efficient arrays of booleans -- C extension" -category = "main" optional = false python-versions = "*" files = [ @@ -419,7 +424,6 @@ files = [ name = "certifi" version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -431,7 +435,6 @@ files = [ name = "cffi" version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -494,24 +497,107 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false -python-versions = ">=3.6.0" -files = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] -[package.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "clea" version = "0.1.0rc4" description = "Framework for writing CLI application quickly" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -524,14 +610,13 @@ typing-extensions = ">=4.7.1,<5.0.0" [[package]] name = "click" -version = "8.0.2" +version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "click-8.0.2-py3-none-any.whl", hash = "sha256:3fab8aeb8f15f5452ae7511ad448977b3417325bceddd53df87e0bb81f3a8cf8"}, - {file = "click-8.0.2.tar.gz", hash = "sha256:7027bc7bbafaab8b2c2816861d8eb372429ee3c02e193fc2f93d6c4ab9de49c5"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -541,7 +626,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "coincurve" version = "18.0.0" description = "Cross-platform Python CFFI bindings for libsecp256k1" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -597,7 +681,6 @@ cffi = ">=1.3.0" name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -609,7 +692,6 @@ files = [ name = "cosmpy" version = "0.9.2" description = "A library for interacting with the cosmos networks" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -630,64 +712,63 @@ requests = "*" [[package]] name = "coverage" -version = "7.5.4" +version = "7.6.0" description = "Code coverage measurement for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, - {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, - {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, - {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, - {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, - {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, - {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, - {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, - {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, - {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, - {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, - {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, - {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, - {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, - {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, - {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, - {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, - {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, - {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, - {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, - {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, - {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, - {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, - {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, - {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, - {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, - {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, - {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, - {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, - {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, - {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, - {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"}, + {file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"}, + {file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"}, + {file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"}, + {file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"}, + {file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"}, + {file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"}, + {file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"}, + {file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"}, + {file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"}, + {file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"}, + {file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"}, + {file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"}, + {file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"}, + {file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"}, + {file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"}, + {file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"}, + {file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"}, + {file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"}, + {file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"}, + {file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"}, + {file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"}, + {file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"}, + {file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"}, + {file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"}, + {file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"}, + {file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"}, + {file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"}, ] [package.extras] @@ -695,44 +776,38 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.8" +version = "43.0.0" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, + {file = "cryptography-43.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:64c3f16e2a4fc51c0d06af28441881f98c5d91009b8caaff40cf3548089e9c74"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3dcdedae5c7710b9f97ac6bba7e1052b95c7083c9d0e9df96e02a1932e777895"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d9a1eca329405219b605fac09ecfc09ac09e595d6def650a437523fcd08dd22"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ea9e57f8ea880eeea38ab5abf9fbe39f923544d7884228ec67d666abd60f5a47"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9a8d6802e0825767476f62aafed40532bd435e8a5f7d23bd8b4f5fd04cc80ecf"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cc70b4b581f28d0a254d006f26949245e3657d40d8857066c2ae22a61222ef55"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a997df8c1c2aae1e1e5ac49c2e4f610ad037fc5a3aadc7b64e39dea42249431"}, + {file = "cryptography-43.0.0-cp37-abi3-win32.whl", hash = "sha256:6e2b11c55d260d03a8cf29ac9b5e0608d35f08077d8c087be96287f43af3ccdc"}, + {file = "cryptography-43.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:31e44a986ceccec3d0498e16f3d27b2ee5fdf69ce2ab89b52eaad1d2f33d8778"}, + {file = "cryptography-43.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:7b3f5fe74a5ca32d4d0f302ffe6680fcc5c28f8ef0dc0ae8f40c0f3a1b4fca66"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac1955ce000cb29ab40def14fd1bbfa7af2017cca696ee696925615cafd0dce5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:299d3da8e00b7e2b54bb02ef58d73cd5f55fb31f33ebbf33bd00d9aa6807df7e"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ee0c405832ade84d4de74b9029bedb7b31200600fa524d218fc29bfa371e97f5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb013933d4c127349b3948aa8aaf2f12c0353ad0eccd715ca789c8a0f671646f"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fdcb265de28585de5b859ae13e3846a8e805268a823a12a4da2597f1f5afc9f0"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2905ccf93a8a2a416f3ec01b1a7911c3fe4073ef35640e7ee5296754e30b762b"}, + {file = "cryptography-43.0.0-cp39-abi3-win32.whl", hash = "sha256:47ca71115e545954e6c1d207dd13461ab81f4eccfcb1345eac874828b5e3eaaf"}, + {file = "cryptography-43.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:0663585d02f76929792470451a5ba64424acc3cd5227b03921dab0e2f27b1709"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c6d112bf61c5ef44042c253e4859b3cbbb50df2f78fa8fae6747a7814484a70"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:844b6d608374e7d08f4f6e6f9f7b951f9256db41421917dfb2d003dde4cd6b66"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51956cf8730665e2bdf8ddb8da0056f699c1a5715648c1b0144670c1ba00b48f"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:aae4d918f6b180a8ab8bf6511a419473d107df4dbb4225c7b48c5c9602c38c7f"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:232ce02943a579095a339ac4b390fbbe97f5b5d5d107f8a08260ea2768be8cc2"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5bcb8a5620008a8034d39bce21dc3e23735dfdb6a33a06974739bfa04f853947"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:08a24a7070b2b6804c1940ff0f910ff728932a9d0e80e7814234269f9d46d069"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e9c5266c432a1e23738d178e51c2c7a5e2ddf790f248be939448c0ba2021f9d1"}, + {file = "cryptography-43.0.0.tar.gz", hash = "sha256:b88075ada2d51aa9f18283532c9f60e72170041bba88d7f37e49cbb10275299e"}, ] [package.dependencies] @@ -745,14 +820,13 @@ nox = ["nox"] pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.0)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "cytoolz" version = "0.12.3" description = "Cython implementation of Toolz: High performance functional utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -872,7 +946,6 @@ cython = ["cython"] name = "distlib" version = "0.3.8" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -884,7 +957,6 @@ files = [ name = "distro" version = "1.9.0" description = "Distro - an OS platform information API" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -896,7 +968,6 @@ files = [ name = "docker" version = "6.1.2" description = "A Python library for the Docker Engine API." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -919,7 +990,6 @@ ssh = ["paramiko (>=2.4.3)"] name = "dockerpty" version = "0.4.1" description = "Python library to use the pseudo-tty of a docker container" -category = "main" optional = false python-versions = "*" files = [ @@ -933,7 +1003,6 @@ six = ">=1.3.0" name = "docopt" version = "0.6.2" description = "Pythonic argument parser, that will make you smile" -category = "main" optional = false python-versions = "*" files = [ @@ -944,7 +1013,6 @@ files = [ name = "ecdsa" version = "0.16.1" description = "ECDSA cryptographic signature library (pure python)" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -963,7 +1031,6 @@ gmpy2 = ["gmpy2"] name = "eth-abi" version = "5.1.0" description = "eth_abi: Python utilities for working with Ethereum ABI definitions, especially encoding and decoding" -category = "main" optional = false python-versions = "<4,>=3.8" files = [ @@ -986,7 +1053,6 @@ tools = ["hypothesis (>=4.18.2,<5.0.0)"] name = "eth-account" version = "0.8.0" description = "eth-account: Sign Ethereum transactions and messages with local private keys" -category = "main" optional = false python-versions = ">=3.6, <4" files = [ @@ -1014,7 +1080,6 @@ test = ["coverage", "hypothesis (>=4.18.0,<5)", "pytest (>=6.2.5,<7)", "pytest-x name = "eth-hash" version = "0.7.0" description = "eth-hash: The Ethereum hashing function, keccak256, sometimes (erroneously) called sha3" -category = "main" optional = false python-versions = ">=3.8, <4" files = [ @@ -1036,7 +1101,6 @@ test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] name = "eth-keyfile" version = "0.6.1" description = "A library for handling the encrypted keyfiles used to store ethereum private keys." -category = "main" optional = false python-versions = "*" files = [ @@ -1059,7 +1123,6 @@ test = ["pytest (>=6.2.5,<7)"] name = "eth-keys" version = "0.4.0" description = "Common API for Ethereum key operations." -category = "main" optional = false python-versions = "*" files = [ @@ -1082,7 +1145,6 @@ test = ["asn1tools (>=0.146.2,<0.147)", "eth-hash[pycryptodome]", "eth-hash[pysh name = "eth-rlp" version = "0.3.0" description = "eth-rlp: RLP definitions for common Ethereum objects in Python" -category = "main" optional = false python-versions = ">=3.7, <4" files = [ @@ -1105,7 +1167,6 @@ test = ["eth-hash[pycryptodome]", "pytest (>=6.2.5,<7)", "pytest-xdist", "tox (= name = "eth-typing" version = "3.5.2" description = "eth-typing: Common type annotations for ethereum python packages" -category = "main" optional = false python-versions = ">=3.7.2, <4" files = [ @@ -1126,7 +1187,6 @@ test = ["pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] name = "eth-utils" version = "2.3.1" description = "eth-utils: Common utility functions for python code that interacts with Ethereum" -category = "main" optional = false python-versions = ">=3.7,<4" files = [ @@ -1148,24 +1208,36 @@ test = ["hypothesis (>=4.43.0)", "mypy (==0.971)", "pytest (>=7.0.0)", "pytest-x [[package]] name = "exceptiongroup" -version = "1.2.1" +version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] [package.extras] test = ["pytest (>=6)"] +[[package]] +name = "executing" +version = "2.0.1" +description = "Get the currently executing AST node of a frame, and other information" +optional = false +python-versions = ">=3.5" +files = [ + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, +] + +[package.extras] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] + [[package]] name = "fastapi" version = "0.110.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1185,7 +1257,6 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" name = "filelock" version = "3.15.4" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1202,7 +1273,6 @@ typing = ["typing-extensions (>=4.8)"] name = "flask" version = "2.1.3" description = "A simple framework for building complex web applications." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1225,7 +1295,6 @@ dotenv = ["python-dotenv"] name = "frozenlist" version = "1.4.1" description = "A list-like structure which implements collections.abc.MutableSequence" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1312,7 +1381,6 @@ files = [ name = "googleapis-common-protos" version = "1.63.2" description = "Common protobufs used in Google APIs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1330,7 +1398,6 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] name = "gql" version = "3.5.0" description = "GraphQL client for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1359,7 +1426,6 @@ websockets = ["websockets (>=10,<12)"] name = "graphql-core" version = "3.2.3" description = "GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL." -category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -1369,68 +1435,66 @@ files = [ [[package]] name = "grpcio" -version = "1.64.1" +version = "1.65.1" description = "HTTP/2-based RPC framework" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.64.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:55697ecec192bc3f2f3cc13a295ab670f51de29884ca9ae6cd6247df55df2502"}, - {file = "grpcio-1.64.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3b64ae304c175671efdaa7ec9ae2cc36996b681eb63ca39c464958396697daff"}, - {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:bac71b4b28bc9af61efcdc7630b166440bbfbaa80940c9a697271b5e1dabbc61"}, - {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c024ffc22d6dc59000faf8ad781696d81e8e38f4078cb0f2630b4a3cf231a90"}, - {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7cd5c1325f6808b8ae31657d281aadb2a51ac11ab081ae335f4f7fc44c1721d"}, - {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0a2813093ddb27418a4c99f9b1c223fab0b053157176a64cc9db0f4557b69bd9"}, - {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2981c7365a9353f9b5c864595c510c983251b1ab403e05b1ccc70a3d9541a73b"}, - {file = "grpcio-1.64.1-cp310-cp310-win32.whl", hash = "sha256:1262402af5a511c245c3ae918167eca57342c72320dffae5d9b51840c4b2f86d"}, - {file = "grpcio-1.64.1-cp310-cp310-win_amd64.whl", hash = "sha256:19264fc964576ddb065368cae953f8d0514ecc6cb3da8903766d9fb9d4554c33"}, - {file = "grpcio-1.64.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:58b1041e7c870bb30ee41d3090cbd6f0851f30ae4eb68228955d973d3efa2e61"}, - {file = "grpcio-1.64.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bbc5b1d78a7822b0a84c6f8917faa986c1a744e65d762ef6d8be9d75677af2ca"}, - {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5841dd1f284bd1b3d8a6eca3a7f062b06f1eec09b184397e1d1d43447e89a7ae"}, - {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8caee47e970b92b3dd948371230fcceb80d3f2277b3bf7fbd7c0564e7d39068e"}, - {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73819689c169417a4f978e562d24f2def2be75739c4bed1992435d007819da1b"}, - {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6503b64c8b2dfad299749cad1b595c650c91e5b2c8a1b775380fcf8d2cbba1e9"}, - {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1de403fc1305fd96cfa75e83be3dee8538f2413a6b1685b8452301c7ba33c294"}, - {file = "grpcio-1.64.1-cp311-cp311-win32.whl", hash = "sha256:d4d29cc612e1332237877dfa7fe687157973aab1d63bd0f84cf06692f04c0367"}, - {file = "grpcio-1.64.1-cp311-cp311-win_amd64.whl", hash = "sha256:5e56462b05a6f860b72f0fa50dca06d5b26543a4e88d0396259a07dc30f4e5aa"}, - {file = "grpcio-1.64.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:4657d24c8063e6095f850b68f2d1ba3b39f2b287a38242dcabc166453e950c59"}, - {file = "grpcio-1.64.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:62b4e6eb7bf901719fce0ca83e3ed474ae5022bb3827b0a501e056458c51c0a1"}, - {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:ee73a2f5ca4ba44fa33b4d7d2c71e2c8a9e9f78d53f6507ad68e7d2ad5f64a22"}, - {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:198908f9b22e2672a998870355e226a725aeab327ac4e6ff3a1399792ece4762"}, - {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39b9d0acaa8d835a6566c640f48b50054f422d03e77e49716d4c4e8e279665a1"}, - {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5e42634a989c3aa6049f132266faf6b949ec2a6f7d302dbb5c15395b77d757eb"}, - {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1a82e0b9b3022799c336e1fc0f6210adc019ae84efb7321d668129d28ee1efb"}, - {file = "grpcio-1.64.1-cp312-cp312-win32.whl", hash = "sha256:55260032b95c49bee69a423c2f5365baa9369d2f7d233e933564d8a47b893027"}, - {file = "grpcio-1.64.1-cp312-cp312-win_amd64.whl", hash = "sha256:c1a786ac592b47573a5bb7e35665c08064a5d77ab88a076eec11f8ae86b3e3f6"}, - {file = "grpcio-1.64.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:a011ac6c03cfe162ff2b727bcb530567826cec85eb8d4ad2bfb4bd023287a52d"}, - {file = "grpcio-1.64.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4d6dab6124225496010bd22690f2d9bd35c7cbb267b3f14e7a3eb05c911325d4"}, - {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:a5e771d0252e871ce194d0fdcafd13971f1aae0ddacc5f25615030d5df55c3a2"}, - {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3c1b90ab93fed424e454e93c0ed0b9d552bdf1b0929712b094f5ecfe7a23ad"}, - {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20405cb8b13fd779135df23fabadc53b86522d0f1cba8cca0e87968587f50650"}, - {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0cc79c982ccb2feec8aad0e8fb0d168bcbca85bc77b080d0d3c5f2f15c24ea8f"}, - {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a3a035c37ce7565b8f4f35ff683a4db34d24e53dc487e47438e434eb3f701b2a"}, - {file = "grpcio-1.64.1-cp38-cp38-win32.whl", hash = "sha256:1257b76748612aca0f89beec7fa0615727fd6f2a1ad580a9638816a4b2eb18fd"}, - {file = "grpcio-1.64.1-cp38-cp38-win_amd64.whl", hash = "sha256:0a12ddb1678ebc6a84ec6b0487feac020ee2b1659cbe69b80f06dbffdb249122"}, - {file = "grpcio-1.64.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:75dbbf415026d2862192fe1b28d71f209e2fd87079d98470db90bebe57b33179"}, - {file = "grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e3d9f8d1221baa0ced7ec7322a981e28deb23749c76eeeb3d33e18b72935ab62"}, - {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5f8b75f64d5d324c565b263c67dbe4f0af595635bbdd93bb1a88189fc62ed2e5"}, - {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c84ad903d0d94311a2b7eea608da163dace97c5fe9412ea311e72c3684925602"}, - {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:940e3ec884520155f68a3b712d045e077d61c520a195d1a5932c531f11883489"}, - {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f10193c69fc9d3d726e83bbf0f3d316f1847c3071c8c93d8090cf5f326b14309"}, - {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac15b6c2c80a4d1338b04d42a02d376a53395ddf0ec9ab157cbaf44191f3ffdd"}, - {file = "grpcio-1.64.1-cp39-cp39-win32.whl", hash = "sha256:03b43d0ccf99c557ec671c7dede64f023c7da9bb632ac65dbc57f166e4970040"}, - {file = "grpcio-1.64.1-cp39-cp39-win_amd64.whl", hash = "sha256:ed6091fa0adcc7e4ff944090cf203a52da35c37a130efa564ded02b7aff63bcd"}, - {file = "grpcio-1.64.1.tar.gz", hash = "sha256:8d51dd1c59d5fa0f34266b80a3805ec29a1f26425c2a54736133f6d87fc4968a"}, + {file = "grpcio-1.65.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:3dc5f928815b8972fb83b78d8db5039559f39e004ec93ebac316403fe031a062"}, + {file = "grpcio-1.65.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8333ca46053c35484c9f2f7e8d8ec98c1383a8675a449163cea31a2076d93de8"}, + {file = "grpcio-1.65.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:7af64838b6e615fff0ec711960ed9b6ee83086edfa8c32670eafb736f169d719"}, + {file = "grpcio-1.65.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb64b4166362d9326f7efbf75b1c72106c1aa87f13a8c8b56a1224fac152f5c"}, + {file = "grpcio-1.65.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8422dc13ad93ec8caa2612b5032a2b9cd6421c13ed87f54db4a3a2c93afaf77"}, + {file = "grpcio-1.65.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4effc0562b6c65d4add6a873ca132e46ba5e5a46f07c93502c37a9ae7f043857"}, + {file = "grpcio-1.65.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a6c71575a2fedf259724981fd73a18906513d2f306169c46262a5bae956e6364"}, + {file = "grpcio-1.65.1-cp310-cp310-win32.whl", hash = "sha256:34966cf526ef0ea616e008d40d989463e3db157abb213b2f20c6ce0ae7928875"}, + {file = "grpcio-1.65.1-cp310-cp310-win_amd64.whl", hash = "sha256:ca931de5dd6d9eb94ff19a2c9434b23923bce6f767179fef04dfa991f282eaad"}, + {file = "grpcio-1.65.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:bbb46330cc643ecf10bd9bd4ca8e7419a14b6b9dedd05f671c90fb2c813c6037"}, + {file = "grpcio-1.65.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d827a6fb9215b961eb73459ad7977edb9e748b23e3407d21c845d1d8ef6597e5"}, + {file = "grpcio-1.65.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:6e71aed8835f8d9fbcb84babc93a9da95955d1685021cceb7089f4f1e717d719"}, + {file = "grpcio-1.65.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a1c84560b3b2d34695c9ba53ab0264e2802721c530678a8f0a227951f453462"}, + {file = "grpcio-1.65.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27adee2338d697e71143ed147fe286c05810965d5d30ec14dd09c22479bfe48a"}, + {file = "grpcio-1.65.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f62652ddcadc75d0e7aa629e96bb61658f85a993e748333715b4ab667192e4e8"}, + {file = "grpcio-1.65.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:71a05fd814700dd9cb7d9a507f2f6a1ef85866733ccaf557eedacec32d65e4c2"}, + {file = "grpcio-1.65.1-cp311-cp311-win32.whl", hash = "sha256:b590f1ad056294dfaeac0b7e1b71d3d5ace638d8dd1f1147ce4bd13458783ba8"}, + {file = "grpcio-1.65.1-cp311-cp311-win_amd64.whl", hash = "sha256:12e9bdf3b5fd48e5fbe5b3da382ad8f97c08b47969f3cca81dd9b36b86ed39e2"}, + {file = "grpcio-1.65.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:54cb822e177374b318b233e54b6856c692c24cdbd5a3ba5335f18a47396bac8f"}, + {file = "grpcio-1.65.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aaf3c54419a28d45bd1681372029f40e5bfb58e5265e3882eaf21e4a5f81a119"}, + {file = "grpcio-1.65.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:557de35bdfbe8bafea0a003dbd0f4da6d89223ac6c4c7549d78e20f92ead95d9"}, + {file = "grpcio-1.65.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8bfd95ef3b097f0cc86ade54eafefa1c8ed623aa01a26fbbdcd1a3650494dd11"}, + {file = "grpcio-1.65.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e6a8f3d6c41e6b642870afe6cafbaf7b61c57317f9ec66d0efdaf19db992b90"}, + {file = "grpcio-1.65.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1faaf7355ceed07ceaef0b9dcefa4c98daf1dd8840ed75c2de128c3f4a4d859d"}, + {file = "grpcio-1.65.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:60f1f38eed830488ad2a1b11579ef0f345ff16fffdad1d24d9fbc97ba31804ff"}, + {file = "grpcio-1.65.1-cp312-cp312-win32.whl", hash = "sha256:e75acfa52daf5ea0712e8aa82f0003bba964de7ae22c26d208cbd7bc08500177"}, + {file = "grpcio-1.65.1-cp312-cp312-win_amd64.whl", hash = "sha256:ff5a84907e51924973aa05ed8759210d8cdae7ffcf9e44fd17646cf4a902df59"}, + {file = "grpcio-1.65.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:1fbd6331f18c3acd7e09d17fd840c096f56eaf0ef830fbd50af45ae9dc8dfd83"}, + {file = "grpcio-1.65.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:de5b6be29116e094c5ef9d9e4252e7eb143e3d5f6bd6d50a78075553ab4930b0"}, + {file = "grpcio-1.65.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:e4a3cdba62b2d6aeae6027ae65f350de6dc082b72e6215eccf82628e79efe9ba"}, + {file = "grpcio-1.65.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941c4869aa229d88706b78187d60d66aca77fe5c32518b79e3c3e03fc26109a2"}, + {file = "grpcio-1.65.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f40cebe5edb518d78b8131e87cb83b3ee688984de38a232024b9b44e74ee53d3"}, + {file = "grpcio-1.65.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2ca684ba331fb249d8a1ce88db5394e70dbcd96e58d8c4b7e0d7b141a453dce9"}, + {file = "grpcio-1.65.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8558f0083ddaf5de64a59c790bffd7568e353914c0c551eae2955f54ee4b857f"}, + {file = "grpcio-1.65.1-cp38-cp38-win32.whl", hash = "sha256:8d8143a3e3966f85dce6c5cc45387ec36552174ba5712c5dc6fcc0898fb324c0"}, + {file = "grpcio-1.65.1-cp38-cp38-win_amd64.whl", hash = "sha256:76e81a86424d6ca1ce7c16b15bdd6a964a42b40544bf796a48da241fdaf61153"}, + {file = "grpcio-1.65.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:cb5175f45c980ff418998723ea1b3869cce3766d2ab4e4916fbd3cedbc9d0ed3"}, + {file = "grpcio-1.65.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b12c1aa7b95abe73b3e04e052c8b362655b41c7798da69f1eaf8d186c7d204df"}, + {file = "grpcio-1.65.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:3019fb50128b21a5e018d89569ffaaaa361680e1346c2f261bb84a91082eb3d3"}, + {file = "grpcio-1.65.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ae15275ed98ea267f64ee9ddedf8ecd5306a5b5bb87972a48bfe24af24153e8"}, + {file = "grpcio-1.65.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f096ffb881f37e8d4f958b63c74bfc400c7cebd7a944b027357cd2fb8d91a57"}, + {file = "grpcio-1.65.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2f56b5a68fdcf17a0a1d524bf177218c3c69b3947cb239ea222c6f1867c3ab68"}, + {file = "grpcio-1.65.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:941596d419b9736ab548aa0feb5bbba922f98872668847bf0720b42d1d227b9e"}, + {file = "grpcio-1.65.1-cp39-cp39-win32.whl", hash = "sha256:5fd7337a823b890215f07d429f4f193d24b80d62a5485cf88ee06648591a0c57"}, + {file = "grpcio-1.65.1-cp39-cp39-win_amd64.whl", hash = "sha256:1bceeec568372cbebf554eae1b436b06c2ff24cfaf04afade729fb9035408c6c"}, + {file = "grpcio-1.65.1.tar.gz", hash = "sha256:3c492301988cd720cd145d84e17318d45af342e29ef93141228f9cd73222368b"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.64.1)"] +protobuf = ["grpcio-tools (>=1.65.1)"] [[package]] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1438,11 +1502,31 @@ files = [ {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, ] +[[package]] +name = "halo" +version = "0.0.31" +description = "Beautiful terminal spinners in Python" +optional = false +python-versions = ">=3.4" +files = [ + {file = "halo-0.0.31-py2-none-any.whl", hash = "sha256:5350488fb7d2aa7c31a1344120cee67a872901ce8858f60da7946cef96c208ab"}, + {file = "halo-0.0.31.tar.gz", hash = "sha256:7b67a3521ee91d53b7152d4ee3452811e1d2a6321975137762eb3d70063cc9d6"}, +] + +[package.dependencies] +colorama = ">=0.3.9" +log-symbols = ">=0.0.14" +six = ">=1.12.0" +spinners = ">=0.0.24" +termcolor = ">=1.1.0" + +[package.extras] +ipython = ["IPython (==5.7.0)", "ipywidgets (==7.1.0)"] + [[package]] name = "hexbytes" version = "0.3.1" description = "hexbytes: Python `bytes` subclass that decodes hex, with a readable console output" -category = "main" optional = false python-versions = ">=3.7, <4" files = [ @@ -1456,11 +1540,27 @@ doc = ["sphinx (>=5.0.0)", "sphinx-rtd-theme (>=1.0.0)", "towncrier (>=21,<22)"] lint = ["black (>=22)", "flake8 (==6.0.0)", "flake8-bugbear (==23.3.23)", "isort (>=5.10.1)", "mypy (==0.971)", "pydocstyle (>=5.0.0)"] test = ["eth-utils (>=1.0.1,<3)", "hypothesis (>=3.44.24,<=6.31.6)", "pytest (>=7.0.0)", "pytest-xdist (>=2.4.0)"] +[[package]] +name = "icecream" +version = "2.1.3" +description = "Never use print() to debug again; inspect variables, expressions, and program execution with a single, simple function call." +optional = false +python-versions = "*" +files = [ + {file = "icecream-2.1.3-py2.py3-none-any.whl", hash = "sha256:757aec31ad4488b949bc4f499d18e6e5973c40cc4d4fc607229e78cfaec94c34"}, + {file = "icecream-2.1.3.tar.gz", hash = "sha256:0aa4a7c3374ec36153a1d08f81e3080e83d8ac1eefd97d2f4fe9544e8f9b49de"}, +] + +[package.dependencies] +asttokens = ">=2.0.1" +colorama = ">=0.3.9" +executing = ">=0.3.1" +pygments = ">=2.2.0" + [[package]] name = "idna" version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1470,14 +1570,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "8.0.0" +version = "8.2.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, - {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, + {file = "importlib_metadata-8.2.0-py3-none-any.whl", hash = "sha256:11901fa0c2f97919b288679932bb64febaeacf289d18ac84dd68cb2e74213369"}, + {file = "importlib_metadata-8.2.0.tar.gz", hash = "sha256:72e8d4399996132204f9a16dcc751af254a48f8d1b20b9ff0f98d4a8f901e73d"}, ] [package.dependencies] @@ -1492,7 +1591,6 @@ test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "p name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1504,7 +1602,6 @@ files = [ name = "ipfshttpclient" version = "0.8.0a2" description = "Python IPFS HTTP CLIENT library" -category = "main" optional = false python-versions = ">=3.6.2,!=3.7.0,!=3.7.1" files = [ @@ -1520,7 +1617,6 @@ requests = ">=2.11" name = "itsdangerous" version = "2.2.0" description = "Safely pass data to untrusted environments and back." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1532,7 +1628,6 @@ files = [ name = "jinja2" version = "3.1.4" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1550,7 +1645,6 @@ i18n = ["Babel (>=2.7)"] name = "jsonschema" version = "4.3.3" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1566,11 +1660,24 @@ pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2" format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] +[[package]] +name = "log-symbols" +version = "0.0.14" +description = "Colored symbols for various log levels for Python" +optional = false +python-versions = "*" +files = [ + {file = "log_symbols-0.0.14-py3-none-any.whl", hash = "sha256:4952106ff8b605ab7d5081dd2c7e6ca7374584eff7086f499c06edd1ce56dcca"}, + {file = "log_symbols-0.0.14.tar.gz", hash = "sha256:cf0bbc6fe1a8e53f0d174a716bc625c4f87043cc21eb55dd8a740cfe22680556"}, +] + +[package.dependencies] +colorama = ">=0.3.9" + [[package]] name = "lru-dict" version = "1.3.0" description = "An Dict like LRU container." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1664,7 +1771,6 @@ test = ["pytest"] name = "macholib" version = "1.16.3" description = "Mach-O header analysis and editing" -category = "main" optional = false python-versions = "*" files = [ @@ -1679,7 +1785,6 @@ altgraph = ">=0.17" name = "markupsafe" version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1749,7 +1854,6 @@ files = [ name = "morphys" version = "1.0" description = "Smart conversions between unicode and bytes types for common cases" -category = "main" optional = false python-versions = "*" files = [ @@ -1760,7 +1864,6 @@ files = [ name = "multiaddr" version = "0.0.9" description = "Python implementation of jbenet's multiaddr" -category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" files = [ @@ -1778,7 +1881,6 @@ varint = "*" name = "multidict" version = "6.0.5" description = "multidict implementation" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1878,7 +1980,6 @@ files = [ name = "netaddr" version = "1.3.0" description = "A network address manipulation library for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1891,24 +1992,23 @@ nicer-shell = ["ipython"] [[package]] name = "open-aea" -version = "1.51.0" +version = "1.53.0" description = "Open Autonomous Economic Agent framework (without vendor lock-in)" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "open-aea-1.51.0.tar.gz", hash = "sha256:a1b6b6be9c08cfc8eb0befd436f0b821d4b0cd9cabec4154e36695fd8bc555ec"}, - {file = "open_aea-1.51.0-py3-none-any.whl", hash = "sha256:94a93fef676352fba8a7fa2a0a68b140e9ca9f8999f78bf24c66bb4557b8e6f7"}, - {file = "open_aea-1.51.0-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:8887b1604163f5be1706fce5b9cbc5592b22d9ae621c200f77550ee76d487dc8"}, - {file = "open_aea-1.51.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:c16001b336b61863eb8bb557161718e0110853064a6f1afb990fd02fa672e307"}, - {file = "open_aea-1.51.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0c4abbf61de198f708a20b3cedd617b922727090781720687eb663288b015953"}, - {file = "open_aea-1.51.0-py3-none-win32.whl", hash = "sha256:75158aeaa4e395c92116581a0534d652979e3a0ce4986665207cde8050521467"}, - {file = "open_aea-1.51.0-py3-none-win_amd64.whl", hash = "sha256:b2eee2d1ee065d1cc48d73aa7db82256c80b792cf14ab4765c4a087af3087464"}, + {file = "open_aea-1.53.0-py3-none-any.whl", hash = "sha256:1244855875effe09e2c965750ac401a973a1ae56cdc880045eea70f19ed90dcb"}, + {file = "open_aea-1.53.0-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:d0a848e33798599953dc764d37083fc37642140a91624e06a56b8d2f95ae6cb9"}, + {file = "open_aea-1.53.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:48f5715f13a0389799b9461bc776e9638e6ae38173d0f2bf6d28bad637232914"}, + {file = "open_aea-1.53.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:87e4ae903ec9a7268eba0ead449f9693cb5bedb6dfc5846c90f94f2354bd35ab"}, + {file = "open_aea-1.53.0-py3-none-win32.whl", hash = "sha256:182e9f8a77fe8efcc768360ac7308a0951ec16bcb12e2ad4f55886b12258d702"}, + {file = "open_aea-1.53.0-py3-none-win_amd64.whl", hash = "sha256:cef9d4d177ea7d959ebacab962fbd1d03d7243c0b72d10a3ee7850df8d922e06"}, + {file = "open_aea-1.53.0.tar.gz", hash = "sha256:6fcb82ceed0b6841c0f41d116b207308556e3d18807fe140e9ef1a898c7a8a0b"}, ] [package.dependencies] base58 = ">=1.0.3,<3.0.0" -click = {version = "8.0.2", optional = true, markers = "extra == \"all\""} +click = {version = ">=8.1.0,<9", optional = true, markers = "extra == \"all\""} coverage = {version = ">=6.4.4,<8.0.0", optional = true, markers = "extra == \"all\""} ecdsa = ">=0.15,<0.17.0" jsonschema = ">=4.3.0,<4.4.0" @@ -1919,26 +2019,25 @@ py-multibase = ">=1.0.0" py-multicodec = ">=0.2.0" pymultihash = "0.8.2" pytest = {version = ">=7.0.0,<7.3.0", optional = true, markers = "extra == \"all\""} -python-dotenv = ">=0.14.0,<0.22.0" -pyyaml = "6.0.1" -requests = "2.28.1" +python-dotenv = ">=0.14.0,<1.0.1" +pyyaml = {version = ">=6.0.1,<7", optional = true, markers = "extra == \"all\""} +requests = ">=2.28.1,<3" semver = ">=2.9.1,<3.0.0" [package.extras] -all = ["click (==8.0.2)", "coverage (>=6.4.4,<8.0.0)", "jsonschema (>=4.3.0,<4.4.0)", "packaging (>=23.1,<24.0)", "pytest (>=7.0.0,<7.3.0)", "pyyaml (==6.0.1)", "semver (>=2.9.1,<3.0.0)"] -cli = ["click (==8.0.2)", "coverage (>=6.4.4,<8.0.0)", "jsonschema (>=4.3.0,<4.4.0)", "packaging (>=23.1,<24.0)", "pytest (>=7.0.0,<7.3.0)", "pyyaml (==6.0.1)", "semver (>=2.9.1,<3.0.0)"] -test-tools = ["click (==8.0.2)", "coverage (>=6.4.4,<8.0.0)", "jsonschema (>=4.3.0,<4.4.0)", "packaging (>=23.1,<24.0)", "pytest (>=7.0.0,<7.3.0)", "pyyaml (==6.0.1)", "semver (>=2.9.1,<3.0.0)"] +all = ["click (>=8.1.0,<9)", "coverage (>=6.4.4,<8.0.0)", "jsonschema (>=4.3.0,<4.4.0)", "packaging (>=23.1,<24.0)", "pytest (>=7.0.0,<7.3.0)", "pyyaml (>=6.0.1,<9)", "semver (>=2.9.1,<3.0.0)"] +cli = ["click (>=8.1.0,<9)", "coverage (>=6.4.4,<8.0.0)", "jsonschema (>=4.3.0,<4.4.0)", "packaging (>=23.1,<24.0)", "pytest (>=7.0.0,<7.3.0)", "pyyaml (>=6.0.1,<9)", "semver (>=2.9.1,<3.0.0)"] +test-tools = ["click (>=8.1.0,<9)", "coverage (>=6.4.4,<8.0.0)", "jsonschema (>=4.3.0,<4.4.0)", "packaging (>=23.1,<24.0)", "pytest (>=7.0.0,<7.3.0)", "pyyaml (>=6.0.1,<9)", "semver (>=2.9.1,<3.0.0)"] [[package]] name = "open-aea-cli-ipfs" -version = "1.51.0" +version = "1.53.0" description = "CLI extension for open AEA framework wrapping IPFS functionality." -category = "main" optional = false python-versions = "*" files = [ - {file = "open-aea-cli-ipfs-1.51.0.tar.gz", hash = "sha256:142174bb7516b8562a0114838c95d1466d4d4857a8d0aaaf076dd571b346f6c5"}, - {file = "open_aea_cli_ipfs-1.51.0-py3-none-any.whl", hash = "sha256:8c8e422bb63108fef65f5360374598275c737cb15df571f13af11f07961380e3"}, + {file = "open_aea_cli_ipfs-1.53.0-py3-none-any.whl", hash = "sha256:335a02473d1c6820bb63a31e2931749ba644f586a7acbc650da9efc4c7168efa"}, + {file = "open_aea_cli_ipfs-1.53.0.tar.gz", hash = "sha256:499a66a45925064e6946ec72f482182390263cc7726409832f1317fe831b6289"}, ] [package.dependencies] @@ -1950,7 +2049,6 @@ pytest = ">=7.0.0,<7.3.0" name = "open-aea-flashbots" version = "1.4.0" description = "" -category = "main" optional = false python-versions = ">=3.9,<4.0" files = [ @@ -1964,18 +2062,17 @@ web3 = ">=6.0.0,<7" [[package]] name = "open-aea-ledger-cosmos" -version = "1.51.0" +version = "1.53.0" description = "Python package wrapping the public and private key cryptography and ledger api of Cosmos." -category = "main" optional = false python-versions = "*" files = [ - {file = "open-aea-ledger-cosmos-1.51.0.tar.gz", hash = "sha256:d2b15cd4b5e6ba3bda2d7206689000356c0197508eea8031dced67a0965c2648"}, - {file = "open_aea_ledger_cosmos-1.51.0-py3-none-any.whl", hash = "sha256:a9f46895a502397d2b95c2cec13f0f12777e7f4811f27b5314e5363d44471ca5"}, + {file = "open_aea_ledger_cosmos-1.53.0-py3-none-any.whl", hash = "sha256:79b2eafc8723593634b72973da39e3e3c01bceae04b330b51a5059eb1200262b"}, + {file = "open_aea_ledger_cosmos-1.53.0.tar.gz", hash = "sha256:14a032918d7f0659fedbe21a53fa668b24505bb9e97358340b20325943f9fa26"}, ] [package.dependencies] -bech32 = "1.2.0" +bech32 = ">=1.2.0,<2" cosmpy = "0.9.2" ecdsa = ">=0.15,<0.17.0" open-aea = ">=1.0.0,<2.0.0" @@ -1983,14 +2080,13 @@ pycryptodome = ">=3.10.1,<4.0.0" [[package]] name = "open-aea-ledger-ethereum" -version = "1.51.0" +version = "1.53.0" description = "Python package wrapping the public and private key cryptography and ledger api of Ethereum." -category = "main" optional = false python-versions = "*" files = [ - {file = "open-aea-ledger-ethereum-1.51.0.tar.gz", hash = "sha256:3e47bcac5f0e062d8cf1837b120d259942a6194effe54c0febc876d528b8269b"}, - {file = "open_aea_ledger_ethereum-1.51.0-py3-none-any.whl", hash = "sha256:6c6d17c4170125af1bfcf0de80700c89d4cbec75fc4a39c43080476637847d33"}, + {file = "open_aea_ledger_ethereum-1.53.0-py3-none-any.whl", hash = "sha256:501eb9e9e228552bf9f6f8811d780f33dbbf477ddb33b63d335caaeb24840274"}, + {file = "open_aea_ledger_ethereum-1.53.0.tar.gz", hash = "sha256:734f335061c33a171b945ab1bcea5d47be9b9532457ed361b3aab727e85bca0d"}, ] [package.dependencies] @@ -2001,46 +2097,45 @@ web3 = ">=6.0.0,<7" [[package]] name = "open-aea-ledger-ethereum-flashbots" -version = "1.51.0" +version = "1.53.0" description = "Python package extending the default open-aea ethereum ledger plugin to add support for flashbots." -category = "main" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "open-aea-ledger-ethereum-flashbots-1.51.0.tar.gz", hash = "sha256:5e474c0d3cf7cbd8a8b55e3168877cd844daaacba1a2e8cf4eed6dddbad45504"}, - {file = "open_aea_ledger_ethereum_flashbots-1.51.0-py3-none-any.whl", hash = "sha256:6c30fa54f1f77f59adea01632f61c7cd162f8e2ab74ecba0201e21c206626da9"}, + {file = "open_aea_ledger_ethereum_flashbots-1.53.0-py3-none-any.whl", hash = "sha256:04e1d04b68159f092dbe8c94d419221ad45bac17497c8feed9cbe92270a675b3"}, + {file = "open_aea_ledger_ethereum_flashbots-1.53.0.tar.gz", hash = "sha256:683e0c73c04413a0098f4903e3afa8c1570f8c51591ad6cef66fd38cfad463d8"}, ] [package.dependencies] open-aea-flashbots = "1.4.0" -open-aea-ledger-ethereum = ">=1.51.0,<1.52.0" +open-aea-ledger-ethereum = ">=1.53.0,<1.54.0" [[package]] name = "open-autonomy" -version = "0.14.11.post1" +version = "0.14.14.post2" description = "A framework for the creation of autonomous agent services." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "open-autonomy-0.14.11.post1.tar.gz", hash = "sha256:b44467cccffa3c72db21baca127d747fb62a60a22161613c4248e7cec78a0bb6"}, - {file = "open_autonomy-0.14.11.post1-py3-none-any.whl", hash = "sha256:1f2d8d22909c90f679fb6c24318abe8887f94668aa9decf018837853c828bc4a"}, + {file = "open_autonomy-0.14.14.post2-py3-none-any.whl", hash = "sha256:76efc0ce814c748eb02176477eef5b5ca4c6a84d77230e01a40c3df5ad2254b8"}, + {file = "open_autonomy-0.14.14.post2.tar.gz", hash = "sha256:0e1e7f3207fde38b8778a260c43153737a3b9fefe6d7abf373710a1aae9e267b"}, ] [package.dependencies] aiohttp = ">=3.8.5,<4.0.0" -click = "8.0.2" +click = ">=8.1.0,<9" coverage = ">=6.4.4,<8.0.0" docker = "6.1.2" Flask = ">=2.0.2,<3.0.0" gql = "3.5.0" hexbytes = "*" jsonschema = ">=4.3.0,<4.4.0" -open-aea = {version = "1.51.0", extras = ["all"]} -open-aea-cli-ipfs = "1.51.0" +open-aea = {version = "1.53.0", extras = ["all"]} +open-aea-cli-ipfs = "1.53.0" protobuf = ">=4.21.6,<4.25.0" pytest = "7.2.1" python-dotenv = ">=0.14.5,<0.22.0" +requests = ">=2.28.1,<2.31.2" requests-toolbelt = "1.0.0" texttable = "1.6.7" typing-extensions = ">=3.10.0.2" @@ -2049,14 +2144,13 @@ watchdog = ">=2.1.6" werkzeug = "2.0.3" [package.extras] -all = ["click (==8.0.2)", "coverage (>=6.4.4,<8.0.0)", "open-aea-cli-ipfs (==1.51.0)", "pytest (>=7.0.0,<7.3.0)", "python-dotenv (>=0.14.5,<0.22.0)", "texttable (==1.6.7)"] -cli = ["click (==8.0.2)", "coverage (>=6.4.4,<8.0.0)", "open-aea-cli-ipfs (==1.51.0)", "pytest (>=7.0.0,<7.3.0)", "python-dotenv (>=0.14.5,<0.22.0)", "texttable (==1.6.7)"] +all = ["click (>=8.1.0,<9)", "coverage (>=6.4.4,<8.0.0)", "open-aea-cli-ipfs (==1.53.0)", "pytest (>=7.0.0,<7.3.0)", "python-dotenv (>=0.14.5,<0.22.0)", "texttable (==1.6.7)"] +cli = ["click (>=8.1.0,<9)", "coverage (>=6.4.4,<8.0.0)", "open-aea-cli-ipfs (==1.53.0)", "pytest (>=7.0.0,<7.3.0)", "python-dotenv (>=0.14.5,<0.22.0)", "texttable (==1.6.7)"] [[package]] name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2068,7 +2162,6 @@ files = [ name = "paramiko" version = "3.4.0" description = "SSH2 protocol library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2090,7 +2183,6 @@ invoke = ["invoke (>=2.0)"] name = "parsimonious" version = "0.10.0" description = "(Soon to be) the fastest pure-Python PEG parser I could muster" -category = "main" optional = false python-versions = "*" files = [ @@ -2105,7 +2197,6 @@ regex = ">=2022.3.15" name = "pefile" version = "2023.2.7" description = "Python PE parsing module" -category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -2117,7 +2208,6 @@ files = [ name = "platformdirs" version = "4.2.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2134,7 +2224,6 @@ type = ["mypy (>=1.8)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2150,7 +2239,6 @@ testing = ["pytest", "pytest-benchmark"] name = "protobuf" version = "4.24.4" description = "" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2173,7 +2261,6 @@ files = [ name = "psutil" version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -2202,7 +2289,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2214,7 +2300,6 @@ files = [ name = "py-multibase" version = "1.0.3" description = "Multibase implementation for Python" -category = "main" optional = false python-versions = "*" files = [ @@ -2231,7 +2316,6 @@ six = ">=1.10.0,<2.0" name = "py-multicodec" version = "0.2.1" description = "Multicodec implementation in Python" -category = "main" optional = false python-versions = "*" files = [ @@ -2248,7 +2332,6 @@ varint = ">=1.0.2,<2.0.0" name = "pycparser" version = "2.22" description = "C parser in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2260,7 +2343,6 @@ files = [ name = "pycryptodome" version = "3.20.0" description = "Cryptographic library for Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2302,7 +2384,6 @@ files = [ name = "pydantic" version = "2.8.2" description = "Data validation using Python type hints" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2322,7 +2403,6 @@ email = ["email-validator (>=2.0.0)"] name = "pydantic-core" version = "2.20.1" description = "Core functionality for Pydantic validation and serialization" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2420,26 +2500,39 @@ files = [ [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +[[package]] +name = "pygments" +version = "2.18.0" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + [[package]] name = "pyinstaller" -version = "6.8.0" +version = "6.9.0" description = "PyInstaller bundles a Python application and all its dependencies into a single package." -category = "main" optional = false python-versions = "<3.13,>=3.8" files = [ - {file = "pyinstaller-6.8.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:5ff6bc2784c1026f8e2f04aa3760cbed41408e108a9d4cf1dd52ee8351a3f6e1"}, - {file = "pyinstaller-6.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:39ac424d2ee2457d2ab11a5091436e75a0cccae207d460d180aa1fcbbafdd528"}, - {file = "pyinstaller-6.8.0-py3-none-manylinux2014_i686.whl", hash = "sha256:355832a3acc7de90a255ecacd4b9f9e166a547a79c8905d49f14e3a75c1acdb9"}, - {file = "pyinstaller-6.8.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:6303c7a009f47e6a96ef65aed49f41e36ece8d079b9193ca92fe807403e5fe80"}, - {file = "pyinstaller-6.8.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2b71509468c811968c0b5decb5bbe85b6292ea52d7b1f26313d2aabb673fa9a5"}, - {file = "pyinstaller-6.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ff31c5b99e05a4384bbe2071df67ec8b2b347640a375eae9b40218be2f1754c6"}, - {file = "pyinstaller-6.8.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:000c36b13fe4cd8d0d8c2bc855b1ddcf39867b5adf389e6b5ca45b25fa3e619d"}, - {file = "pyinstaller-6.8.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:fe0af018d7d5077180e3144ada89a4da5df8d07716eb7e9482834a56dc57a4e8"}, - {file = "pyinstaller-6.8.0-py3-none-win32.whl", hash = "sha256:d257f6645c7334cbd66f38a4fac62c3ad614cc46302b2b5d9f8cc48c563bce0e"}, - {file = "pyinstaller-6.8.0-py3-none-win_amd64.whl", hash = "sha256:81cccfa9b16699b457f4788c5cc119b50f3cd4d0db924955f15c33f2ad27a50d"}, - {file = "pyinstaller-6.8.0-py3-none-win_arm64.whl", hash = "sha256:1c3060a263758cf7f0144ab4c016097b20451b2469d468763414665db1bb743d"}, - {file = "pyinstaller-6.8.0.tar.gz", hash = "sha256:3f4b6520f4423fe19bcc2fd63ab7238851ae2bdcbc98f25bc5d2f97cc62012e9"}, + {file = "pyinstaller-6.9.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:5ced2e83acf222b936ea94abc5a5cc96588705654b39138af8fb321d9cf2b954"}, + {file = "pyinstaller-6.9.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:f18a3d551834ef8fb7830d48d4cc1527004d0e6b51ded7181e78374ad6111846"}, + {file = "pyinstaller-6.9.0-py3-none-manylinux2014_i686.whl", hash = "sha256:f2fc568de3d6d2a176716a3fc9f20da06d351e8bea5ddd10ecb5659fce3a05b0"}, + {file = "pyinstaller-6.9.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:a0f378f64ad0655d11ade9fde7877e7573fd3d5066231608ce7dfa9040faecdd"}, + {file = "pyinstaller-6.9.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:7bf0c13c5a8560c89540746ae742f4f4b82290e95a6b478374d9f34959fe25d6"}, + {file = "pyinstaller-6.9.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:da994aba14c5686db88796684de265a8665733b4df09b939f7ebdf097d18df72"}, + {file = "pyinstaller-6.9.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:4e3e50743c091a06e6d01c59bdd6d03967b453ee5384a9e790759be4129db4a4"}, + {file = "pyinstaller-6.9.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:b041be2fe78da47a269604d62c940d68c62f9a3913bdf64af4123f7689d47099"}, + {file = "pyinstaller-6.9.0-py3-none-win32.whl", hash = "sha256:2bf4de17a1c63c0b797b38e13bfb4d03b5ee7c0a68e28b915a7eaacf6b76087f"}, + {file = "pyinstaller-6.9.0-py3-none-win_amd64.whl", hash = "sha256:43709c70b1da8441a730327a8ed362bfcfdc3d42c1bf89f3e2b0a163cc4e7d33"}, + {file = "pyinstaller-6.9.0-py3-none-win_arm64.whl", hash = "sha256:f15c1ef11ed5ceb32447dfbdab687017d6adbef7fc32aa359d584369bfe56eda"}, + {file = "pyinstaller-6.9.0.tar.gz", hash = "sha256:f4a75c552facc2e2a370f1e422b971b5e5cdb4058ff38cea0235aa21fc0b378f"}, ] [package.dependencies] @@ -2448,7 +2541,7 @@ importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} packaging = ">=22.0" pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} -pyinstaller-hooks-contrib = ">=2024.6" +pyinstaller-hooks-contrib = ">=2024.7" pywin32-ctypes = {version = ">=0.2.1", markers = "sys_platform == \"win32\""} setuptools = ">=42.0.0" @@ -2460,7 +2553,6 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] name = "pyinstaller-hooks-contrib" version = "2024.7" description = "Community maintained hooks for PyInstaller" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2477,7 +2569,6 @@ setuptools = ">=42.0.0" name = "pymultihash" version = "0.8.2" description = "Python implementation of the multihash specification" -category = "main" optional = false python-versions = "*" files = [ @@ -2493,7 +2584,6 @@ sha3 = ["pysha3"] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2520,7 +2610,6 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] name = "pyrsistent" version = "0.20.0" description = "Persistent/Functional/Immutable data structures" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2562,7 +2651,6 @@ files = [ name = "pytest" version = "7.2.1" description = "pytest: simple powerful testing with Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2586,7 +2674,6 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2. name = "python-baseconv" version = "1.2.2" description = "Convert numbers from base 10 integers to base X strings and back again." -category = "main" optional = false python-versions = "*" files = [ @@ -2597,7 +2684,6 @@ files = [ name = "python-dateutil" version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2612,7 +2698,6 @@ six = ">=1.5" name = "python-dotenv" version = "0.21.1" description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2627,7 +2712,6 @@ cli = ["click (>=5.0)"] name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ @@ -2651,7 +2735,6 @@ files = [ name = "pywin32-ctypes" version = "0.2.2" description = "A (partial) reimplementation of pywin32 using ctypes/cffi" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2663,7 +2746,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2722,110 +2804,108 @@ files = [ [[package]] name = "regex" -version = "2024.5.15" +version = "2024.7.24" description = "Alternative regular expression module, to replace re." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, - {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, - {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, - {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, - {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, - {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, - {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, - {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, - {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, - {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, - {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, - {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, - {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, - {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, - {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"}, - {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"}, - {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"}, - {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"}, - {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"}, - {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"}, - {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"}, - {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"}, - {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"}, - {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"}, - {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"}, - {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"}, - {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"}, - {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"}, - {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, - {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, - {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, - {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, - {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, - {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, - {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, - {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, + {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"}, + {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"}, + {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"}, + {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"}, + {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"}, + {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"}, + {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"}, + {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"}, + {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"}, + {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"}, + {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"}, + {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"}, + {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"}, + {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"}, + {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"}, + {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"}, + {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"}, + {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"}, + {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"}, + {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"}, + {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"}, + {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"}, + {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"}, + {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"}, + {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"}, + {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"}, + {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"}, + {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"}, + {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"}, + {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"}, + {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"}, + {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, + {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, + {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"}, + {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"}, + {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"}, + {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"}, + {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"}, + {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"}, + {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"}, + {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"}, + {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"}, + {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"}, + {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"}, + {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"}, + {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"}, + {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"}, + {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"}, + {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"}, + {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"}, + {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"}, + {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"}, + {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"}, + {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"}, + {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"}, + {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"}, + {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"}, + {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"}, + {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"}, + {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"}, + {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"}, + {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"}, + {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"}, + {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"}, + {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"}, + {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"}, + {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"}, + {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"}, + {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"}, + {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"}, + {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"}, + {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"}, + {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"}, + {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"}, + {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"}, + {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"}, + {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"}, + {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"}, + {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"}, ] [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -2835,7 +2915,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2850,7 +2929,6 @@ requests = ">=2.0.1,<3.0.0" name = "rlp" version = "3.0.0" description = "A package for Recursive Length Prefix encoding and decoding" -category = "main" optional = false python-versions = "*" files = [ @@ -2872,7 +2950,6 @@ test = ["hypothesis (==5.19.0)", "pytest (>=6.2.5,<7)", "tox (>=2.9.1,<3)"] name = "semver" version = "2.13.0" description = "Python helper for Semantic Versioning (http://semver.org/)" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2882,25 +2959,24 @@ files = [ [[package]] name = "setuptools" -version = "70.2.0" +version = "71.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.2.0-py3-none-any.whl", hash = "sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05"}, - {file = "setuptools-70.2.0.tar.gz", hash = "sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1"}, + {file = "setuptools-71.1.0-py3-none-any.whl", hash = "sha256:33874fdc59b3188304b2e7c80d9029097ea31627180896fb549c578ceb8a0855"}, + {file = "setuptools-71.1.0.tar.gz", hash = "sha256:032d42ee9fb536e33087fb66cac5f840eb9391ed05637b3f2a76a7c8fb477936"}, ] [package.extras] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2912,7 +2988,6 @@ files = [ name = "sniffio" version = "1.3.1" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2920,11 +2995,21 @@ files = [ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] +[[package]] +name = "spinners" +version = "0.0.24" +description = "Spinners for terminals" +optional = false +python-versions = "*" +files = [ + {file = "spinners-0.0.24-py3-none-any.whl", hash = "sha256:2fa30d0b72c9650ad12bbe031c9943b8d441e41b4f5602b0ec977a19f3290e98"}, + {file = "spinners-0.0.24.tar.gz", hash = "sha256:1eb6aeb4781d72ab42ed8a01dcf20f3002bf50740d7154d12fb8c9769bf9e27f"}, +] + [[package]] name = "starlette" version = "0.36.3" description = "The little ASGI library that shines." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2939,11 +3024,24 @@ typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\"" [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] +[[package]] +name = "termcolor" +version = "2.4.0" +description = "ANSI color formatting for output in terminal" +optional = false +python-versions = ">=3.8" +files = [ + {file = "termcolor-2.4.0-py3-none-any.whl", hash = "sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63"}, + {file = "termcolor-2.4.0.tar.gz", hash = "sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + [[package]] name = "texttable" version = "1.6.7" description = "module to create simple ASCII tables" -category = "main" optional = false python-versions = "*" files = [ @@ -2955,7 +3053,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2965,34 +3062,33 @@ files = [ [[package]] name = "tomte" -version = "0.2.15" +version = "0.2.17" description = "A library that wraps many useful tools (linters, analysers, etc) to keep Python code clean, secure, well-documented and optimised." -category = "dev" optional = false -python-versions = ">=3.8,<4" +python-versions = "<4,>=3.8" files = [ - {file = "tomte-0.2.15-py3-none-any.whl", hash = "sha256:c1ec71bdb919290e42671d83098232bf7cf46cddf1a736c5d1c9f12ab1308c34"}, - {file = "tomte-0.2.15.tar.gz", hash = "sha256:662f3cdd616347969c3fea557c47545b555f5f82798b978e78ade3d23d43c92d"}, + {file = "tomte-0.2.17-py3-none-any.whl", hash = "sha256:477e1e903610b5e2a8cf74a78cf229eacc21aa666e25e7bb872385ef2c013cfe"}, + {file = "tomte-0.2.17.tar.gz", hash = "sha256:ad583dd39f2c398272f7f196471b2ecc8430eb89e07295ec1e682f64dd782831"}, ] [package.dependencies] -click = {version = "8.0.2", optional = true, markers = "extra == \"black\" or extra == \"cli\" or extra == \"docs\""} -requests = {version = "2.28.1", optional = true, markers = "extra == \"cli\""} +click = {version = ">=8.1.0,<9", optional = true, markers = "extra == \"black\" or extra == \"cli\" or extra == \"docs\""} +requests = {version = ">=2.28.1,<3", optional = true, markers = "extra == \"cli\""} tox = {version = "3.28.0", optional = true, markers = "extra == \"cli\" or extra == \"tox\""} [package.extras] bandit = ["bandit (==1.7.4)"] -black = ["black (==23.1.0)", "click (==8.0.2)"] -cli = ["click (==8.0.2)", "requests (==2.28.1)", "tox (==3.28.0)"] +black = ["black (==23.1.0)", "click (>=8.1.0,<9)"] +cli = ["click (>=8.1.0,<9)", "requests (>=2.28.1,<3)", "tox (==3.28.0)"] darglint = ["darglint (==1.8.1)"] -docs = ["Markdown (==3.3.7)", "Pygments (>=2.16,<3.0)", "bs4 (==0.0.1)", "click (==8.0.2)", "markdown-include (==0.8.0)", "mkdocs (>=1.5.3,<2.0)", "mkdocs-macros-plugin (==0.7.0)", "mkdocs-material (==9.4.10)", "mkdocs-material-extensions (==1.3)", "mkdocs-redirects (==1.2.0)", "pydoc-markdown (==4.8.2)", "pydocstyle (==6.2.3)", "pymdown-extensions (>=10.2,<11.0)"] +docs = ["Markdown (==3.3.7)", "Pygments (>=2.16,<3.0)", "bs4 (==0.0.1)", "click (>=8.1.0,<9)", "markdown-include (==0.8.0)", "mkdocs (>=1.5.3,<2.0)", "mkdocs-macros-plugin (==0.7.0)", "mkdocs-material (==9.4.10)", "mkdocs-material-extensions (==1.3)", "mkdocs-redirects (==1.2.0)", "pydoc-markdown (==4.8.2)", "pydocstyle (==6.2.3)", "pymdown-extensions (>=10.2,<11.0)"] flake8 = ["flake8 (==3.9.2)", "flake8-bugbear (==23.1.14)", "flake8-docstrings (==1.6.0)", "flake8-eradicate (==1.4.0)", "flake8-isort (==6.0.0)", "pydocstyle (==6.2.3)"] isort = ["isort (==5.11.4)"] liccheck = ["liccheck (==0.8.3)"] mypy = ["mypy (==0.991)"] pylint = ["pylint (==2.13.9)"] safety = ["safety (==2.4.0b1)"] -tests = ["pytest (==7.2.1)", "pytest-asyncio (==0.20.3)", "pytest-cov (==4.0.0)", "pytest-randomly (==3.12.0)", "pytest-rerunfailures (==11.0)"] +tests = ["pytest (==7.2.1)", "pytest-asyncio (>=0.21.0,<0.22.0)", "pytest-cov (==4.0.0)", "pytest-randomly (==3.12.0)", "pytest-rerunfailures (==11.0)"] tox = ["tox (==3.28.0)"] vulture = ["vulture (==2.7)"] @@ -3000,7 +3096,6 @@ vulture = ["vulture (==2.7)"] name = "toolz" version = "0.12.1" description = "List processing tools and functional utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3012,7 +3107,6 @@ files = [ name = "tox" version = "3.28.0" description = "tox is a generic virtualenv management and test command line tool" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -3038,7 +3132,6 @@ testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pathlib2 (>=2.3.3)", "psu name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3048,26 +3141,25 @@ files = [ [[package]] name = "urllib3" -version = "1.26.19" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, - {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" version = "0.27.0" description = "The lightning-fast ASGI server." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3087,7 +3179,6 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", name = "valory-docker-compose" version = "1.29.3" description = "Multi-container orchestration for Docker" -category = "main" optional = false python-versions = ">=3.4" files = [ @@ -3116,7 +3207,6 @@ tests = ["ddt (>=1.2.2,<2)", "pytest (<6)"] name = "varint" version = "1.0.2" description = "Simple python varint implementation" -category = "main" optional = false python-versions = "*" files = [ @@ -3127,7 +3217,6 @@ files = [ name = "virtualenv" version = "20.26.3" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3148,7 +3237,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "watchdog" version = "4.0.1" description = "Filesystem events monitoring" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3193,7 +3281,6 @@ watchmedo = ["PyYAML (>=3.10)"] name = "web3" version = "6.1.0" description = "web3.py" -category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -3227,7 +3314,6 @@ tester = ["eth-tester[py-evm] (==v0.8.0-b.3)", "py-geth (>=3.11.0)"] name = "websocket-client" version = "0.59.0" description = "WebSocket client for Python with low level API options" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3242,7 +3328,6 @@ six = "*" name = "websockets" version = "12.0" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3324,7 +3409,6 @@ files = [ name = "werkzeug" version = "2.0.3" description = "The comprehensive WSGI web application library." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3339,7 +3423,6 @@ watchdog = ["watchdog"] name = "yarl" version = "1.9.4" description = "Yet another URL library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3443,7 +3526,6 @@ multidict = ">=4.0" name = "zipp" version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3458,4 +3540,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = "<3.12,>=3.9" -content-hash = "456a1a45f86bdda8fcc8c9e922c0eec5d129707d2354ac29985bec3fc7b94842" +content-hash = "efabbc96c08f1cfc84fee39a52507329221bd3c6d6e436b887a369392294b155" diff --git a/pyproject.toml b/pyproject.toml index 985a8b4c8..36b98787f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "olas-operate-middleware" -version = "0.1.0-rc110" +version = "0.1.0-rc115" description = "" authors = ["David Vilela ", "Viraj Patel "] readme = "README.md" @@ -19,11 +19,11 @@ operate = "operate.cli:main" [tool.poetry.dependencies] python = "<3.12,>=3.9" -open-autonomy = "==0.14.11.post1" -open-aea-ledger-cosmos = "==1.51.0" -open-aea-ledger-ethereum = "==1.51.0" -open-aea-ledger-ethereum-flashbots = "==1.51.0" -open-aea-cli-ipfs = "==1.51.0" +open-autonomy = "==0.14.14.post2" +open-aea-ledger-cosmos = "==1.53.0" +open-aea-ledger-ethereum = "==1.53.0" +open-aea-ledger-ethereum-flashbots = "==1.53.0" +open-aea-cli-ipfs = "==1.53.0" clea = "==0.1.0rc4" cytoolz = "==0.12.3" docker = "6.1.2" @@ -48,9 +48,11 @@ web3 = "==6.1.0" psutil = "^5.9.8" pyinstaller = "^6.8.0" aiohttp = "3.9.5" +halo = "^0.0.31" +icecream = "^2.1.3" [tool.poetry.group.development.dependencies] -tomte = {version = "0.2.15", extras = ["cli"]} +tomte = {version = "0.2.17", extras = ["cli"]} [build-system] requires = ["poetry-core"] diff --git a/run_service.py b/run_service.py new file mode 100644 index 000000000..2ad49dd17 --- /dev/null +++ b/run_service.py @@ -0,0 +1,367 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------------------------ +# +# Copyright 2024 Valory AG +# +# 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. +# +# ------------------------------------------------------------------------------ +"""Optimus Quickstart script.""" + +import getpass +import sys +import time +import typing as t +from dataclasses import dataclass +from pathlib import Path + +import requests +from dotenv import load_dotenv +from halo import Halo +from termcolor import colored + +from operate.account.user import UserAccount +from operate.cli import OperateApp +from operate.resource import LocalResource +from operate.types import ( + LedgerType, + ServiceTemplate, + ConfigurationTemplate, + FundRequirementsTemplate, +) + +load_dotenv() + +XDAI_BALANCE_REQUIRED_TO_BOND = 10_000_000_000_000_000 +SUGGESTED_TOP_UP_DEFAULT = 50_000_000_000_000_000 +SUGGESTED_SAFE_TOP_UP_DEFAULT = 500_000_000_000_000_000 +MASTER_WALLET_MIMIMUM_BALANCE = 1_000_000_000_000_000_000 +COST_OF_BOND = 20_000_000_000_000_000 +WARNING_ICON = colored('\u26A0', 'yellow') +OPERATE_HOME = Path.cwd() / ".optimus" + + +@dataclass +class OptimusConfig(LocalResource): + """Local configuration.""" + + tenderly_api_key: t.Optional[str] = None + optimism_rpc: t.Optional[str] = None + ethereum_rpc: t.Optional[str] = None + base_rpc: t.Optional[str] = None + + +def print_box(text: str, margin: int = 1, character: str = '=') -> None: + """Print text centered within a box.""" + + lines = text.split('\n') + text_length = max(len(line) for line in lines) + length = text_length + 2 * margin + + border = character * length + margin_str = ' ' * margin + + print(border) + print(f"{margin_str}{text}{margin_str}") + print(border) + print() + + +def print_title(text: str) -> None: + """Print title.""" + print() + print_box(text, 4, '=') + + +def print_section(text: str) -> None: + """Print section.""" + print_box(text, 1, '-') + + +def wei_to_unit(wei: int) -> float: + """Convert Wei to unit.""" + return wei / 1e18 + + +def wei_to_token(wei: int, token: str = "xDAI") -> str: + """Convert Wei to token.""" + return f"{wei_to_unit(wei):.2f} {token}" + + +def ask_confirm_password() -> str: + password = getpass.getpass("Please enter a password: ") + confirm_password = getpass.getpass("Please confirm your password: ") + + if password == confirm_password: + return password + else: + print("Passwords do not match. Terminating.") + sys.exit(1) + + +def check_rpc(rpc_url: str) -> None: + spinner = Halo(text=f"Checking RPC...", spinner="dots") + spinner.start() + + rpc_data = { + "jsonrpc": "2.0", + "method": "eth_newFilter", + "params": ["invalid"], + "id": 1 + } + + try: + response = requests.post( + rpc_url, + json=rpc_data, + headers={"Content-Type": "application/json"} + ) + response.raise_for_status() + rpc_response = response.json() + except Exception as e: + print("Error: Failed to send RPC request:", e) + sys.exit(1) + + rcp_error_message = rpc_response.get("error", {}).get("message", "Exception processing RCP response") + + if rcp_error_message == "Exception processing RCP response": + print("Error: The received RCP response is malformed. Please verify the RPC address and/or RCP behavior.") + print(" Received response:") + print(" ", rpc_response) + print("") + print("Terminating script.") + sys.exit(1) + elif rcp_error_message == "Out of requests": + print("Error: The provided RCP is out of requests.") + print("Terminating script.") + sys.exit(1) + elif rcp_error_message == "The method eth_newFilter does not exist/is not available": + print("Error: The provided RPC does not support 'eth_newFilter'.") + print("Terminating script.") + sys.exit(1) + elif rcp_error_message == "invalid params": + spinner.succeed("RPC checks passed.") + else: + print("Error: Unknown RCP error.") + print(" Received response:") + print(" ", rpc_response) + print("") + print("Terminating script.") + sys.exit(1) + + +def get_local_config() -> OptimusConfig: + """Get local optimus configuration.""" + path = OPERATE_HOME / "local_config.json" + if path.exists(): + optimus_config = OptimusConfig.load(path) + else: + optimus_config = OptimusConfig() + + print_section("API Key Configuration") + + if optimus_config.ethereum_rpc is None: + optimus_config.ethereum_rpc = input("Please enter an Ethereum RPC URL: ") + + if optimus_config.optimism_rpc is None: + optimus_config.optimism_rpc = input("Please enter an Optimism RPC URL: ") + + if optimus_config.base_rpc is None: + optimus_config.base_rpc = input("Please enter a Base RPC URL: ") + + if optimus_config.tenderly_api_key is None: + optimus_config.tenderly_api_key = input( + "Please enter your Tenderly API Key. Get one at https://dashboard.tenderly.co/: " + ) + + return optimus_config + + +def get_service_template(config: OptimusConfig) -> ServiceTemplate: + """Get the service template""" + return ServiceTemplate({ + "name": "Optimus", + "hash": "bafybeihjiabgn2wzlrnwdij7lbg6tqvhe62mdycefdmsy2udiyxqtc3rsy", + "description": "Optimus", + "image": "https://operate.olas.network/_next/image?url=%2Fimages%2Fprediction-agent.png&w=3840&q=75", + "service_version": 'v0.18.1', + "home_chain_id": "10", + "configurations": { + "1": ConfigurationTemplate( + { + "staking_program_id": "pearl_alpha", + "rpc": config.ethereum_rpc, + "nft": "bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq", + "cost_of_bond": COST_OF_BOND, + "threshold": 1, + "use_staking": False, + "fund_requirements": FundRequirementsTemplate( + { + "agent": SUGGESTED_TOP_UP_DEFAULT, + "safe": SUGGESTED_SAFE_TOP_UP_DEFAULT, + } + ), + } + ), + "10": ConfigurationTemplate( + { + "staking_program_id": "pearl_alpha", + "rpc": config.optimism_rpc, + "nft": "bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq", + "cost_of_bond": COST_OF_BOND, + "threshold": 1, + "use_staking": False, + "fund_requirements": FundRequirementsTemplate( + { + "agent": SUGGESTED_TOP_UP_DEFAULT, + "safe": SUGGESTED_SAFE_TOP_UP_DEFAULT, + } + ), + } + ), + "8453": ConfigurationTemplate( + { + "staking_program_id": "pearl_alpha", + "rpc": config.base_rpc, + "nft": "bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq", + "cost_of_bond": COST_OF_BOND, + "threshold": 1, + "use_staking": False, + "fund_requirements": FundRequirementsTemplate( + { + "agent": SUGGESTED_TOP_UP_DEFAULT, + "safe": SUGGESTED_SAFE_TOP_UP_DEFAULT, + } + ), + } + ), + }, +}) + + +def main() -> None: + """Run service.""" + + print_title("Optimus Quickstart") + print("This script will assist you in setting up and running the Optimus service.") + print() + + print_section("Set up local user account") + operate = OperateApp( + home=OPERATE_HOME, + ) + operate.setup() + + optimus_config = get_local_config() + template = get_service_template(optimus_config) + + if operate.user_account is None: + print("Creating a new local user account...") + password = "12345" + UserAccount.new( + password=password, + path=operate._path / "user.json", + ) + else: + password = "12345" + # password = getpass.getpass("Enter local user account password: ") + if not operate.user_account.is_valid(password=password): + print("Invalid password!") + sys.exit(1) + + operate.password = password + if not operate.wallet_manager.exists(ledger_type=LedgerType.ETHEREUM): + print("Creating the main wallet...") + wallet, mnemonic = operate.wallet_manager.create(ledger_type=LedgerType.ETHEREUM) + wallet.password = password + print() + print_box(f"Please save the mnemonic phrase for the main wallet:\n{', '.join(mnemonic)}", 0, '-') + input("Press enter to continue...") + else: + wallet = operate.wallet_manager.load(ledger_type=LedgerType.ETHEREUM) + + manager = operate.service_manager() + service = manager.load_or_create( + hash=template["hash"], + service_template=template, + ) + + for chain_id, configuration in service.chain_configs.items(): + chain_config = service.chain_configs[chain_id] + chain_type = chain_config.ledger_config.chain + ledger_api = wallet.ledger_api( + chain_type=chain_type, + rpc=chain_config.ledger_config.rpc, + ) + + print(f"[Chain {chain_id}] Main wallet balance: {wei_to_token(ledger_api.get_balance(wallet.crypto.address))}") + spinner = Halo( + text=f"Please make sure main wallet {wallet.crypto.address} has at least {wei_to_token(MASTER_WALLET_MIMIMUM_BALANCE)}.", + spinner="dots" + ) + spinner.start() + + while ledger_api.get_balance(wallet.crypto.address) < MASTER_WALLET_MIMIMUM_BALANCE: + time.sleep(1) + + spinner.succeed(f"Main wallet updated balance: {wei_to_token(ledger_api.get_balance(wallet.crypto.address))}.") + print() + + if wallet.safes.get(chain_type) is not None: + print("Safe already exists") + else: + print("Creating Safe") + ledger_type = LedgerType.ETHEREUM + wallet_manager = operate.wallet_manager + wallet = wallet_manager.load(ledger_type=ledger_type) + + wallet.create_safe( # pylint: disable=no-member + chain_type=chain_type, + rpc=chain_config.ledger_config.rpc, + ) + print("Funding Safe") + wallet.transfer( + to=t.cast(str, wallet.safes[chain_type]), + amount=int(MASTER_WALLET_MIMIMUM_BALANCE), + chain_type=chain_type, + from_safe=False, + rpc=chain_config.ledger_config.rpc, + ) + + print_section("Set up the service in the Olas Protocol") + + address = wallet.safes[chain_type] + print(f"Safe balance: {wei_to_token(ledger_api.get_balance(address))}") + spinner = Halo( + text=f"Please make sure address {address} has at least {wei_to_token(MASTER_WALLET_MIMIMUM_BALANCE)}.", + spinner="dots", + ) + spinner.start() + + while ledger_api.get_balance(address) < MASTER_WALLET_MIMIMUM_BALANCE: + time.sleep(1) + + spinner.succeed(f"Safe updated balance: {wei_to_token(ledger_api.get_balance(address))}.") + + manager.deploy_service_onchain_from_safe_single_chain(hash=service.hash, chain_id=chain_id) + manager.fund_service(hash=service.hash, chain_id=chain_id) + + home_chain_id = service.home_chain_id + manager.deploy_service_locally(hash=service.hash, chain_id=chain_id, use_docker=True) + + print() + print_section("Run the service") + + +if __name__ == "__main__": + main() diff --git a/run_service.sh b/run_service.sh new file mode 100644 index 000000000..2c23a9c9f --- /dev/null +++ b/run_service.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# ------------------------------------------------------------------------------ +# +# Copyright 2024 Valory AG +# +# 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. +# +# ------------------------------------------------------------------------------ + +if [ "$(git rev-parse --is-inside-work-tree)" = true ] +then + poetry install + poetry run python quickstart/run_service.py +else + echo "$directory is not a git repo!" + exit 1 +fi diff --git a/templates/superfest.yaml b/templates/superfest.yaml new file mode 100644 index 000000000..7425b0042 --- /dev/null +++ b/templates/superfest.yaml @@ -0,0 +1,18 @@ +name: "Superfest Agent" +description: "A single-agent service (sovereign agent) placing bets on Omen" +hash: bafybeiegxvr7uzl6srgq7x36escs4jrc35cnk73ky23egfgkarp7hz6x4u +image: https://operate.olas.network/_next/image?url=%2Fimages%2Fprediction-agent.png&w=3840&q=75 +service_version: v0.18.1 +home_chain_id: 10 +configurations: + 100: + staking_program_id: pearl_beta + nft: bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq + rpc: http://localhost:8545 # User provided + threshold: 1 # TODO: Move to service component + use_staking: false # User provided + cost_of_bond: 10000000000000000 + monthly_gas_estimate: 10000000000000000000 # TODO: Where is this used + fund_requirements: + agent: 100000000000000000 + safe: 5000000000000000000 diff --git a/templates/trader.yaml b/templates/trader.yaml index 63a87f47c..ed0b8679d 100644 --- a/templates/trader.yaml +++ b/templates/trader.yaml @@ -1,18 +1,18 @@ name: "Trader Agent" description: "A single-agent service (sovereign agent) placing bets on Omen" -hash: bafybeidgjgjj5ul6xkubicbemppufgsbx5sr5rwhtrwttk2oivp5bkdnce +hash: bafybeicrstlxew36hlxl7pzi73nmd44aibnhwxzkchzlec6t6yhvs7gvhy image: https://operate.olas.network/_next/image?url=%2Fimages%2Fprediction-agent.png&w=3840&q=75 -trader_version: v0.18.1 -configuration: - nft: bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq - rpc: http://localhost:8545 # User provided - agent_id: 14 - threshold: 1 # TODO: Move to service component - use_staking: false # User provided - cost_of_bond: 10000000000000000 - olas_cost_of_bond: 10000000000000000000 - olas_required_to_stake: 10000000000000000000 - monthly_gas_estimate: 10000000000000000000 - fund_requirements: - agent: 100000000000000000 - safe: 5000000000000000000 +service_version: v0.18.1 +home_chain_id: 100 +configurations: + 100: + staking_program_id: pearl_beta + nft: bafybeig64atqaladigoc3ds4arltdu63wkdrk3gesjfvnfdmz35amv7faq + rpc: http://localhost:8545 # User provided + threshold: 1 # TODO: Move to service component + use_staking: false # User provided + cost_of_bond: 10000000000000000 + monthly_gas_estimate: 10000000000000000000 # TODO: Where is this used + fund_requirements: + agent: 100000000000000000 + safe: 5000000000000000000 diff --git a/yarn.lock b/yarn.lock index 0d084c194..146feb635 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1347,7 +1347,7 @@ ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.12.0: +ajv@^8.0.0: version "8.16.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== @@ -1357,6 +1357,16 @@ ajv@^8.0.0, ajv@^8.12.0: require-from-string "^2.0.2" uri-js "^4.4.1" +ajv@^8.6.3: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -1538,13 +1548,10 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atomically@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/atomically/-/atomically-2.0.3.tgz#27e47bbe39994d324918491ba7c0edb7783e56cb" - integrity sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw== - dependencies: - stubborn-fs "^1.2.5" - when-exit "^2.1.1" +atomically@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe" + integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w== axios@^1.7.2: version "1.7.2" @@ -2024,20 +2031,21 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -conf@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/conf/-/conf-12.0.0.tgz#de7a5f091114a28bc52aa5eecc920f4710d60d7f" - integrity sha512-fIWyWUXrJ45cHCIQX+Ck1hrZDIf/9DR0P0Zewn3uNht28hbt5OfGUq8rRWsxi96pZWPyBEd0eY9ama01JTaknA== +conf@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== dependencies: - ajv "^8.12.0" + ajv "^8.6.3" ajv-formats "^2.1.1" - atomically "^2.0.2" - debounce-fn "^5.1.2" - dot-prop "^8.0.2" - env-paths "^3.0.0" - json-schema-typed "^8.0.1" - semver "^7.5.4" - uint8array-extras "^0.3.0" + atomically "^1.7.0" + debounce-fn "^4.0.0" + dot-prop "^6.0.1" + env-paths "^2.2.1" + json-schema-typed "^7.0.3" + onetime "^5.1.2" + pkg-up "^3.1.0" + semver "^7.3.5" config-file-ts@^0.2.4: version "0.2.6" @@ -2139,12 +2147,12 @@ dayjs@^1.11.11: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.11.tgz#dfe0e9d54c5f8b68ccf8ca5f72ac603e7e5ed59e" integrity sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg== -debounce-fn@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-5.1.2.tgz#c77bc447ef36828ecdd066df7de23f475e0a6281" - integrity sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A== +debounce-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7" + integrity sha512-8pYCQiL9Xdcg0UPSD3d+0KMlOjp+KGU5EPwYddgzQ7DATsg4fuUDjQtsYLmWjnk2obnNHgV3vE2Y4jejSOJVBQ== dependencies: - mimic-fn "^4.0.0" + mimic-fn "^3.0.0" debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5: version "4.3.5" @@ -2256,12 +2264,12 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dot-prop@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-8.0.2.tgz#afda6866610684dd155a96538f8efcdf78a27f18" - integrity sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ== +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: - type-fest "^3.8.0" + is-obj "^2.0.0" dotenv-cli@^7.4.2: version "7.4.2" @@ -2345,13 +2353,13 @@ electron-publish@24.13.1: lazy-val "^1.0.5" mime "^2.5.2" -electron-store@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-9.0.0.tgz#7ce8209c5ae31877ee5fbced6c6cb538c746ca8c" - integrity sha512-7LZ2dR3N3bF93G2c4x+1NZ/8fpsKv6bKrMxeOQWLqdRbxvopxVqy9QXQy9axSV2O3P1kVGTj1q2wq5/W4isiOg== +electron-store@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/electron-store/-/electron-store-8.2.0.tgz#114e6e453e8bb746ab4ccb542424d8c881ad2ca1" + integrity sha512-ukLL5Bevdil6oieAOXz3CMy+OgaItMiVBg701MNlG6W5RaC0AHN7rvlqTCmeb6O7jP0Qa1KKYTE0xV0xbhF4Hw== dependencies: - conf "^12.0.0" - type-fest "^4.18.1" + conf "^10.2.0" + type-fest "^2.17.0" electron-updater@^6.1.8: version "6.2.1" @@ -2432,16 +2440,11 @@ enquirer@^2.3.0: ansi-colors "^4.1.1" strip-ansi "^6.0.1" -env-paths@^2.2.0: +env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -env-paths@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-3.0.0.tgz#2f1e89c2f6dbd3408e1b1711dd82d62e317f58da" - integrity sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A== - err-code@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" @@ -2742,6 +2745,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -2789,6 +2797,13 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -3371,6 +3386,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -3462,10 +3482,10 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema-typed@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-8.0.1.tgz#826ee39e3b6cef536f85412ff048d3ff6f19dfa0" - integrity sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg== +json-schema-typed@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" + integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" @@ -3583,6 +3603,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -3728,10 +3756,15 @@ mime@^2.5.2: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== mimic-response@^1.0.0: version "1.0.1" @@ -3949,6 +3982,13 @@ one-time@^1.0.0: dependencies: fn.name "1.x.x" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -3978,6 +4018,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -3992,6 +4039,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -4011,6 +4065,11 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + package-json-from-dist@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" @@ -4089,6 +4148,13 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + plist@^3.0.4, plist@^3.0.5: version "3.1.0" resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" @@ -4800,11 +4866,16 @@ semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@^7.3.2, semver@^7.3.8, semver@^7.5.3: version "7.6.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== +semver@^7.3.5: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + serialize-error@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" @@ -4971,7 +5042,16 @@ string-convert@^0.2.0: resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -4996,7 +5076,14 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -5022,11 +5109,6 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -stubborn-fs@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/stubborn-fs/-/stubborn-fs-1.2.5.tgz#e5e244223166921ddf66ed5e062b6b3bf285bfd2" - integrity sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g== - styled-components@^6.1.8: version "6.1.11" resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.11.tgz#01948e5195bf1d39e57e0a85b41958c80e40cfb8" @@ -5245,26 +5327,16 @@ type-fest@^0.7.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -type-fest@^3.8.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" - integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== - -type-fest@^4.18.1: - version "4.21.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.21.0.tgz#2eec399d9bda4ac686286314d07c6675fef3fdd8" - integrity sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA== +type-fest@^2.17.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== typescript@^5.3.3: version "5.5.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== -uint8array-extras@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-0.3.0.tgz#4b5714e4bf15bb36ae7fd6faeef11aae34a0af59" - integrity sha512-erJsJwQ0tKdwuqI0359U8ijkFmfiTcq25JvvzRVc1VP+2son1NJRXhxcAKJmAW3ajM8JSGAfsAXye8g4s+znxA== - undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" @@ -5330,11 +5402,6 @@ verror@^1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -when-exit@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/when-exit/-/when-exit-2.1.3.tgz#5831cdbed8ad4984645da98c4a00d4ee3a3757e7" - integrity sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw== - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -5378,7 +5445,16 @@ workerpool@^6.5.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==