Commit 5ac76526 authored by tom's avatar tom

Merge branch 'main' of github.com:blockscout/frontend into auto-skeletons

parents 26dea79a aa1411ad
......@@ -10,9 +10,10 @@ NEXT_PUBLIC_AUTH_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_AUTH_URL__
NEXT_PUBLIC_NETWORK_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_NAME__
NEXT_PUBLIC_NETWORK_SHORT_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_SHORT_NAME__
NEXT_PUBLIC_NETWORK_LOGO=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_LOGO__
NEXT_PUBLIC_NETWORK_SMALL_LOGO=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_SMALL_LOGO__
NEXT_PUBLIC_NETWORK_LOGO_DARK=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_LOGO_DARK__
NEXT_PUBLIC_NETWORK_ICON=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ICON__
NEXT_PUBLIC_NETWORK_ICON_DARK=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ICON_DARK__
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME__
NEXT_PUBLIC_NETWORK_TYPE=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_TYPE__
NEXT_PUBLIC_NETWORK_ID=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_ID__
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_CURRENCY_NAME__
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL__
......@@ -31,15 +32,16 @@ NEXT_PUBLIC_FOOTER_TELEGRAM_LINK=__PLACEHOLDER_FOR_NEXT_PUBLIC_FOOTER_TELEGRAM_L
NEXT_PUBLIC_FOOTER_STAKING_LINK=__PLACEHOLDER_FOR_NEXT_PUBLIC_FOOTER_STAKING_LINK__
NEXT_PUBLIC_FEATURED_NETWORKS=__PLACEHOLDER_FOR_NEXT_PUBLIC_FEATURED_NETWORKS__
NEXT_PUBLIC_NETWORK_EXPLORERS=__PLACEHOLDER_FOR_NEXT_PUBLIC_NETWORK_EXPLORERS__
NEXT_PUBLIC_MARKETPLACE_APP_LIST=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_APP_LIST__
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_CONFIG_URL__
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=__PLACEHOLDER_FOR_NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM__
NEXT_PUBLIC_LOGOUT_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_LOGOUT_URL__
NEXT_PUBLIC_LOGOUT_RETURN_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_LOGOUT_RETURN_URL__
NEXT_PUBLIC_HOMEPAGE_CHARTS=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_CHARTS__
NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR__
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT__
NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER__
NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME=__PLACEHOLDER_FOR_NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME__
NEXT_PUBLIC_AD_DOMAIN_WITH_AD=__PLACEHOLDER_FOR_NEXT_PUBLIC_DOMAIN_WITH_AD__
NEXT_PUBLIC_AD_DOMAIN_WITH_AD=__PLACEHOLDER_FOR_NEXT_PUBLIC_AD_DOMAIN_WITH_AD__
NEXT_PUBLIC_AD_ADBUTLER_ON=__PLACEHOLDER_FOR_NEXT_PUBLIC_AD_ADBUTLER_ON__
NEXT_PUBLIC_GRAPHIQL_TRANSACTION=__PLACEHOLDER_FOR_NEXT_PUBLIC_GRAPHIQL_TRANSACTION__
......@@ -63,3 +65,6 @@ NEXT_PUBLIC_GOOGLE_ANALYTICS_PROPERTY_ID=__PLACEHOLDER_FOR_NEXT_PUBLIC_GOOGLE_AN
NEXT_PUBLIC_IS_L2_NETWORK=__PLACEHOLDER_FOR_NEXT_PUBLIC_IS_L2_NETWORKL__
NEXT_PUBLIC_L1_BASE_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_L1_BASE_URL__
NEXT_PUBLIC_L2_WITHDRAWAL_URL=__PLACEHOLDER_FOR_NEXT_PUBLIC_L2_WITHDRAWAL_URL__
# beacon chain config
NEXT_PUBLIC_HAS_BEACON_CHAIN=__PLACEHOLDER_FOR_NEXT_PUBLIC_HAS_BEACON_CHAIN__
......@@ -28,7 +28,7 @@ jobs:
uses: actions/checkout@v3
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4
uses: rlespinasse/github-slug-action@v4.4.1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
......
......@@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@v3
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4
uses: rlespinasse/github-slug-action@v4.4.1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
......
......@@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@v3
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4
uses: rlespinasse/github-slug-action@v4.4.1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
......
......@@ -365,6 +365,7 @@
"options": [
"",
"--update-snapshots",
"--ui",
],
"default": ""
},
......
This diff is collapsed.
This diff is collapsed.
/* eslint-disable no-restricted-properties */
import type { AppItemOverview } from 'types/client/apps';
import type { FeaturedNetwork, NetworkExplorer, PreDefinedNetwork } from 'types/networks';
import type { NetworkExplorer } from 'types/networks';
import type { ChainIndicatorId } from 'ui/home/indicators/types';
const getEnvValue = (env: string | undefined) => env?.replaceAll('\'', '"');
......@@ -61,9 +60,14 @@ const config = Object.freeze({
env,
isDev,
network: {
type: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_TYPE) as PreDefinedNetwork | undefined,
logo: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_LOGO),
smallLogo: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_SMALL_LOGO),
logo: {
'default': getEnvValue(process.env.NEXT_PUBLIC_NETWORK_LOGO),
dark: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_LOGO_DARK),
},
icon: {
'default': getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ICON),
dark: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ICON_DARK),
},
name: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_NAME),
id: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_ID),
shortName: getEnvValue(process.env.NEXT_PUBLIC_NETWORK_SHORT_NAME),
......@@ -85,10 +89,10 @@ const config = Object.freeze({
telegram: getEnvValue(process.env.NEXT_PUBLIC_FOOTER_TELEGRAM_LINK),
staking: getEnvValue(process.env.NEXT_PUBLIC_FOOTER_STAKING_LINK),
},
featuredNetworks: parseEnvJson<Array<FeaturedNetwork>>(getEnvValue(process.env.NEXT_PUBLIC_FEATURED_NETWORKS)) || [],
featuredNetworks: getEnvValue(process.env.NEXT_PUBLIC_FEATURED_NETWORKS),
blockScoutVersion: getEnvValue(process.env.NEXT_PUBLIC_BLOCKSCOUT_VERSION),
isAccountSupported: getEnvValue(process.env.NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED) === 'true',
marketplaceAppList: parseEnvJson<Array<AppItemOverview>>(getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_APP_LIST)) || [],
marketplaceConfigUrl: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_CONFIG_URL),
marketplaceSubmitForm: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM),
protocol: appSchema,
host: appHost,
......@@ -111,6 +115,9 @@ const config = Object.freeze({
L1BaseUrl: getEnvValue(process.env.NEXT_PUBLIC_L1_BASE_URL),
withdrawalUrl: getEnvValue(process.env.NEXT_PUBLIC_L2_WITHDRAWAL_URL) || '',
},
beaconChain: {
hasBeaconChain: getEnvValue(process.env.NEXT_PUBLIC_HAS_BEACON_CHAIN) === 'true',
},
statsApi: {
endpoint: getEnvValue(process.env.NEXT_PUBLIC_STATS_API_HOST),
basePath: '',
......@@ -121,8 +128,11 @@ const config = Object.freeze({
},
homepage: {
charts: parseEnvJson<Array<ChainIndicatorId>>(getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_CHARTS)) || [],
plateGradient: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT) ||
plate: {
gradient: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT) ||
'radial-gradient(103.03% 103.03% at 0% 0%, rgba(183, 148, 244, 0.8) 0%, rgba(0, 163, 196, 0.8) 100%)',
textColor: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_PLATE_TEXT_COLOR) || 'white',
},
showGasTracker: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER) === 'false' ? false : true,
showAvgBlockTime: getEnvValue(process.env.NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME) === 'false' ? false : true,
},
......
......@@ -11,7 +11,6 @@ NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout
NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom
NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
# api config
NEXT_PUBLIC_API_HOST=blockscout.com
NEXT_PUBLIC_STATS_API_HOST=https://stats-test.aws-k8s.blockscout.com
......
This diff is collapsed.
This diff is collapsed.
# ui config
NEXT_PUBLIC_FEATURED_NETWORKS=[{'title':'Göerli','url':'https://eth-goerli.blockscout.com/','group':'testnets','type':'goerli'},{'title':'Base Göerli','url':'https://l2-goerli.blockscout.com/','group':'testnets','type':'base_goerli'}]
NEXT_PUBLIC_FEATURED_NETWORKS=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/featured-networks/base-goerli.json
NEXT_PUBLIC_NETWORK_EXPLORERS=
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT=linear-gradient(136.9deg,rgb(107 94 236) 1.5%,rgb(0 82 255) 56.84%,rgb(82 62 231) 98.54%)
NEXT_PUBLIC_GRAPHIQL_TRANSACTION=0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b2907594d300dc9fed75c7e62
......@@ -8,7 +8,8 @@ NEXT_PUBLIC_GRAPHIQL_TRANSACTION=0x4a0ed8ddf751a7cb5297f827699117b0f6d21a0b29075
NEXT_PUBLIC_NETWORK_NAME=Base Göerli
NEXT_PUBLIC_NETWORK_SHORT_NAME=Base
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=optimism
NEXT_PUBLIC_NETWORK_TYPE=base_goerli
NEXT_PUBLIC_NETWORK_LOGO=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/network-logos/base.svg
NEXT_PUBLIC_NETWORK_ICON=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/network-icons/base.svg
NEXT_PUBLIC_NETWORK_ID=420
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=Ether
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ETH
......@@ -17,8 +18,8 @@ NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS=
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true
NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE=validation
NEXT_PUBLIC_NETWORK_RPC_URL=https://goerli.optimism.io
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/marketplace/base-goerli.json
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST=[{'author':'Uniswap','id':'uniswap','title':'Uniswap','logo':'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FT8RR0UqqvH6wAVfaaM4f%252FUniswap.png%3Falt%3Dmedia%26token%3D797851a0-2d80-4f7b-8d80-f9ba664c0b3d','categories':['tools'],'shortDescription':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','site':'https://docs.uniswap.org/','description':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','url':'https://app.uniswap.org/swap'}, {'author':'Aave','id': 'aave','title': 'Aave','logo': 'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FaNQY8jHNue30P2caV79v%252FAave.png%3Falt%3Dmedia%26token%3Dda9ea09b-a5d8-4bf1-bdfe-41837eebdd03','categories':['tools'],'shortDescription':'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','site': 'https://docs.aave.com/faq/','description': 'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','url': 'https://staging.aave.com/'}, {'author': 'Blockscout','id':'token-approval-tracker','title':'Token Approval Tracker','logo':'https://approval-tracker.apps.blockscout.com/icon-192.png','categories':['security','tools'],'shortDescription':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','site':'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker','description':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','url':'https://approval-tracker.apps.blockscout.com/'}]
NEXT_PUBLIC_HOMEPAGE_CHARTS=['daily_txs']
NEXT_PUBLIC_IS_TESTNET=true
......
This diff is collapsed.
This diff is collapsed.
......@@ -9,13 +9,37 @@ NEXT_PUBLIC_APP_ENV=testing
NEXT_PUBLIC_BLOCKSCOUT_VERSION=v4.1.7-beta
NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout
NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom
NEXT_PUBLIC_FOOTER_TELEGRAM_LINK=https://t.me/poa_network
NEXT_PUBLIC_FOOTER_STAKING_LINK=https://duneanalytics.com/maxaleks/xdai-staking
NEXT_PUBLIC_NETWORK_EXPLORERS=[{'title':'Anyblock','baseUrl':'https://explorer.anyblock.tools','paths':{'tx':'/ethereum/poa/core/transaction','address':'/ethereum/poa/core/address'}}]
NEXT_PUBLIC_HOMEPAGE_CHARTS=['daily_txs','coin_price','market_cup']
NEXT_PUBLIC_HOMEPAGE_SHOW_AVG_BLOCK_TIME=true
NEXT_PUBLIC_HOMEPAGE_SHOW_GAS_TRACKER=true
NEXT_PUBLIC_FEATURED_NETWORKS=
NEXT_PUBLIC_NETWORK_LOGO=
NEXT_PUBLIC_NETWORK_SMALL_LOGO=
NEXT_PUBLIC_NETWORK_RPC_URL=https://core.poa.network
NEXT_PUBLIC_NETWORK_LOGO_DARK=
NEXT_PUBLIC_NETWORK_ICON=
NEXT_PUBLIC_NETWORK_ICON_DARK=
NEXT_PUBLIC_NETWORK_RPC_URL=https://localhost:1111
NEXT_PUBLIC_IS_TESTNET=true
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=https://localhost:3000/marketplace-config.json
NEXT_PUBLIC_IS_L2_NETWORK=false
# network config
NEXT_PUBLIC_NETWORK_NAME=Blockscout
NEXT_PUBLIC_NETWORK_SHORT_NAME=Blockscout
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME=ethereum
NEXT_PUBLIC_NETWORK_ID=1
NEXT_PUBLIC_NETWORK_CURRENCY_NAME=Ether
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL=ETH
NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS=18
NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS=
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED=true
NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE=validation
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM=https://localhost:3000/marketplace-submit-form
# api config
NEXT_PUBLIC_API_HOST=blockscout.com
NEXT_PUBLIC_STATS_API_HOST=https://stats-test.aws-k8s.blockscout.com
NEXT_PUBLIC_API_HOST=https://localhost:3003
NEXT_PUBLIC_STATS_API_HOST=https://localhost:3004
NEXT_PUBLIC_RE_CAPTCHA_APP_SITE_KEY=xxx
NEXT_PUBLIC_API_BASE_PATH=/
......@@ -16,10 +16,6 @@ blockscout:
_default: ENC[AES256_GCM,data:bgP4VwZ91eMzJVQ3/+fkqNCwBIAv3P12qRoGWu9QkfCKpj3e+Dwt1qjsYV1iNkcjQAJx3jOpVGlsbgdcBGFzHw==,iv:gpa6tbkxHv56wwI3Owdnr5MArJYdiVO3A0UMOsrgCls=,tag:CIgupR1ZNjsVtFYVG2OtHA==,type:str]
ACCOUNT_AUTH0_CALLBACK_URL:
_default: ENC[AES256_GCM,data:+EoMWtXdJA5DnRprCaps38VbQlLcJikKvB7FA0VMhaw+aq1d/rh5yIxl/CQBIo2eO8EESoVz6eUjzvgchbmv2IaiGgG3DnZx,iv:nfPmwEZMXM2SOIZ3OMr5u7GTbX6ni5VuFpn5SyHKMfE=,tag:4ePZ5NZ+rdBZf8xWDfEbzA==,type:str]
ACCOUNT_AUTH0_LOGOUT_RETURN_URL:
_default: ENC[AES256_GCM,data:Kw/WWdVpNWAOjwMLM2GJtQs0PaLQNth2w6qEU6vY86A6r0kdGO1If5XA14h8OiGIfGQ+KNizNaB5eTxmjUMPug==,iv:9idS4yx/ETwGaEGyUBsgcf8siyRo0aF0rGSOzO0uzw4=,tag:Z7fqs0YEavA0FdAEwSwskQ==,type:str]
ACCOUNT_AUTH0_LOGOUT_URL:
_default: ENC[AES256_GCM,data:FpIq9cXpqmBXpmVBj9seZB7vpbuJ5q+Iz5ChgL7+g6dgosufrO93tl4wsQk=,iv:DM4qKBrIyeQOmMMSPhEKiW26kEL0yHVA58na8tXZX0o=,tag:kTEy1KUinGUfe/cq1UARQA==,type:str]
ACCOUNT_SENDGRID_API_KEY:
_default: ENC[AES256_GCM,data:i08k9qiHA/31nyAri5pIm8MqCUZXLWjvQgcYpAyrcsToszt/L+QsYVcdCEerI0udtd2gJvLuRz3k8GcpZ9OfQB2Y0kJn,iv:Pt3rg7GjhfDw5S4VV9HpLSDsO4AhXlGIsNhdc5rYqCQ=,tag:zL/bLVgSS41kgnv69GxLMg==,type:str]
ACCOUNT_SENDGRID_SENDER:
......@@ -92,8 +88,8 @@ sops:
azure_kv: []
hc_vault: []
age: []
lastmodified: "2023-03-01T17:32:26Z"
mac: ENC[AES256_GCM,data:X1CPQWSFgieHg/elCyqPqQekMYsK/Go4R4sOsNE4XACseUzQr725vlo7XqZqPmRnnXz5bJu6MZAjSTbGCrPzybZV7ZUv94j9uPQSWH4x9SJicNe9ZHApeWapb/+PDz6xO9k8Tdug8WgVgy5kilHdYi6uGoIgeAwC7RwNG7TfyeQ=,iv:MpGf7GkzmVw5MZn0IMCDBAg0WQO1mzDc2ptHUxQNHUk=,tag:hsHMaU4MMc7df6Twc8dqSQ==,type:str]
lastmodified: "2023-04-25T13:14:30Z"
mac: ENC[AES256_GCM,data:/m/B6bN4MadVUtnZQUuZyCQX+X75mUP2pcQjUwZRGRbFcCzYYQLPV9fxgySNBbR+af0LXTHv4AilpOmiCCvCT0Yi6Q01+ac1YWJZ5U0kEBkhIXyOujYUHYeongWR7qzZmnujeV4d68ydEobteOH/EEmQymO7FrEiYJfQUOvomjU=,iv:/wFoZ0z12aSNpdG2kGGdORDdu6taDgG/yCAfY6bUiW8=,tag:TWza4eHHmq8EHJ41RiX01w==,type:str]
pgp:
- created_at: "2022-09-22T09:52:10Z"
enc: |
......
......@@ -5,7 +5,7 @@ blockscout:
app: blockscout
enabled: true
image:
_default: &image blockscout/blockscout-optimism-l2-advanced:5.1.2-prerelease-7a3279b9
_default: &image blockscout/blockscout-optimism-l2-advanced:5.1.2-prerelease-465ba09e
replicas:
app: 1
# init container
......@@ -83,9 +83,9 @@ blockscout:
_default: prod
ECTO_USE_SSL:
_default: 'false'
ENABLE_RUST_VERIFICATION_SERVICE:
MICROSERVICE_SC_VERIFIER_ENABLED:
_default: 'true'
RUST_VERIFICATION_SERVICE_URL:
MICROSERVICE_SC_VERIFIER_URL:
_default: http://sc-verifier-svc:8043
ACCOUNT_ENABLED:
_default: 'true'
......@@ -317,10 +317,10 @@ frontend:
- "/accounts"
- "/visualize"
- "/api-docs"
- "/output-roots"
- "/txn-batches"
- "/withdrawals"
- "/deposits"
- "/l2-output-roots"
- "/l2-txn-batches"
- "/l2-withdrawals"
- "/l2-deposits"
resources:
limits:
memory:
......@@ -349,8 +349,6 @@ frontend:
_default: Base
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME:
_default: optimism
NEXT_PUBLIC_NETWORK_TYPE:
_default: base_goerli
NEXT_PUBLIC_NETWORK_ID:
_default: 420
NEXT_PUBLIC_NETWORK_CURRENCY_NAME:
......@@ -363,8 +361,12 @@ frontend:
_default: validation
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED:
_default: 'true'
NEXT_PUBLIC_NETWORK_LOGO:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-logos/base.svg
NEXT_PUBLIC_NETWORK_ICON:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-icons/base.svg
NEXT_PUBLIC_FEATURED_NETWORKS:
_default: "[{'title':'Göerli','url':'https://eth-goerli.blockscout.com/','group':'testnets','type':'goerli'},{'title':'Base Göerli','url':'https://l2-goerli.blockscout.com/','group':'testnets','type':'base_goerli'}]"
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/featured-networks/base-goerli.json
NEXT_PUBLIC_API_HOST:
_default: blockscout-optimism-goerli.test.aws-k8s.blockscout.com
NEXT_PUBLIC_APP_HOST:
......@@ -373,8 +375,6 @@ frontend:
_default: /
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM:
_default: https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST:
_default: "[{'author':'Uniswap','id':'uniswap','title':'Uniswap','logo':'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FT8RR0UqqvH6wAVfaaM4f%252FUniswap.png%3Falt%3Dmedia%26token%3D797851a0-2d80-4f7b-8d80-f9ba664c0b3d','categories':['tools'],'shortDescription':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','site':'https://docs.uniswap.org/','description':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','url':'https://app.uniswap.org/swap'}, {'author':'Aave','id': 'aave','title': 'Aave','logo': 'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FaNQY8jHNue30P2caV79v%252FAave.png%3Falt%3Dmedia%26token%3Dda9ea09b-a5d8-4bf1-bdfe-41837eebdd03','categories':['tools'],'shortDescription':'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','site': 'https://docs.aave.com/faq/','description': 'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','url': 'https://staging.aave.com/'}, {'author': 'Blockscout','id':'token-approval-tracker','title':'Token Approval Tracker','logo':'https://approval-tracker.apps.blockscout.com/icon-192.png','categories':['security','tools'],'shortDescription':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','site':'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker','description':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','url':'https://approval-tracker.apps.blockscout.com/'}]"
NEXT_PUBLIC_LOGOUT_URL:
_default: https://blockscoutcom.us.auth0.com/v2/logout
NEXT_PUBLIC_LOGOUT_RETURN_URL:
......@@ -383,6 +383,8 @@ frontend:
_default: https://stats-optimism-goerli.test.aws-k8s.blockscout.com
NEXT_PUBLIC_API_SPEC_URL:
_default: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/marketplace/base-goerli.json
NEXT_PUBLIC_NETWORK_EXPLORERS:
_default: ''
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT:
......@@ -439,14 +441,14 @@ allowance:
resources:
limits:
memory:
_default: "0.3Gi"
_default: 768Mi
cpu:
_default: "0.2"
_default: 500m
requests:
memory:
_default: "0.3Gi"
_default: 384Mi
cpu:
_default: "0.2"
_default: 250m
# node label
nodeSelector:
......
......@@ -33,13 +33,9 @@ blockscout:
ACCOUNT_AUTH0_CLIENT_ID:
_default: ENC[AES256_GCM,data:xasZDDg1IuGbKSTm9Opjh43RcqDSzE3dMdmynP0gejo=,iv:TTRqPOkwMxAQIpmc7DklBoPdZzn3FsAprxwXtHY/KSk=,tag:ZI7zQ5zyjjYOqjzy2DyY7Q==,type:str]
ACCOUNT_AUTH0_CLIENT_SECRET:
_default: ENC[AES256_GCM,data:iYnptgxESZs216/m0ArCciXfirPTxVjt5urKTATyYv3uadokC54ofzMZagG/ZVvNY48+Uxh4YGzwySyLOOM0SA==,iv:UQoZf3tesEjAJ7E5YruoZmVclsYfS5EmSo4z90wfHfE=,tag:er+hARrkCrjoQugqvRr4ow==,type:str]
_default: ENC[AES256_GCM,data:jr/MLQ1Rq1xjBVAb/fZFbvak23hEcmRkh5nnG4WNCcORR+xEWhEv7ncP87ClpsfxedDN5pOcFrdUkF7u80OkKA==,iv:TIxP5v9K7mcApYmSKRByKNPwYw0djRWHojYfHvSWqZM=,tag:LSLmwapH044CEzOvlce9Og==,type:str]
ACCOUNT_AUTH0_CALLBACK_URL:
_default: ENC[AES256_GCM,data:GhyNTVlRvDpfW6swKExjVy65I3S+q6ITJWH8xp5TXuudp7hAtI4ujkYmXaa7D1BCaineTLhQ8UgHXFAgodOlrsGP1g41LIh6T2SGhrXTGGLbFw==,iv:ZflinC/h35jkrVAx0x7Z7U9mRridl85f7f6nfoc0Xts=,tag:40zL2KM9uPg/lRYv5JMxqw==,type:str]
ACCOUNT_AUTH0_LOGOUT_RETURN_URL:
_default: ENC[AES256_GCM,data:mTY6sjNKZ+VEvH47eyyoUHt//beWvuxyreu+1WrmMvkdkwR6jgXnSXh+1pTuiG8e3it96Egxraz0hjZxlkY9kSmE91/dfoqKTns=,iv:op8OuOXXeBmmUnVkCL14j4HrfjHHoN3n2XZqLdg03Mw=,tag:bbFQYi0Aa1sUdfoUjuQ/+w==,type:str]
ACCOUNT_AUTH0_LOGOUT_URL:
_default: ENC[AES256_GCM,data:IZFfi6pn+hy7g0wnEtP9TYHH1fNiC2gqgRHVdgm4C9smPerEvS0pq9dBwVY=,iv:BxbSInFQ6GE2loTv+IzdYr25PlyzdWZI1wdT6r+uvBg=,tag:psujCU372k59OGmlRdH9Fg==,type:str]
RE_CAPTCHA_SECRET_KEY:
_default: ENC[AES256_GCM,data:e9jfs4PwY+UPk0EuXZxERylKUFSUo6zsAz8oly3YwwybipP+A5rSBQ==,iv:TvrD/a+6+11IGDVFLUCn8U+H3v1YfIRrcndOVdt/taI=,tag:OAFVIznkeeeVX9UsigfP4A==,type:str]
RE_CAPTCHA_CLIENT_KEY:
......@@ -144,8 +140,8 @@ sops:
azure_kv: []
hc_vault: []
age: []
lastmodified: "2023-03-08T15:55:49Z"
mac: ENC[AES256_GCM,data:nl/CflZ5t09n3swP1vpR2rVjLVIW+H10/FCImDgeWuwt7F+0Whko3/UrPMypdfJeqiuCjWCmuynqjYqqZn2zjKabvc9bdo/RiQCyrdm7XIA+REA9XnKPnghYjkJYNm5kOLct5zif9Rq4wTfPOIpMRKnYvXrpnmiz5tE/lFXbYMw=,iv:mifwaplxQSJb5Q1CPWgR3hT5bTHTodNAoBEDKtdVLHI=,tag:rCAgVJxV52JV8O4CEZuLRg==,type:str]
lastmodified: "2023-04-25T13:14:48Z"
mac: ENC[AES256_GCM,data:V1q4PteIRNS0Ly6Whh6sVFn41K305tJsPSfRW2IU2e/JC5ei565mvT8HBy6Z6OrjSTrMv60fmpA5LSPAmzIab9jqFcm35uIGZY39PtP1Zigb/90BXqydCwQkbfXaNAcigZ9PgSs2MiqrmRI6T9hAOP0pxR9UpjC5kpQjqWuvAtM=,iv:bdNpxqPWdbaySRHBvxkuhQTrPJCfdLWxhJhQXI8qr2g=,tag:r8aLUTNNH8WQWz2W7qG0xQ==,type:str]
pgp:
- created_at: "2022-09-14T13:42:28Z"
enc: |
......
This diff is collapsed.
......@@ -40,22 +40,22 @@ frontend:
- "/csv-export"
- "/verified-contracts"
- "/graphiql"
- "/output-roots"
- "/txn-batches"
- "/withdrawals"
- "/deposits"
- "/l2-output-roots"
- "/l2-txn-batches"
- "/l2-withdrawals"
- "/l2-deposits"
resources:
limits:
memory:
_default: "1Gi"
_default: 768Mi
cpu:
_default: "0.5"
_default: "1"
requests:
memory:
_default: "1Gi"
_default: 384Mi
cpu:
_default: "0.5"
_default: 250m
environment:
NEXT_PUBLIC_BLOCKSCOUT_VERSION:
_default: v5.1.0-beta
......@@ -73,8 +73,6 @@ frontend:
_default: Base
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME:
_default: optimism
NEXT_PUBLIC_NETWORK_TYPE:
_default: base_goerli
NEXT_PUBLIC_NETWORK_ID:
_default: 420
NEXT_PUBLIC_NETWORK_CURRENCY_NAME:
......@@ -87,8 +85,12 @@ frontend:
_default: validation
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED:
_default: 'true'
NEXT_PUBLIC_NETWORK_LOGO:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-logos/base.svg
NEXT_PUBLIC_NETWORK_ICON:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/network-icons/base.svg
NEXT_PUBLIC_FEATURED_NETWORKS:
_default: "[{'title':'Göerli','url':'https://eth-goerli.blockscout.com/','group':'testnets','type':'goerli'},{'title':'Base Göerli','url':'https://l2-goerli.blockscout.com/','group':'testnets','type':'base_goerli'}]"
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/featured-networks/base-goerli.json
NEXT_PUBLIC_API_HOST:
_default: blockscout-optimism-goerli.test.aws-k8s.blockscout.com
review: blockscout-optimism-goerli.test.aws-k8s.blockscout.com
......@@ -98,8 +100,6 @@ frontend:
_default: /
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM:
_default: https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST:
_default: "[{'author':'Uniswap','id':'uniswap','title':'Uniswap','logo':'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FT8RR0UqqvH6wAVfaaM4f%252FUniswap.png%3Falt%3Dmedia%26token%3D797851a0-2d80-4f7b-8d80-f9ba664c0b3d','categories':['tools'],'shortDescription':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','site':'https://docs.uniswap.org/','description':'Uniswap is a cryptocurrency exchange which uses a decentralized network protocol.','url':'https://app.uniswap.org/swap'}, {'author':'Aave','id': 'aave','title': 'Aave','logo': 'https://www.gitbook.com/cdn-cgi/image/width=288,dpr=2.200000047683716,format=auto/https%3A%2F%2Ffiles.gitbook.com%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-Lq1XoWGmy8zggj_u2fM%252Fuploads%252FaNQY8jHNue30P2caV79v%252FAave.png%3Falt%3Dmedia%26token%3Dda9ea09b-a5d8-4bf1-bdfe-41837eebdd03','categories':['tools'],'shortDescription':'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','site': 'https://docs.aave.com/faq/','description': 'Aave is a decentralised non-custodial liquidity market protocol where users can participate as suppliers or borrowers. Suppliers provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralised (perpetually) or undercollateralised (one-block liquidity) fashion.','url': 'https://staging.aave.com/'}, {'author': 'Blockscout','id':'token-approval-tracker','title':'Token Approval Tracker','logo':'https://approval-tracker.apps.blockscout.com/icon-192.png','categories':['security','tools'],'shortDescription':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','site':'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker','description':'Token Approval Tracker shows all approvals for any ERC20-compliant tokens and NFTs and lets to revoke them or adjust the approved amount.','url':'https://approval-tracker.apps.blockscout.com/'}]"
NEXT_PUBLIC_LOGOUT_URL:
_default: https://blockscoutcom.us.auth0.com/v2/logout
NEXT_PUBLIC_LOGOUT_RETURN_URL:
......@@ -109,6 +109,8 @@ frontend:
_default: https://stats-optimism-goerli.test.aws-k8s.blockscout.com
NEXT_PUBLIC_API_SPEC_URL:
_default: https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL:
_default: https://raw.githubusercontent.com/blockscout/frontend-configs/dev/configs/marketplace/base-goerli.json
NEXT_PUBLIC_NETWORK_EXPLORERS:
_default: ''
NEXT_PUBLIC_HOMEPAGE_PLATE_GRADIENT:
......
This diff is collapsed.
This diff is collapsed.
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.461 4H4v5.176h8.461V4ZM26 4h-8.462v5.176H26V4Zm0 12.51h-5.077v4.313h-3.385V26H26v-9.49Zm-16.923 0H4V26h8.461v-5.177H9.077V16.51Z" fill="#48A9A6"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path d="m4 15.793 7.071-6.472M4 15.793l7.857 4.921M4 15.793 8.15 5.415M4 15.793l6.226 8.716m.845-15.188L19.358 5m-8.287 4.321-2.92-3.906M19.358 5l2.076 8.643M19.358 5 26 13.302M19.358 5l-11.207.415m13.283 8.228v10.036m0-10.036L26 13.302m-4.566 10.377-9.577-2.965m9.577 2.965-11.208.83m11.208-.83L26 13.302m-14.143 7.412-1.63 3.795m7.471-13.283h-5.396l3.32 3.321-3.32 3.736h5.396" stroke="#129C6B" stroke-width="1.4" stroke-linejoin="round"/>
</svg>
<svg viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.978 26C21.066 26 26 21.075 26 15S21.066 4 14.978 4C9.29 4 4.608 8.3 4.02 13.821h14.502v2.161H4C4.498 21.597 9.223 26 14.978 26Z" fill="#2151F5"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<rect x="4" y="4" width="22" height="22" rx="11" fill="#328332"/>
<path opacity=".6" d="M10.325 15.703c1.714.91 3.503 1.862 4.884 2.6l4.843-2.6a2325.737 2325.737 0 0 1-4.843 7.175c-1.632-2.396-3.433-5.039-4.884-7.175Zm.187-.72 4.702-2.508 4.641 2.49-4.638 2.513-4.706-2.494Zm4.697-3.313-4.884 2.571 4.863-7.119 4.864 7.135-4.843-2.586Z" fill="#fff"/>
<path opacity=".7" d="m15.209 18.303 4.843-2.6c-1.753 2.605-4.843 7.175-4.843 7.175v-4.575Zm.005-5.829 4.641 2.492-4.638 2.512-.003-5.004Zm-.005-.803-.021-4.549 4.864 7.135-4.843-2.586Z" fill="#fff"/>
<path opacity=".7" d="m10.512 14.984 4.703.386 4.64-.402-4.638 2.512-4.705-2.496Z" fill="#fff"/>
<path d="m15.214 15.37 4.642-.402-4.639 2.512-.003-2.11Z" fill="#fff"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<rect x="4" y="4" width="22" height="22" rx="11" fill="#627EEA"/>
<path d="M15.224 12.912V6.998c-.01 0-.015.004-.022.009a.07.07 0 0 1-.049.016c-.186.364-.384.715-.585 1.072l-.24.426c-.378.66-.755 1.345-1.133 2.03-.202.372-.41.743-.619 1.115-.204.364-.409.73-.608 1.094a87.06 87.06 0 0 1-.578 1.028c-.194.343-.389.686-.578 1.028-.034.063-.07.119-.104.175a4.41 4.41 0 0 0-.108.18h.024c.014.016.02.013.027.007.005-.003.01-.006.02-.006a8.69 8.69 0 0 0 .26-.127c.088-.045.176-.09.259-.127.225-.121.428-.219.63-.316l.03-.014.779-.381.637-.305.778-.38c.166-.1.345-.183.517-.263l.144-.067c.085-.04.164-.079.243-.118.075-.037.149-.074.229-.111.024 0 .047-.025.047-.05Zm-.021 10.153c.005.002.011.002.021.002V19.08c0-.025 0-.051-.024-.051a5.308 5.308 0 0 0-.188-.114c-.065-.038-.13-.076-.189-.114a68.01 68.01 0 0 0-1.099-.705c-.375-.237-.75-.474-1.119-.717a140.9 140.9 0 0 0-.967-.61c-.324-.202-.649-.405-.967-.608-.012 0-.018-.007-.024-.013-.006-.006-.011-.012-.023-.012 0 .012.006.018.011.025.006.006.012.012.012.025l.354.533c.285.453.58.895.873 1.333.166.25.332.5.495.749l1.416 2.132.674 1.02c.237.36.474.72.718 1.087.014.015.02.021.026.024Z" fill="#fff"/>
<path d="M15.22 6.933v8.292h4.62l-4.62-8.292Zm-4.62 8.195 4.62-2.217v5.206l-4.62-2.989Zm4.62 3.953v3.953l4.53-6.749-4.53 2.796Z" fill="#C0CBF6"/>
<path d="M15.22 18.117v-5.206l4.62 2.314-4.62 2.892Z" fill="#8197EE"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.809 9.496c.034.03.062.054.088.079.276.268.55.538.83.803.064.06.064.1.019.168-.587.888-.8 1.861-.605 2.892.263 1.383 1.068 2.391 2.383 2.998.776.36 1.6.451 2.447.326a4.14 4.14 0 0 0 1.588-.578c.08-.05.125-.044.19.02.715.703 1.435 1.401 2.149 2.104.078.078.12.087.204.004.816-.797 1.639-1.589 2.455-2.386.09-.088.146-.103.264-.034.713.415 1.491.582 2.322.544 1.65-.074 3.158-1.191 3.67-2.724.387-1.161.243-2.263-.388-3.311-.041-.069-.045-.11.018-.17.23-.214.454-.435.68-.653.021-.02.045-.038.067-.058a10.323 10.323 0 0 1-1.13 13.055c-4.03 4.223-10.68 4.551-15.12.927-4.51-3.68-5.046-9.723-2.131-14.006Z" fill="#276749"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.566 8.13C18.24 3.846 11.203 4.21 7.45 7.96c.022.023.043.049.066.071 2.48 2.407 4.961 4.814 7.44 7.222.07.068.11.06.173-.003.32-.314.643-.626.967-.937 2.091-2.012 4.183-4.025 6.276-6.036.056-.054.126-.095.195-.147Zm-7.53 8.643L5.968 7.961c.022-.028.04-.055.061-.078C7.12 6.71 8.387 5.763 9.865 5.089a11.91 11.91 0 0 1 2.518-.828 12.308 12.308 0 0 1 3.046-.25A12.06 12.06 0 0 1 19.725 5c1.645.711 3.034 1.75 4.212 3.063.069.076.03.11-.023.16l-4.397 4.237-4.386 4.228c-.027.026-.055.05-.095.086Zm-3.899-2.061c-.614.545-1.979.67-2.883-.204-.906-.877-.782-2.174-.187-2.849l3.07 3.053Zm7.943-.21c1.027-.999 2.05-1.993 3.074-2.986.433.469.634 1.666-.115 2.548-.833.981-2.208.976-2.96.438Z" fill="#276749"/>
</svg>
<svg viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.822 15.052h-6.9v2.731h3.19l-.01 3.433c-.123.132-.269.24-.43.319-.21.108-.43.197-.656.267a5.653 5.653 0 0 1-1.656.247 3.012 3.012 0 0 1-2.715-1.424 7.746 7.746 0 0 1-.9-4.064v-2.6a9.44 9.44 0 0 1 .265-2.36 5.76 5.76 0 0 1 .715-1.71c.267-.427.63-.785 1.06-1.047.4-.237.858-.36 1.323-.357a2.922 2.922 0 0 1 2.191.735c.526.615.84 1.383.895 2.191h3.627a8.472 8.472 0 0 0-.615-2.458 5.315 5.315 0 0 0-1.304-1.857 5.626 5.626 0 0 0-2.047-1.164 9.016 9.016 0 0 0-2.84-.4 6.71 6.71 0 0 0-2.774.572A6.354 6.354 0 0 0 2.016 7.77a7.927 7.927 0 0 0-1.483 2.659 10.954 10.954 0 0 0-.532 3.557v2.575a11.475 11.475 0 0 0 .51 3.557c.3.97.793 1.871 1.45 2.646a6.251 6.251 0 0 0 2.264 1.65 7.406 7.406 0 0 0 2.966.573c.765.005 1.529-.07 2.278-.221a10.497 10.497 0 0 0 1.914-.58 7.636 7.636 0 0 0 1.477-.8 5.2 5.2 0 0 0 .98-.87l-.018-7.464Zm2.66 2.783c-.01.97.143 1.935.451 2.855.281.837.73 1.61 1.317 2.269a5.985 5.985 0 0 0 2.133 1.5 7.278 7.278 0 0 0 2.88.54 7.194 7.194 0 0 0 2.86-.54 5.935 5.935 0 0 0 2.118-1.5 6.602 6.602 0 0 0 1.311-2.27c.308-.92.46-1.884.45-2.854v-.274a8.673 8.673 0 0 0-.45-2.84 6.532 6.532 0 0 0-1.317-2.27 6.078 6.078 0 0 0-2.125-1.508 7.812 7.812 0 0 0-5.74 0 6.082 6.082 0 0 0-2.12 1.508 6.516 6.516 0 0 0-1.317 2.27 8.647 8.647 0 0 0-.45 2.84v.274Zm3.681-.273a7.394 7.394 0 0 1 .174-1.625c.1-.478.284-.936.541-1.352a2.633 2.633 0 0 1 2.357-1.26c.495-.016.984.1 1.418.337.387.224.712.542.947.923.253.417.435.874.535 1.352a7.4 7.4 0 0 1 .173 1.625v.273a7.613 7.613 0 0 1-.172 1.659c-.1.478-.281.935-.537 1.352a2.622 2.622 0 0 1-2.337 1.255 2.818 2.818 0 0 1-1.424-.338 2.759 2.759 0 0 1-.96-.917 4.143 4.143 0 0 1-.541-1.352 7.6 7.6 0 0 1-.174-1.659v-.274.001Zm-1.747-10.3c.086.196.212.37.37.514.167.147.36.262.57.338.472.164.985.164 1.456 0 .21-.076.404-.19.57-.338.16-.143.285-.318.37-.514a1.594 1.594 0 0 0 0-1.274 1.562 1.562 0 0 0-.37-.52 1.7 1.7 0 0 0-.57-.344 2.206 2.206 0 0 0-1.456 0 1.7 1.7 0 0 0-.57.345 1.562 1.562 0 0 0-.502 1.157c0 .219.045.436.133.637v-.001Zm6.357.013c.086.197.212.374.37.52a1.7 1.7 0 0 0 .57.345c.47.165.984.165 1.456 0a1.7 1.7 0 0 0 .57-.345c.157-.146.283-.323.37-.52.089-.205.134-.427.132-.65a1.561 1.561 0 0 0-.503-1.151 1.761 1.761 0 0 0-.57-.338 2.206 2.206 0 0 0-1.456 0c-.21.075-.403.19-.57.338a1.546 1.546 0 0 0-.503 1.151c-.002.224.043.446.134.65Z" fill="currentColor"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.809 9.496c.034.03.062.054.088.079.276.268.55.538.83.803.064.06.064.1.019.168-.587.888-.8 1.861-.605 2.892.263 1.383 1.068 2.391 2.383 2.998.776.36 1.6.451 2.447.326a4.14 4.14 0 0 0 1.588-.578c.08-.05.125-.044.19.02.715.703 1.435 1.401 2.149 2.104.078.078.12.087.204.004.816-.797 1.639-1.589 2.455-2.386.09-.088.146-.103.264-.034.713.415 1.491.582 2.322.544 1.65-.074 3.158-1.191 3.67-2.724.387-1.161.243-2.263-.388-3.311-.041-.069-.045-.11.018-.17.23-.214.454-.435.68-.653.021-.02.045-.038.067-.058a10.323 10.323 0 0 1-1.13 13.055c-4.03 4.223-10.68 4.551-15.12.927-4.51-3.68-5.046-9.723-2.131-14.006Z" fill="#DD6B20"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.566 8.13C18.24 3.846 11.203 4.21 7.45 7.96c.022.023.043.049.066.071 2.48 2.407 4.961 4.814 7.44 7.222.07.068.11.06.173-.003.32-.314.643-.626.967-.937 2.091-2.012 4.183-4.025 6.276-6.036.056-.054.126-.095.195-.147Zm-7.53 8.643L5.968 7.961c.022-.028.04-.055.061-.078C7.12 6.71 8.387 5.763 9.865 5.089a11.91 11.91 0 0 1 2.518-.828 12.308 12.308 0 0 1 3.046-.25A12.06 12.06 0 0 1 19.725 5c1.645.711 3.034 1.75 4.212 3.063.069.076.03.11-.023.16l-4.397 4.237-4.386 4.228c-.027.026-.055.05-.095.086Zm-3.899-2.061c-.614.545-1.979.67-2.883-.204-.906-.877-.782-2.174-.187-2.849l3.07 3.053Zm7.943-.21c1.027-.999 2.05-1.993 3.074-2.986.433.469.634 1.666-.115 2.548-.833.981-2.208.976-2.96.438Z" fill="#DD6B20"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 12a2 2 0 0 1 2-2h15.753a2 2 0 0 1 1.92 1.436L26 19.35H14.45l-.825-3.85H4V12Zm0 5.35v-.75h8.8l.55 2.75H6a2 2 0 0 1-2-2Zm4.4-6.25H5.65l1.1 3.3H9.5l-1.1-3.3Zm4.4 0h-2.75l1.1 3.3h2.75l-1.1-3.3Zm6.05 5.5h1.336l.314 1.1h-1.336l-.314-1.1Zm5.186 0H22.7l.314 1.1h1.336l-.314-1.1Zm-7.386-5.5h5.5l1.65 4.95h-5.5l-1.65-4.95Z" fill="#38B2AC"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.502 13.858v1.071a.5.5 0 0 1-.5.5h-3.806a.5.5 0 0 1-.5-.5V6.048c0-.027.021-.048.048-.048h5.634a3.929 3.929 0 1 1 0 7.858h-.876ZM9.07 15.32a.5.5 0 0 1 .848 0l4.994 7.986a.5.5 0 0 1-.424.765H4.501a.5.5 0 0 1-.424-.765L9.07 15.32Zm11.638 9.537c2.875 0 5.206-2.287 5.206-5.107 0-2.821-2.331-5.108-5.206-5.108-2.876 0-5.206 2.287-5.206 5.108 0 2.82 2.33 5.107 5.206 5.107Z" fill="#5B2DA4"/>
</svg>
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.214 7.4c.749 0 1.288-.574 1.288-1.2S15.962 5 15.214 5s-1.288.574-1.288 1.2.54 1.2 1.288 1.2Zm.534.94a2.282 2.282 0 0 0 1.483-1.1l3.964 2.2a2.131 2.131 0 0 0-.25 1.785l-3.741 2.078c-.33-.64-.847-1.115-1.456-1.299V8.34Zm-1.144 3.667V8.321a2.28 2.28 0 0 1-1.402-1.073L9.239 9.449c.334.525.43 1.171.244 1.776l3.691 2.05c.328-.623.835-1.084 1.43-1.268Zm-1.78 2.343-3.93-2.182a2.319 2.319 0 0 1-1.154.589v4.486c.454.088.88.308 1.209.643l3.913-2.173a3.727 3.727 0 0 1-.039-1.363Zm.45 2.404-3.77 2.093a2.133 2.133 0 0 1-.271 1.714l3.964 2.2a2.28 2.28 0 0 1 1.407-1.082v-3.833c-.537-.166-1.003-.558-1.33-1.092Zm2.475 4.906c.645.149 1.184.56 1.488 1.11l3.963-2.2a2.133 2.133 0 0 1-.276-1.721l-3.82-2.12c-.329.55-.806.954-1.356 1.121v3.811Zm1.759-5.98 3.972 2.206c.33-.335.754-.554 1.208-.643v-4.486a2.32 2.32 0 0 1-1.153-.589l-3.99 2.215a3.765 3.765 0 0 1-.037 1.297Zm-.006-9.48v.004l4.49 2.493.004-.002c1.094-.608 2.494-.247 3.125.805.632 1.052.257 2.398-.837 3.005-.17.095-.348.166-.528.214v4.562c.18.048.358.12.528.214 1.095.607 1.47 1.953.838 3.005-.63 1.05-2.026 1.411-3.119.809l-4.5 2.5c-.007 1.21-1.029 2.191-2.29 2.191-1.263 0-2.288-.985-2.288-2.2v-.003l-4.49-2.494-.004.002c-1.094.608-2.493.247-3.125-.805-.632-1.052-.257-2.398.837-3.005.17-.095.348-.166.528-.214v-4.562a2.345 2.345 0 0 1-.527-.214c-1.095-.607-1.47-1.953-.838-3.005.632-1.052 2.031-1.413 3.125-.805l.016.008 4.478-2.488V6.2c0-1.215 1.025-2.2 2.288-2.2 1.264 0 2.288.985 2.288 2.2ZM15.214 25c.749 0 1.288-.574 1.288-1.2s-.54-1.2-1.288-1.2-1.288.574-1.288 1.2.54 1.2 1.288 1.2ZM8.396 11.215c.338-.563.15-1.314-.478-1.663-.628-.348-1.399-.13-1.737.433-.338.563-.15 1.315.478 1.663.628.348 1.399.13 1.737-.433Zm15.851 8.8c.338-.563.15-1.314-.477-1.663-.628-.348-1.399-.13-1.737.433-.338.563-.15 1.314.478 1.663.628.348 1.399.13 1.736-.433ZM6.66 18.352c.628-.348 1.398-.13 1.736.433.339.563.15 1.314-.477 1.663-.628.348-1.399.13-1.737-.433-.338-.563-.15-1.314.478-1.663Zm15.852-8.8c.628-.348 1.398-.13 1.736.433.338.563.15 1.314-.478 1.663-.627.348-1.398.13-1.736-.433-.338-.563-.15-1.315.478-1.663ZM14.605 15v1.738c-.433-.288-.826-.895-.826-1.811 0-1.33.826-2.007 1.402-2.007.577 0 1.403.677 1.403 2.007 0 .923-.399 1.532-.835 1.818V15h-1.144Z" fill="#27AA8B"/>
</svg>
<svg viewBox="0 0 87 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.017 8.474a.652.652 0 0 1 .103.292.517.517 0 0 1-.052.263L17.75 18.6v.046a.573.573 0 0 1-.13.137.856.856 0 0 1-.166.074h-.085l-10.445 1h-.057a.568.568 0 0 1-.24-.057.57.57 0 0 1-.164-.148l-6.4-8.263v-.069A.538.538 0 0 1 0 11.114h.051a.573.573 0 0 1 0-.194.08.08 0 0 0 0-.034.046.046 0 0 0 0-.029l4.24-9.525a.571.571 0 0 1 .142-.189l.086-.034a.603.603 0 0 1 .222-.075L15.174 0h.08a.46.46 0 0 1 .273.08.514.514 0 0 1 .171.12.07.07 0 0 1 0 .029l6.32 8.245Zm-5.55-5.36 1.294 5.11h2.632l-3.926-5.11ZM9.214 15.326l7.532 2.189V8.863l-1.874-7.429-7.641 4.28L1.533 11l7.68 4.326ZM7.123 4.474l5.458-3.068-6.843.68 1.385 2.388Zm-.93.67L4.867 2.856l-2.65 5.96 3.932-3.64.046-.034Zm-3.447 7.85 4.092 5.292 1.361-2.223-5.453-3.068Zm11.556 4.995-5.066-1.474-1.259 2.108 6.325-.634Zm3.584-8.623V15.6l2.786-6.234h-2.786ZM13.322 6a.57.57 0 0 1 0 1.143h-3.34l2.07 2.492a.573.573 0 0 1 0 .731l-2.07 2.492h3.34a.57.57 0 0 1 0 1.142H8.764a.573.573 0 0 1-.439-.937L10.872 10 8.325 6.938A.573.573 0 0 1 8.764 6h4.558Zm49.305-2.009-2.389-1.058v9.095h2.389V3.99Zm-30.26-1.235L29.87 3.835l-2.092 8.193h2.424l.557-2.265.436-2.016 1.171-4.991Zm3.976 9.272h2.625L34.241 0l-1.954 1.145 4.056 10.883Zm20.322-9.539h9.519V.42h-9.52v2.07Zm13.964 9.539h2.391V.42h-2.39v11.607Zm9.676-8.688c-.227-.514-.942-1.717-1.273-2.07-.506.282-1.184 1.15-1.184 2.636 0 1.893.68 2.583 2.563 3.061l2.18.566c1.603.425 1.69.672 1.69 1.132a2.136 2.136 0 0 1-.056.4c-.068.25-.273.671-1.081.939a6.102 6.102 0 0 1-1.635.236c-1.08 0-2.79-.194-3.487-.354v1.93c.628.229 2.18.406 3.295.406.333 0 .75-.015 1.153-.05.24-.008 1.812-.089 2.926-.89l.024-.018a.867.867 0 0 0 .082-.065 2.64 2.64 0 0 0 .74-.887l.015-.034.008-.018c.234-.451.402-1.052.402-1.861 0-1.823-.715-2.496-3.19-3.15l-1.884-.477c-1.259-.337-1.36-.55-1.36-1.062.006-.127.03-.252.07-.371l.002.001Zm2.822-1.134v.001c-1.255 0-2.197.16-2.824.425.104-.567.54-1.822.854-2.212.65-.125 1.309-.19 1.97-.195 1.046 0 2.32.142 2.93.283v1.946a23.339 23.339 0 0 0-2.93-.248ZM50.113 12.06l-1.349-3.716c-.406.027-.82.026-1.225.025h-2.166v3.687H42.98V2.909l2.393.976v2.5h1.817c.873 0 1.939-.125 2.288-.337.401-.249.646-.905.646-1.614 0-1.276-.611-1.931-2.603-1.931H44.36l-1.991-.284V.429h5.365c3.878 0 4.804 1.523 4.804 4.077 0 .887-.323 2.475-1.482 3.28l1.828 4.271-2.77.004Zm-19.321 4.85c-.298-.533-.784-.8-1.459-.8-.282 0-.53.05-.743.152a1.18 1.18 0 0 0-.492.409.99.99 0 0 0-.171.56c0 .294.104.522.314.686.21.164.566.29 1.07.378.388.068.659.152.812.251.152.1.228.233.228.4a.513.513 0 0 1-.263.461c-.175.109-.412.163-.709.163-.301 0-.552-.062-.752-.186a1.173 1.173 0 0 1-.455-.523l-.394.32c.14.248.346.446.615.595.268.149.593.223.975.223.29 0 .545-.045.766-.134a1.16 1.16 0 0 0 .512-.378c.12-.162.18-.35.18-.563 0-.298-.104-.53-.312-.698-.207-.168-.561-.293-1.06-.377a3.323 3.323 0 0 1-.627-.158.77.77 0 0 1-.323-.208.466.466 0 0 1-.097-.303c0-.187.083-.34.249-.46.166-.12.393-.181.683-.181.275 0 .49.053.65.157.157.105.294.283.408.535l.395-.32Zm1.505 3.032h.458v-3.775h-.458v3.775Zm5.275 0v-1.905h-1.619v.43h1.201v.13c0 .314-.104.554-.311.721-.208.168-.476.252-.804.252-.415 0-.734-.132-.955-.397-.221-.265-.332-.638-.332-1.118a1.9 1.9 0 0 1 .16-.81c.107-.226.257-.401.45-.523.192-.122.416-.183.671-.183.267 0 .495.057.684.172a.974.974 0 0 1 .409.491l.417-.228a1.524 1.524 0 0 0-.586-.652c-.242-.141-.55-.212-.924-.212-.35 0-.658.08-.923.237a1.614 1.614 0 0 0-.618.678c-.146.294-.22.637-.22 1.03 0 .396.072.74.215 1.032.142.291.346.516.609.675.263.158.572.237.926.237.282 0 .523-.049.724-.146.2-.097.355-.237.466-.42l.017.509h.343Zm4.794 0h.435v-3.775h-.704l-.823 2.3-.292.937h-.011l-.286-.943-.83-2.294h-.703v3.775h.435v-2.374l-.052-.995h.006l1.24 3.369h.39l1.24-3.369h.006l-.051.995v2.374Zm2.592-1.047h1.71l.4 1.047h.487l-1.464-3.775h-.544l-1.47 3.775h.481l.4-1.047Zm1.035-1.767.51 1.338h-1.379l.515-1.355.166-.51h.011l.177.527Zm8.285 2.814h.434v-3.775h-.703l-.824 2.3-.291.937h-.012l-.286-.943-.829-2.294h-.703v3.775h.434v-2.374l-.051-.995h.006l1.24 3.369h.39l1.24-3.369h.006l-.051.995v2.374Zm2.592-1.047h1.71l.4 1.047h.487l-1.465-3.775h-.543l-1.47 3.775h.48l.401-1.047Zm1.035-1.767.51 1.338h-1.38l.516-1.355.166-.51h.01l.178.527Zm2.838 2.814h.458v-3.775h-.458v3.775Zm4.6 0h.566v-3.775h-.434v2.665l.023.607h-.006l-.406-.755-1.573-2.517h-.566v3.775h.434v-2.665l-.022-.606h.005l.4.743 1.58 2.528Zm4.709 0h.566v-3.775h-.435v2.665l.023.607H70.2l-.406-.755-1.573-2.517h-.566v3.775h.435v-2.665l-.023-.606h.006l.4.743 1.579 2.528Zm5.045 0v-.43h-2.276v-1.269h1.704v-.429h-1.704v-1.218h2.19v-.429h-2.647v3.775h2.733Zm2.764-3.346h1.316v-.429h-3.089v.43h1.316v3.345h.457v-3.346Z" fill="#129C6B"/>
</svg>
This diff is collapsed.
<svg viewBox="0 0 404 112" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M112 56c0 30.928-25.121 56-56.11 56C26.59 112 2.534 89.586 0 61h73.925V50H.098c3-28.107 26.834-50 55.792-50C86.879 0 112 25.072 112 56Zm212.983-22.244c-.492-4.27-2.487-7.586-5.985-9.945-3.498-2.36-7.788-3.54-12.87-3.54-3.717 0-6.969.618-9.756 1.854-2.76 1.236-4.918 2.936-6.476 5.099-1.53 2.163-2.295 4.621-2.295 7.374 0 2.304.532 4.285 1.598 5.942a14.364 14.364 0 0 0 4.181 4.088 29.617 29.617 0 0 0 5.328 2.655 64.816 64.816 0 0 0 5.124 1.643l8.526 2.36c2.186.59 4.618 1.405 7.296 2.444 2.705 1.04 5.288 2.458 7.747 4.256 2.487 1.77 4.536 4.046 6.149 6.827 1.612 2.781 2.418 6.195 2.418 10.24 0 4.664-1.189 8.878-3.566 12.642-2.35 3.765-5.793 6.757-10.329 8.976-4.509 2.22-9.988 3.329-16.437 3.329-6.012 0-11.218-.997-15.617-2.992-4.372-1.995-7.815-4.776-10.33-8.344-2.486-3.568-3.893-7.711-4.221-12.431h10.493c.273 3.259 1.339 5.956 3.197 8.091 1.886 2.107 4.263 3.68 7.132 4.72 2.897 1.01 6.012 1.517 9.346 1.517 3.88 0 7.364-.646 10.452-1.939 3.088-1.32 5.534-3.146 7.337-5.478 1.804-2.36 2.705-5.113 2.705-8.26 0-2.865-.778-5.197-2.336-6.995-1.557-1.798-3.607-3.259-6.148-4.382-2.542-1.124-5.288-2.107-8.239-2.95l-10.329-3.034c-6.559-1.939-11.751-4.706-15.577-8.302-3.825-3.596-5.738-8.302-5.738-14.117 0-4.832 1.271-9.046 3.812-12.642 2.569-3.624 6.012-6.433 10.329-8.428C296.249 12.011 301.1 11 306.456 11c5.41 0 10.22.997 14.428 2.992 4.208 1.966 7.542 4.663 10.001 8.09 2.487 3.428 3.799 7.32 3.935 11.674h-9.837ZM126 12.18v86.303h30.332c6.613 0 11.983-1.011 16.109-3.034 4.126-2.023 7.146-4.762 9.059-8.218 1.912-3.455 2.869-7.346 2.869-11.672 0-4.551-.875-8.4-2.623-11.547-1.749-3.146-3.922-5.562-6.518-7.248-2.596-1.685-5.178-2.612-7.747-2.781v-.843a22.47 22.47 0 0 0 6.682-3.118c2.076-1.405 3.743-3.315 5-5.731 1.285-2.416 1.927-5.478 1.927-9.187 0-4.214-.929-8.049-2.788-11.504-1.858-3.484-4.686-6.25-8.484-8.302-3.799-2.079-8.622-3.118-14.47-3.118H126Zm30.332 77.032h-20.167V59.208h20.659c3.662 0 6.832.759 9.509 2.276 2.678 1.489 4.742 3.483 6.19 5.984 1.448 2.472 2.172 5.169 2.172 8.09 0 3.793-1.407 7.024-4.222 9.693-2.787 2.64-7.501 3.961-14.141 3.961Zm-1.311-39.106h-18.856V21.451h19.183c5.575 0 9.647 1.334 12.215 4.003 2.569 2.641 3.853 5.857 3.853 9.65 0 3.034-.738 5.675-2.213 7.923-1.449 2.247-3.416 3.989-5.903 5.225-2.459 1.236-5.219 1.854-8.279 1.854Zm38.837 48.377h10.657l8.44-24.441h33.947l8.44 24.44h10.657L235.175 12.18h-10.493l-30.824 86.303Zm49.843-33.712-13.445-38.938h-.655l-13.445 38.938h27.545Zm108.98-52.591v86.303H404v-9.27h-41.153v-29.33h37.874v-9.271h-37.874V21.45h40.497v-9.27h-50.663Z" fill="#2151F5"/>
</svg>
This diff is collapsed.
<svg viewBox="0 0 71 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6 7.467 0 10.4 6 0v7.467Z" fill="#828083"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 7.188-6 2.945 6 3.477V7.188Z" fill="#353336"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 15.046-6-3.854L6 20v-4.954Z" fill="#848285"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 7.467 6 2.933L6 0v7.467Z" fill="#2F2D30"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 7.188 6 2.942-6 3.476V7.189Z" fill="#121212"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="m6 15.046 6-3.854L6 20v-4.954Z" fill="#302E31"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.783 8.886a2.945 2.945 0 0 0 .008 3.904 2.578 2.578 0 0 0 4.056-.333.222.222 0 0 0-.192-.334.233.233 0 0 0-.193.11 2.16 2.16 0 0 1-1.847.93 1.933 1.933 0 0 1-1.445-.614 2.37 2.37 0 0 1-.675-1.467h4.48a.206.206 0 0 0 .24-.225 2.858 2.858 0 0 0-.744-1.962 2.455 2.455 0 0 0-3.688-.009Zm.387.251a1.995 1.995 0 0 1 2.89 0 2.4 2.4 0 0 1 .675 1.477h-4.24a2.4 2.4 0 0 1 .675-1.477Zm7.467-2.697a.224.224 0 1 0-.448 0v1.742h-1.152a.233.233 0 1 0 0 .467h1.152v4.673a.224.224 0 1 0 .448 0V8.65h1.2a.233.233 0 0 0 0-.467h-1.2V6.44Zm3.776 2.782V3.926a.224.224 0 1 0-.448 0v9.36a.224.224 0 1 0 .448 0v-2.328a2.613 2.613 0 0 1 .4-1.675 1.68 1.68 0 0 1 1.481-.749 1.409 1.409 0 0 1 1.195.606c.284.376.43.838.414 1.308v2.839a.224.224 0 0 0 .448 0v-2.849a2.511 2.511 0 0 0-.544-1.632 1.837 1.837 0 0 0-1.52-.733 2.031 2.031 0 0 0-1.872 1.152l-.002-.003Zm6.72-.333a2.944 2.944 0 0 0 .008 3.904 2.578 2.578 0 0 0 4.056-.333.221.221 0 0 0-.303-.303.234.234 0 0 0-.083.08 2.16 2.16 0 0 1-1.847.93 1.934 1.934 0 0 1-1.445-.615 2.365 2.365 0 0 1-.674-1.467h4.479a.204.204 0 0 0 .177-.053.206.206 0 0 0 .064-.172 2.858 2.858 0 0 0-.744-1.963 2.456 2.456 0 0 0-3.688-.01v.002Zm.386.251a1.996 1.996 0 0 1 2.891 0 2.4 2.4 0 0 1 .675 1.477h-4.24c.046-.557.285-1.08.677-1.48l-.003.003Zm7.406-.592a2.69 2.69 0 0 0-.784.837V8.4a.224.224 0 1 0-.448 0v4.867a.224.224 0 0 0 .448 0v-2.133a2.765 2.765 0 0 1 .466-1.643 1.967 1.967 0 0 1 1.44-.862.22.22 0 0 0 .208-.239.199.199 0 0 0-.149-.205.2.2 0 0 0-.09-.002c-.392.009-.77.135-1.089.363l-.002.002Zm3.44.34a2.944 2.944 0 0 0 .008 3.905 2.578 2.578 0 0 0 4.056-.333.221.221 0 0 0-.303-.303.235.235 0 0 0-.083.08 2.159 2.159 0 0 1-1.847.93 1.934 1.934 0 0 1-1.445-.615 2.365 2.365 0 0 1-.674-1.467h4.479a.204.204 0 0 0 .177-.053.206.206 0 0 0 .064-.172 2.858 2.858 0 0 0-.744-1.963 2.456 2.456 0 0 0-3.686-.01l-.002.002Zm.386.252a1.996 1.996 0 0 1 2.891 0 2.4 2.4 0 0 1 .675 1.477h-4.24c.046-.557.285-1.08.677-1.48l-.003.003Zm10.03-.733v1.824c0 1.973-.62 2.96-1.857 2.96a1.43 1.43 0 0 1-1.215-.608 2.105 2.105 0 0 1-.4-1.312V8.404a.223.223 0 0 0-.31-.207.225.225 0 0 0-.138.207v2.872a2.52 2.52 0 0 0 .544 1.637 1.83 1.83 0 0 0 1.52.738 1.988 1.988 0 0 0 1.856-1.267v.928a.224.224 0 1 0 .448 0V8.407a.224.224 0 0 0-.448 0Zm6.863 1.088A1.867 1.867 0 0 0 64.74 8.07a2.035 2.035 0 0 0-1.872 1.133V8.4a.224.224 0 1 0-.448 0v4.887a.224.224 0 0 0 .448 0V11.02a3.047 3.047 0 0 1 .4-1.786 1.685 1.685 0 0 1 1.472-.702 1.431 1.431 0 0 1 1.2.59c.285.375.432.837.416 1.308v2.857a.224.224 0 0 0 .448 0v-2.2a3.346 3.346 0 0 1 .416-1.707 1.6 1.6 0 0 1 1.44-.845 1.404 1.404 0 0 1 1.2.59c.285.375.432.837.416 1.308v2.854a.224.224 0 0 0 .448 0V10.42a2.56 2.56 0 0 0-.56-1.656 1.83 1.83 0 0 0-1.504-.696 2.095 2.095 0 0 0-2.016 1.424v.003Z" fill="#1B1635"/>
</svg>
<svg viewBox="0 0 85 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#gnosis_svg__a)">
<path d="M2.634 9.03c0-.485.159-.925.434-1.274l2.916 2.915a2.067 2.067 0 0 1-1.274.434A2.07 2.07 0 0 1 2.634 9.03Zm8.673 2.069a2.07 2.07 0 0 0 2.077-2.076c0-.478-.16-.918-.435-1.274l-2.916 2.915c.35.275.79.435 1.274.435Zm2.254-3.95a2.94 2.94 0 0 1-4.14 4.139l-1.415 1.414-1.415-1.414a2.94 2.94 0 0 1-4.14-4.139l-.663-.66-.63-.631A7.997 7.997 0 0 0 8 18c4.416 0 8-3.582 8-7.997a7.805 7.805 0 0 0-1.146-4.145L13.56 7.149ZM8 11.48 1.653 5.134a9.34 9.34 0 0 1 .564-.655A7.986 7.986 0 0 1 8.006 2c2.278 0 4.336.955 5.788 2.48.202.202.393.428.552.649L8 11.479Zm-4.913-6.4 4.918 4.917 4.918-4.917a6.856 6.856 0 0 0-4.918-2.039A6.868 6.868 0 0 0 3.087 5.08Zm14.685 4.926v.018c0 4.405 3.574 7.975 7.982 7.975h3.373V15.93h-3.32a5.917 5.917 0 0 1-5.917-6.044c.069-3.233 2.79-5.784 6.026-5.784h3.21V2.053h-3.395c-4.395 0-7.959 3.561-7.959 7.953ZM60.19 2.053h8.57V18h-8.57V2.053Zm1.517 4.804a2.769 2.769 0 1 0 5.537 0 2.769 2.769 0 0 0-5.537 0Zm-20.953.542a1.5 1.5 0 0 1-.467 1.116 1.53 1.53 0 0 1-1.106.456h-4.742c-.441 0-.814-.151-1.117-.456a1.515 1.515 0 0 1-.456-1.116V2.053h-2.052V18h2.052v-5.451c0-.44.152-.813.456-1.116a1.52 1.52 0 0 1 1.117-.456h4.742c.425 0 .794.152 1.106.456a1.5 1.5 0 0 1 .467 1.116V18h2.03V2.053h-2.03V7.4Zm37.132-5.346h-7.44V18h2.052V9.475a5.375 5.375 0 0 1 5.377-5.373 5.375 5.375 0 0 1 5.377 5.373v8.524h2.034V9.45a7.397 7.397 0 0 0-7.4-7.396Zm-25.207.848L59.444 18h-15.9l6.834-15.098c.27-.6.654-.901 1.15-.901.496 0 .88.3 1.15.901Zm-1.15 6.942a2.769 2.769 0 1 0 0 5.537 2.769 2.769 0 0 0 0-5.537Z" fill="#133629"/>
</g>
<defs>
<clipPath id="gnosis_svg__a">
<path fill="#fff" d="M0 0h85v20H0z"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 20">
<path data-name="-e-logo_top" d="M13.82 10.054h-6.9v2.731h3.191l-.011 3.432a1.456 1.456 0 0 1-.43.319 4 4 0 0 1-.655.267 5.306 5.306 0 0 1-.795.182 5.647 5.647 0 0 1-.861.065 3.012 3.012 0 0 1-2.715-1.424 7.745 7.745 0 0 1-.9-4.063v-2.6a9.439 9.439 0 0 1 .265-2.36 5.76 5.76 0 0 1 .715-1.71 3.229 3.229 0 0 1 1.059-1.047 2.57 2.57 0 0 1 1.324-.357 2.922 2.922 0 0 1 2.191.735 3.762 3.762 0 0 1 .894 2.191h3.628a8.468 8.468 0 0 0-.616-2.458A5.315 5.315 0 0 0 11.9 2.1 5.626 5.626 0 0 0 9.854.936a9.017 9.017 0 0 0-2.84-.4 6.711 6.711 0 0 0-2.774.572 6.354 6.354 0 0 0-2.225 1.664A7.926 7.926 0 0 0 .532 5.431 10.952 10.952 0 0 0 0 8.988v2.575a11.473 11.473 0 0 0 .51 3.556 7.5 7.5 0 0 0 1.45 2.646 6.25 6.25 0 0 0 2.264 1.651 7.406 7.406 0 0 0 2.966.572 11.15 11.15 0 0 0 2.278-.221 10.5 10.5 0 0 0 1.913-.579 7.641 7.641 0 0 0 1.477-.8 5.159 5.159 0 0 0 .98-.871zm2.661 2.783a8.686 8.686 0 0 0 .451 2.854 6.513 6.513 0 0 0 1.317 2.269 5.984 5.984 0 0 0 2.132 1.5 7.277 7.277 0 0 0 2.88.54 7.194 7.194 0 0 0 2.86-.54 5.934 5.934 0 0 0 2.119-1.5 6.6 6.6 0 0 0 1.311-2.269 8.713 8.713 0 0 0 .45-2.854v-.274a8.673 8.673 0 0 0-.45-2.841 6.532 6.532 0 0 0-1.318-2.269 6.078 6.078 0 0 0-2.125-1.508 7.813 7.813 0 0 0-5.74 0 6.082 6.082 0 0 0-2.119 1.508 6.515 6.515 0 0 0-1.317 2.269 8.647 8.647 0 0 0-.451 2.841v.273zm3.681-.273a7.394 7.394 0 0 1 .173-1.625 4.223 4.223 0 0 1 .542-1.352 2.633 2.633 0 0 1 2.357-1.261 2.777 2.777 0 0 1 1.417.338 2.693 2.693 0 0 1 .947.923 4.31 4.31 0 0 1 .536 1.352 7.394 7.394 0 0 1 .173 1.625v.273a7.606 7.606 0 0 1-.173 1.658 4.227 4.227 0 0 1-.536 1.352 2.621 2.621 0 0 1-2.337 1.255 2.818 2.818 0 0 1-1.424-.338 2.758 2.758 0 0 1-.96-.917 4.143 4.143 0 0 1-.542-1.352 7.606 7.606 0 0 1-.173-1.658v-.274zm-1.747-10.3a1.492 1.492 0 0 0 .37.514 1.761 1.761 0 0 0 .57.338 2.207 2.207 0 0 0 1.456 0 1.761 1.761 0 0 0 .57-.338 1.492 1.492 0 0 0 .37-.514 1.593 1.593 0 0 0 0-1.274 1.562 1.562 0 0 0-.37-.52 1.7 1.7 0 0 0-.57-.344 2.206 2.206 0 0 0-1.456 0 1.7 1.7 0 0 0-.57.345 1.562 1.562 0 0 0-.37.52 1.593 1.593 0 0 0 0 1.274zm6.356.013a1.558 1.558 0 0 0 .37.52 1.7 1.7 0 0 0 .57.345 2.207 2.207 0 0 0 1.456 0 1.7 1.7 0 0 0 .57-.345 1.558 1.558 0 0 0 .37-.52 1.593 1.593 0 0 0 .133-.65 1.562 1.562 0 0 0-.133-.637 1.492 1.492 0 0 0-.37-.514 1.762 1.762 0 0 0-.57-.338 2.206 2.206 0 0 0-1.456 0 1.762 1.762 0 0 0-.57.338 1.492 1.492 0 0 0-.37.514 1.546 1.546 0 0 0-.133.637 1.576 1.576 0 0 0 .133.651z" fill="currentColor" fill-rule="evenodd"/>
</svg>
This diff is collapsed.
<svg viewBox="0 0 67 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#poa_svg__a)">
<path opacity=".8" fill-rule="evenodd" clip-rule="evenodd" d="M10.316 15.436h-.938v2.658h-.003l.003.015c0 .492-.42.89-.939.89H.937C.42 19 0 18.602 0 18.11l.003-.015H0V1.932h.003L0 1.917c0-.492.42-.891.937-.891h9.379c4.143 0 7.5 3.226 7.5 7.205 0 3.98-3.357 7.205-7.5 7.205ZM29.07 1.026c5.18 0 9.377 4.024 9.377 8.988 0 4.963-4.198 8.986-9.377 8.986-5.178 0-9.377-4.023-9.377-8.986 0-4.964 4.198-8.988 9.377-8.988ZM60.016 18.43c0 .307-.26.556-.58.556H38.161c-.025.003-.047.014-.073.014a.569.569 0 0 1-.578-.562c0-.123.048-.23.116-.322l-.009-.018L48.178 1.444h.023A.566.566 0 0 1 48.758 1c.28 0 .502.192.557.444h.024L60.016 18.21l-.037.048a.51.51 0 0 1 .037.173Z" fill="#5C34A2"/>
</g>
<defs>
<clipPath id="poa_svg__a">
<path fill="#fff" d="M0 0h66.667v20H0z"/>
</clipPath>
</defs>
</svg>
<svg viewBox="0 0 43 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M42.493 14.318h-2.018l-2.002-3.523-1.066.117v3.406h-1.788V2.498h1.788v6.828l1.018-.1L40.36 5.97h2.002l-2.363 3.907 2.494 4.441ZM31.378 9.351c.913.161 1.562.415 1.944.76.383.345.575.957.575 1.836 0 .88-.277 1.525-.829 1.937-.552.412-1.359.617-2.42.617-.667 0-1.509-.094-2.526-.284l-.509-.083.066-1.519c1.313.178 2.258.267 2.838.267.58 0 .992-.072 1.239-.217.245-.144.368-.384.368-.718 0-.333-.117-.564-.352-.692-.235-.129-.798-.268-1.69-.418-.892-.15-1.544-.386-1.96-.71-.416-.322-.623-.912-.623-1.77 0-.856.287-1.496.86-1.92.575-.423 1.31-.634 2.207-.634.7 0 1.558.09 2.576.268l.508.1-.032 1.519c-1.291-.178-2.226-.268-2.806-.268-.58 0-.982.07-1.206.21-.224.139-.336.359-.336.659 0 .3.123.512.37.634.245.123.825.264 1.738.426Zm-7.587-.86v5.827h-1.788V5.97h1.771v1.002c.93-.612 1.86-1.008 2.79-1.186v1.82c-.942.19-1.745.434-2.412.735l-.361.15ZM18 13.959c0 1.111-.885 2.013-1.977 2.013a1.95 1.95 0 0 1-1.374-.569l-3.716 2.179c.026.131.044.265.044.404C10.977 19.099 10.092 20 9 20s-1.977-.901-1.977-2.014c0-.142.019-.277.046-.41l-3.717-2.174a1.95 1.95 0 0 1-1.374.57C.885 15.972 0 15.07 0 13.959a2.002 2.002 0 0 1 1.438-1.929V7.97A2.002 2.002 0 0 1 0 6.042C0 4.93.885 4.027 1.978 4.027a1.95 1.95 0 0 1 1.471.68L7.11 2.55a2.05 2.05 0 0 1-.079-.534C7.031.901 7.913 0 9 0c1.088 0 1.969.902 1.969 2.015 0 .158-.022.31-.055.456l3.69 2.171a1.953 1.953 0 0 1 1.419-.614c1.092 0 1.977.902 1.977 2.014a2.002 2.002 0 0 1-1.438 1.928v4.06A2.002 2.002 0 0 1 18 13.959Zm-3.89.483a2.028 2.028 0 0 1-.064-.483c0-.138.014-.272.039-.402l-3.372-1.972c-.342.605-.806 1.141-1.166 1.51v2.965c.339.1.638.292.876.544l3.687-2.162ZM9 9.937c.302 0 .547.245.547.548v1.261c.38-.432.816-1.063.816-1.677C10.364 8.986 9 7.848 9 7.848s-1.363 1.14-1.363 2.222c0 .614.437 1.245.816 1.677v-1.261c0-.303.245-.547.547-.547Zm0 8.952c.49 0 .887-.404.887-.903A.895.895 0 0 0 9 17.084a.895.895 0 0 0-.886.902c0 .498.397.903.886.903Zm-1.421-2.288c.239-.254.54-.44.874-.541v-2.965c-.348-.357-.795-.87-1.135-1.451l-3.395 1.991c.017.106.032.213.032.324 0 .168-.026.329-.065.485L7.579 16.6Zm-6.488-2.642c0 .498.397.902.887.902a.894.894 0 0 0 .886-.902.894.894 0 0 0-.886-.903.894.894 0 0 0-.887.903Zm.887-8.82a.894.894 0 0 0-.887.902c0 .5.397.903.887.903a.894.894 0 0 0 .886-.902.894.894 0 0 0-.886-.903Zm1.374 2.346a1.96 1.96 0 0 1-.82.48v4.072c.36.11.68.314.923.595l3.436-2.014a2.37 2.37 0 0 1-.073-.549 2.3 2.3 0 0 1 .067-.518L3.352 7.485ZM7.68 3.502 3.923 5.718c.017.106.032.214.032.325 0 .168-.026.329-.065.485l3.413 1.996c.342-.593.796-1.114 1.15-1.478V3.942a1.976 1.976 0 0 1-.773-.44ZM9 .973a.895.895 0 0 0-.886.903c0 .498.397.903.886.903.49 0 .887-.405.887-.903A.895.895 0 0 0 9 .972Zm5.09 4.65-3.703-2.177c-.23.235-.52.402-.84.498v3.102c.355.364.81.886 1.151 1.48l3.412-2a2.032 2.032 0 0 1-.064-.484c0-.144.016-.283.043-.419Zm.559 1.864-3.532 2.071c.038.17.065.342.065.512 0 .161-.024.322-.059.483l3.466 2.027c.24-.256.543-.443.88-.543V7.965a1.972 1.972 0 0 1-.82-.479Zm2.26-1.444a.894.894 0 0 0-.886-.903.875.875 0 0 0-.682.332l-.147.26a.894.894 0 0 0 .829 1.213c.49 0 .886-.404.886-.903Zm-.886 7.014a.894.894 0 0 0-.886.903c0 .498.396.902.886.902s.886-.404.886-.902a.894.894 0 0 0-.886-.903Z" fill="#27AA8B"/>
</svg>
<svg viewBox="0 0 53 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.522 14.154c-.392 0-.793-.033-1.204-.098a7.78 7.78 0 0 1-1.162-.252 4.695 4.695 0 0 1-.98-.42.974.974 0 0 1-.434-.434 1.084 1.084 0 0 1-.098-.56c.028-.187.098-.35.21-.49a.77.77 0 0 1 .448-.28c.187-.047.392-.014.616.098.383.215.798.373 1.246.476.457.103.91.154 1.358.154.681 0 1.167-.103 1.456-.308.29-.215.434-.48.434-.798a.771.771 0 0 0-.308-.644c-.205-.159-.565-.294-1.078-.406l-1.582-.336c-.896-.187-1.563-.504-2.002-.952-.43-.457-.644-1.055-.644-1.792 0-.467.098-.891.294-1.274.196-.383.471-.714.826-.994s.775-.495 1.26-.644a5.6 5.6 0 0 1 1.624-.224c.523 0 1.036.065 1.54.196.504.121.947.303 1.33.546a.845.845 0 0 1 .378.434.9.9 0 0 1 .07.518.77.77 0 0 1-.21.448.76.76 0 0 1-.434.252c-.177.037-.392-.005-.644-.126a3.955 3.955 0 0 0-.98-.35 5.02 5.02 0 0 0-1.064-.112c-.392 0-.728.051-1.008.154-.27.103-.48.247-.63.434-.14.187-.21.401-.21.644 0 .27.098.49.294.658.196.168.537.303 1.022.406l1.582.336c.915.196 1.596.513 2.044.952.448.43.672.999.672 1.708 0 .467-.093.891-.28 1.274a2.763 2.763 0 0 1-.812.966c-.355.27-.78.48-1.274.63-.495.14-1.05.21-1.666.21Zm6.323-.028c-.346 0-.612-.093-.798-.28-.178-.187-.266-.453-.266-.798V5.082c0-.355.088-.62.266-.798.186-.187.452-.28.798-.28.336 0 .592.093.77.28.186.177.28.443.28.798v3.332h-.196c.214-.457.532-.807.952-1.05.43-.252.914-.378 1.456-.378.55 0 1.003.107 1.358.322.354.205.62.523.798.952.177.42.266.957.266 1.61v3.178c0 .345-.094.611-.28.798-.178.187-.439.28-.784.28-.336 0-.598-.093-.784-.28-.178-.187-.266-.453-.266-.798v-3.08c0-.476-.089-.817-.266-1.022-.168-.215-.43-.322-.784-.322-.448 0-.808.14-1.078.42-.262.28-.392.653-.392 1.12v2.884c0 .719-.35 1.078-1.05 1.078Zm8.326-.014c-.345 0-.611-.098-.798-.294-.177-.205-.266-.49-.266-.854V8.176c0-.373.089-.658.266-.854.187-.205.453-.308.798-.308.336 0 .593.103.77.308.187.196.28.48.28.854v4.788c0 .364-.089.649-.266.854-.177.196-.439.294-.784.294Zm0-8.246c-.392 0-.695-.089-.91-.266-.205-.187-.308-.448-.308-.784 0-.345.103-.607.308-.784.215-.187.518-.28.91-.28s.69.093.896.28c.205.177.308.439.308.784 0 .336-.103.597-.308.784-.205.177-.504.266-.896.266Zm6.924 8.288c-.55 0-1.04-.135-1.47-.406a2.01 2.01 0 0 1-.84-1.106l.154-.462v.868c0 .345-.089.611-.266.798-.177.187-.434.28-.77.28s-.597-.093-.784-.28c-.177-.187-.266-.453-.266-.798V5.082c0-.355.089-.62.266-.798.187-.187.453-.28.798-.28.336 0 .593.093.77.28.187.177.28.443.28.798V8.4h-.168c.15-.42.434-.76.854-1.022.42-.261.9-.392 1.442-.392.607 0 1.134.145 1.582.434.448.29.798.7 1.05 1.232s.378 1.167.378 1.904c0 .737-.126 1.377-.378 1.918-.252.541-.607.957-1.064 1.246-.448.29-.97.434-1.568.434Zm-.63-1.582c.299 0 .56-.075.784-.224.233-.15.41-.369.532-.658.13-.299.196-.677.196-1.134 0-.681-.14-1.18-.42-1.498-.28-.327-.644-.49-1.092-.49-.299 0-.565.07-.798.21-.224.14-.401.36-.532.658-.13.29-.196.663-.196 1.12 0 .681.14 1.19.42 1.526.28.327.649.49 1.106.49Zm7.467 1.582c-.579 0-1.06-.107-1.442-.322a1.972 1.972 0 0 1-.854-.966c-.177-.439-.266-.98-.266-1.624V8.078c0-.355.089-.62.266-.798.187-.177.448-.266.784-.266s.597.089.784.266c.187.177.28.443.28.798v3.22c0 .41.084.719.252.924.168.196.434.294.798.294.401 0 .728-.14.98-.42.261-.29.392-.667.392-1.134V8.078c0-.355.089-.62.266-.798.187-.177.448-.266.784-.266.345 0 .607.089.784.266.187.177.28.443.28.798v4.97c0 .719-.34 1.078-1.022 1.078-.336 0-.593-.093-.77-.28-.177-.187-.266-.453-.266-.798v-.938l.21.546c-.205.476-.5.845-.882 1.106-.383.261-.835.392-1.358.392Zm7.6 2.492a.915.915 0 0 1-.602-.196.775.775 0 0 1-.28-.518c-.028-.205.01-.425.112-.658l.938-2.072v.868l-2.478-5.684a1.357 1.357 0 0 1-.098-.672.756.756 0 0 1 .308-.504c.177-.13.42-.196.728-.196.252 0 .452.06.602.182.158.112.303.331.434.658l1.652 4.2H41.4l1.708-4.214c.13-.317.275-.532.434-.644.168-.121.392-.182.672-.182.242 0 .434.065.574.196a.73.73 0 0 1 .266.49c.037.205 0 .43-.112.672l-3.29 7.462c-.14.317-.299.532-.476.644-.168.112-.383.168-.644.168Zm7.776-2.492c-.504 0-.957-.098-1.358-.294a2.321 2.321 0 0 1-.938-.798 1.998 1.998 0 0 1-.336-1.134c0-.504.13-.9.392-1.19.261-.299.686-.509 1.274-.63.588-.13 1.367-.196 2.338-.196h.742v1.092h-.728c-.476 0-.864.028-1.162.084-.29.047-.5.13-.63.252-.121.121-.182.29-.182.504a.85.85 0 0 0 .266.644c.187.168.453.252.798.252.27 0 .508-.06.714-.182.215-.13.383-.303.504-.518.121-.224.182-.476.182-.756v-1.61c0-.41-.093-.7-.28-.868-.187-.177-.504-.266-.952-.266a3.91 3.91 0 0 0-.826.098 5.52 5.52 0 0 0-.966.294c-.205.093-.387.117-.546.07a.69.69 0 0 1-.364-.28.856.856 0 0 1-.126-.448c0-.168.046-.327.14-.476.093-.159.247-.275.462-.35a6.01 6.01 0 0 1 2.31-.462c.718 0 1.306.107 1.764.322a2.12 2.12 0 0 1 1.05.966c.233.43.35.985.35 1.666v3.108c0 .345-.084.611-.252.798-.168.187-.41.28-.728.28-.317 0-.565-.093-.742-.28-.168-.187-.252-.453-.252-.798v-.518l.098.084a1.799 1.799 0 0 1-1.05 1.358 2.41 2.41 0 0 1-.966.182Z" fill="#000"/>
</svg>
<svg viewBox="0 0 74 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.44 4.331c-1.658.473-4.105 1.461-6.347 3.487-2.253 2.12-.723 4.01-.708 4.03 0 0-.825-1.523 1.172-3.4.025-.021 2.574-2.223 6.28-3.278.473-.135.95-.247 1.42-.334l.033-.006.597-.967-.146.01c-.01.001-.941.071-2.301.458Z" fill="#5928B1"/>
<path d="M14.991 1.62c-.382-.32-.763-.575-.767-.578l-.023-.015-.027.004c-.01 0-1.04.127-2.457.531-2.535.722-5.945 2.204-7.792 5.157-.877 1.34-.17 2.946-.17 2.946l-.022-.409c-.002-.043-.123-4.37 8.746-6.897.777-.221 1.61-.425 2.48-.607l.151-.031-.119-.1Z" fill="#764BC4"/>
<path d="M15.527 2.186c-.011.001-1.178.125-2.804.588-1.72.49-4.225 1.441-6.389 3.185-1.275.99-2.083 2.186-2.215 3.28-.065.534.561 1.667.561 1.667l-.132-.403c-.006-.018-.565-1.851 2.268-3.978 1.587-1.192 3.241-2.008 5.205-2.567 1.013-.288 1.983-.478 3.055-.678l.038-.007.016-.035c.081-.174.468-.935.472-.942l.062-.124-.137.014Z" fill="#764BC4"/>
<path d="M3.13 7.751c.107-1.717 1.407-3.304 3.869-4.718a16.835 16.835 0 0 1 4.31-1.891 15.596 15.596 0 0 1 2.444-.49l-.9-.652c-.009.001-.839.103-2.025.441C3.22 2.608 2.278 6.342 2.36 7.843c.148 2.617 3.23 4.479 3.23 4.479s-2.62-2.012-2.46-4.57Z" fill="#BBA5E1"/>
<path d="M3.224 15.67c1.659-.473 4.106-1.462 6.347-3.487 2.253-2.12.724-4.01.708-4.03 0 0 .825 1.523-1.171 3.399-.026.022-2.574 2.223-6.281 3.279-.473.135-.95.247-1.42.333l-.033.006-.597.967.147-.01c.009 0 .94-.07 2.3-.458Z" fill="#5928B1"/>
<path d="M.673 18.38c.382.32.763.575.767.578l.023.015.027-.004c.01 0 1.04-.128 2.457-.531 2.535-.723 5.945-2.204 7.792-5.157.877-1.341.171-2.946.171-2.946l.021.408c.003.044.124 4.371-8.746 6.898-.777.221-1.61.425-2.48.606l-.151.032.12.1Z" fill="#764BC4"/>
<path d="M.137 17.814c.011-.002 1.178-.126 2.804-.589 1.72-.49 4.226-1.44 6.389-3.184 1.276-.991 2.083-2.187 2.215-3.28.065-.534-.56-1.667-.56-1.667l.13.402c.007.019.566 1.852-2.267 3.979-1.587 1.191-3.241 2.007-5.205 2.567-1.012.288-1.983.477-3.055.678l-.038.007-.016.035c-.081.174-.467.934-.471.942L0 17.828l.137-.014Z" fill="#764BC4"/>
<path d="M12.534 12.25c-.107 1.717-1.407 3.304-3.869 4.717a16.84 16.84 0 0 1-4.309 1.892 15.76 15.76 0 0 1-2.445.49l.9.651a14.67 14.67 0 0 0 2.026-.44c7.607-2.168 8.55-5.902 8.466-7.403-.147-2.617-3.23-4.478-3.23-4.478s2.62 2.011 2.461 4.57Z" fill="#BBA5E1"/>
<path d="M28.754 12.002c0 .316-.04.602-.122.858a2.562 2.562 0 0 1-.32.67 2.11 2.11 0 0 1-.468.494 2.74 2.74 0 0 1-.552.336 2.79 2.79 0 0 1-1.138.253h-6.238v-1.608h6.238c.311 0 .553-.092.724-.275.172-.181.258-.424.258-.729 0-.147-.023-.284-.07-.409a.864.864 0 0 0-.507-.53 1.074 1.074 0 0 0-.405-.074h-3.72c-.26 0-.542-.047-.844-.14a2.574 2.574 0 0 1-.844-.45 2.475 2.475 0 0 1-.647-.81c-.172-.334-.258-.743-.258-1.225 0-.482.086-.89.258-1.223.173-.332.389-.602.647-.81.26-.208.542-.358.844-.452.302-.093.584-.14.844-.14h5.506v1.608h-5.506c-.306 0-.545.094-.717.28-.173.185-.26.43-.26.737 0 .31.087.554.26.734.172.178.41.267.717.267h3.733a2.786 2.786 0 0 1 1.133.275c.193.09.377.204.552.343.173.137.327.302.462.496.136.195.243.418.32.668.08.252.12.537.12.855Zm2.972-6.264v3.626h5.678V5.738h1.616v8.875h-1.616v-3.625h-5.678v3.625H30.11V5.738h1.616Zm10.815 0v8.875h-1.618V5.738h1.618ZM53.33 9.451v1.45a3.84 3.84 0 0 1-.284 1.491 3.536 3.536 0 0 1-.78 1.173 3.591 3.591 0 0 1-1.18.77 3.923 3.923 0 0 1-1.487.278h-4.365a.805.805 0 0 1-.584-.232.776.776 0 0 1-.17-.257.838.838 0 0 1-.06-.322V6.55a.817.817 0 0 1 .23-.576.786.786 0 0 1 .584-.235H49.6c.535 0 1.03.094 1.486.28.457.185.85.441 1.181.769a3.5 3.5 0 0 1 .78 1.177c.19.456.284.952.284 1.487Zm-1.616 1.45V9.45c0-.313-.051-.6-.154-.858a1.85 1.85 0 0 0-.432-.666 1.91 1.91 0 0 0-.669-.427 2.32 2.32 0 0 0-.86-.154h-3.563v5.659h3.563c.315 0 .602-.051.86-.153.26-.1.483-.243.669-.428.187-.183.332-.403.432-.66a2.32 2.32 0 0 0 .154-.864Zm10.534-1.537v1.624h-5.105V9.364h5.105Zm.727 3.64v1.609h-5.832c-.225 0-.47-.04-.735-.119a2.119 2.119 0 0 1-.735-.385 2.178 2.178 0 0 1-.568-.7c-.15-.287-.225-.638-.225-1.054V6.55a.815.815 0 0 1 .233-.576.792.792 0 0 1 .581-.235h7.281v1.608h-6.48v5.01c0 .209.056.369.168.48.113.113.278.169.493.169h5.82Zm10.473-7.266v8.188a.82.82 0 0 1-.064.323.842.842 0 0 1-.175.256.816.816 0 0 1-.575.232.89.89 0 0 1-.303-.055.711.711 0 0 1-.27-.18l-5.907-6.139v6.25h-1.616V6.425c0-.166.046-.315.138-.449a.862.862 0 0 1 .358-.298.805.805 0 0 1 .889.18l5.91 6.13v-6.25h1.615Z" fill="#5928B1"/>
</svg>
<svg viewBox="0 0 101 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M90.748 14.993a.697.697 0 0 1-.488.18.718.718 0 0 1-.505-.18c-.132-.12-.197-.29-.197-.507v-10.9c0-.218.065-.387.197-.507.13-.12.3-.18.505-.18.193 0 .356.06.487.18s.197.29.197.506v10.901c0 .218-.066.386-.197.507Zm-5.142-.318c-.605.355-1.3.532-2.088.532-.787 0-1.48-.177-2.079-.532a3.54 3.54 0 0 1-1.386-1.52c-.325-.657-.487-1.421-.487-2.291 0-.87.162-1.633.487-2.292a3.545 3.545 0 0 1 1.386-1.519c.6-.355 1.292-.532 2.08-.532.786 0 1.482.177 2.087.532A3.52 3.52 0 0 1 87 8.573c.326.658.488 1.421.488 2.291 0 .87-.162 1.634-.488 2.292a3.521 3.521 0 0 1-1.394 1.519ZM85.4 8.504c-.444-.555-1.072-.833-1.882-.833-.81 0-1.437.278-1.882.833-.445.555-.667 1.342-.667 2.36 0 1.03.219 1.82.659 2.369.438.55 1.07.824 1.89.824.822 0 1.452-.272 1.891-.816.44-.543.659-1.335.659-2.377 0-1.018-.223-1.805-.668-2.36Zm-8.137 6.669c-.145 0-.296-.07-.453-.206l-4.385-3.863v3.382c0 .218-.064.386-.193.507a.676.676 0 0 1-.479.18.699.699 0 0 1-.495-.18c-.13-.12-.194-.29-.194-.507v-10.9c0-.218.065-.387.194-.507a.7.7 0 0 1 .495-.18c.19 0 .35.06.48.18.128.12.192.29.192.506v6.97l4.015-3.76a.62.62 0 0 1 .454-.206.59.59 0 0 1 .436.19.617.617 0 0 1 .185.446.69.69 0 0 1-.235.515l-3.309 3.021 3.628 3.227c.18.172.269.355.269.55 0 .171-.059.32-.176.446a.566.566 0 0 1-.429.189Zm-11.525-.498c-.607.355-1.305.532-2.094.532-.79 0-1.485-.177-2.086-.532a3.543 3.543 0 0 1-1.39-1.52c-.327-.657-.49-1.421-.49-2.291 0-.87.163-1.633.49-2.292a3.548 3.548 0 0 1 1.39-1.519c.6-.355 1.296-.532 2.086-.532.79 0 1.487.177 2.094.532a3.53 3.53 0 0 1 1.399 1.52c.326.658.489 1.421.489 2.291 0 .87-.163 1.634-.49 2.292a3.525 3.525 0 0 1-1.398 1.519Zm-.206-6.171c-.446-.555-1.076-.833-1.888-.833-.813 0-1.443.278-1.889.833-.446.555-.67 1.342-.67 2.36 0 1.03.221 1.82.662 2.369.44.55 1.072.824 1.897.824.824 0 1.456-.272 1.896-.816.44-.543.661-1.335.661-2.377 0-1.018-.223-1.805-.67-2.36ZM52.654 9.997c.283.12.689.238 1.22.352.783.172 1.39.36 1.823.567.432.206.74.457.925.755.184.298.276.675.276 1.133 0 .72-.305 1.302-.916 1.742-.61.44-1.417.661-2.42.661a5.917 5.917 0 0 1-1.513-.189 4.627 4.627 0 0 1-1.27-.532 1.695 1.695 0 0 1-.441-.386.73.73 0 0 1-.13-.438c0-.149.044-.271.13-.369a.43.43 0 0 1 .337-.146c.139 0 .34.086.605.257.346.206.689.37 1.029.49.34.12.763.18 1.27.18.623 0 1.107-.108 1.453-.326a1.05 1.05 0 0 0 .518-.944c0-.252-.063-.455-.19-.61-.127-.154-.346-.291-.657-.412-.311-.12-.767-.242-1.366-.368-1.014-.218-1.74-.51-2.178-.876-.438-.366-.657-.864-.657-1.493 0-.493.139-.927.415-1.305.277-.378.66-.675 1.15-.893.49-.217 1.046-.326 1.668-.326.45 0 .884.06 1.305.18.396.11.773.28 1.115.507.392.274.588.56.588.858a.547.547 0 0 1-.285.491.426.426 0 0 1-.182.04c-.138 0-.346-.096-.622-.29a5.527 5.527 0 0 0-.917-.481c-.288-.115-.645-.172-1.07-.172-.543 0-.978.12-1.306.36-.329.24-.493.561-.493.962 0 .252.06.455.181.609.122.154.323.292.605.412ZM40.737 19H20.842l-1.895-6.632h-18c-.93 0-.947-.947-.947-.947V2.895C0 1.083 1.895 1 1.895 1h35.052c1.109 0 1.895 2.842 1.895 2.842l3.79 13.263S42.654 19 40.737 19ZM9.015 3.838h-5.23l1.401 5.696h5.23l-1.4-5.696Zm8.53 0h-5.23l1.402 5.696h5.23l-1.402-5.696ZM29.97 16.153h2.238l-.601-1.884h-2.238l.601 1.884ZM36.23 3.84h-9.701l2.605 9.475h9.701L36.229 3.84Zm2.962 10.43h-2.237l.6 1.884h2.238l-.6-1.884ZM18.474 19H1.894C.056 19 0 17.105 0 17.105v-2.842h17.053L18.473 19Z" fill="#40BFB2"/>
</svg>
<svg viewBox="0 0 78 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.346 5.51 6.368.355A.234.234 0 0 1 6.572 0H9.21a.219.219 0 0 1 .204.12l1.658 2.896a.219.219 0 0 1 0 .233l-1.32 2.262a.234.234 0 0 1-.406 0ZM14.35.355l1.304 2.284a.22.22 0 0 0 .204.098h2.623a.234.234 0 0 0 .204-.354L17.366.121A.24.24 0 0 0 17.178 0H14.54a.234.234 0 0 0-.189.354Zm-3.015 8.602-1.32-2.262a.234.234 0 0 1 0-.241l3.31-5.752a.234.234 0 0 1 .407 0l1.32 2.262a.219.219 0 0 1 0 .233l-3.31 5.737a.233.233 0 0 1-.407.023Zm3.852.701h-2.639a.234.234 0 0 1-.21-.354l3.316-5.737a.219.219 0 0 1 .204-.12h2.638a.241.241 0 0 1 .204.361l-3.31 5.73a.24.24 0 0 1-.203.12Zm1.342 0h5.948a.234.234 0 0 0 .203-.354l-1.32-2.262a.226.226 0 0 0-.225-.143h-3.287a.226.226 0 0 0-.204.12L16.326 9.28a.234.234 0 0 0 .204.377Zm-.79 6.896a.226.226 0 0 0 .119.032h2.638a.233.233 0 0 0 .204-.355l-3.31-5.736a.24.24 0 0 0-.203-.121h-2.639a.234.234 0 0 0-.21.354l3.316 5.737c.02.037.05.068.085.089Zm-5.723-2.984 3.309 5.73a.234.234 0 0 0 .407 0l1.32-2.262a.219.219 0 0 0 0-.234l-3.31-5.737a.234.234 0 0 0-.407 0l-1.32 2.262a.234.234 0 0 0 0 .241Zm7.279 6.397a.242.242 0 0 1-.118.034H14.54a.234.234 0 0 1-.211-.355l1.319-2.261a.24.24 0 0 1 .21-.12h2.64a.233.233 0 0 1 .203.354l-1.32 2.261a.241.241 0 0 1-.085.087ZM9.21 20H6.572a.234.234 0 0 1-.204-.355l2.978-5.126a.234.234 0 0 1 .407 0l1.319 2.262a.219.219 0 0 1 0 .233L9.414 19.88a.219.219 0 0 1-.204.12Zm-3.438-.702 2.97-5.148a.234.234 0 0 0-.203-.355H5.901a.249.249 0 0 0-.204.113L4.04 16.78a.256.256 0 0 0 0 .234l1.319 2.262a.241.241 0 0 0 .414.022Zm15.364-6.196h-3.287a.241.241 0 0 1-.204-.114l-1.319-2.261a.233.233 0 0 1 .204-.354h5.925a.234.234 0 0 1 .204.354l-1.32 2.261a.242.242 0 0 1-.203.114Zm-11.926 0H2.591a.233.233 0 0 1-.203-.347l1.319-2.261a.226.226 0 0 1 .203-.121h6.62a.234.234 0 0 1 .21.354L9.414 12.99a.226.226 0 0 1-.204.113ZM3.707 9.536l-1.32-2.262a.234.234 0 0 1 .204-.354H9.21a.241.241 0 0 1 .211.12l1.32 2.262a.233.233 0 0 1-.212.354H3.91a.226.226 0 0 1-.203-.12Zm-3.679.58 1.35 2.285a.241.241 0 0 0 .384-.023l1.32-2.261a.256.256 0 0 0 0-.234l-1.32-2.261a.241.241 0 0 0-.415 0L.028 9.883a.256.256 0 0 0 0 .234Zm5.67-4.025L4.037 3.22a.256.256 0 0 1 0-.234L5.359.724a.241.241 0 0 1 .414 0l2.97 5.148a.234.234 0 0 1-.203.355H5.901a.249.249 0 0 1-.204-.136Zm28.253 7.915h-1.168a1.46 1.46 0 0 1-1.086-.407 1.448 1.448 0 0 1-.377-1.07V8.835h2.593v-2.05h-2.608v-2.48h-.49l-3.77 3.987v.573h1.72v4.018a3.354 3.354 0 0 0 .904 2.48 3.311 3.311 0 0 0 2.458.905h1.824v-2.262Zm12.74-7.221h2.54l-3.105 9.506h-2.058l-2.149-4.908-2.095 4.908h-2.066l-3.136-9.506h2.6l1.87 5.646 2.465-5.579h.754l2.54 5.594 1.84-5.661Zm13.373 0H58.15l-.294.92a4.523 4.523 0 0 0-3.105-1.161 5.08 5.08 0 0 0-2.548.648 4.62 4.62 0 0 0-1.78 1.794 5.097 5.097 0 0 0-.64 2.548 5.157 5.157 0 0 0 .656 2.593 4.59 4.59 0 0 0 1.779 1.802 5.013 5.013 0 0 0 2.548.656 4.523 4.523 0 0 0 3.083-1.16l.226.843h1.99V6.785Zm-5.612 7.324a2.579 2.579 0 0 1-1.33-.728v.008a2.533 2.533 0 0 1-.755-1.847 2.511 2.511 0 0 1 .754-1.855 2.48 2.48 0 0 1 1.847-.754 2.51 2.51 0 0 1 2.578 2.601 2.578 2.578 0 0 1-3.094 2.575Zm8.07 2.182V3.392h2.563v12.899h-2.563Zm14.662-9.507h-1.922l-.272.95a4.523 4.523 0 0 0-3.113-1.16 5.051 5.051 0 0 0-2.54.648 4.644 4.644 0 0 0-1.787 1.794 5.096 5.096 0 0 0-.641 2.548 5.157 5.157 0 0 0 .64 2.563 4.615 4.615 0 0 0 1.787 1.802 4.98 4.98 0 0 0 2.54.655 4.523 4.523 0 0 0 3.069-1.16l.226.844h2.013V6.784Zm-5.1 7.335a2.668 2.668 0 0 1-1.843-.738v.007a2.54 2.54 0 0 1-.754-1.87 2.52 2.52 0 0 1 .754-1.854 2.457 2.457 0 0 1 1.84-.754 2.488 2.488 0 0 1 1.846.754 2.525 2.525 0 0 1 .754 1.862 2.51 2.51 0 0 1-.754 1.855 2.668 2.668 0 0 1-1.843.738Z" fill="#7A13CE"/>
</svg>
......@@ -12,19 +12,22 @@ import type {
AddressTokenTransferFilters,
AddressTokensFilter,
AddressTokensResponse,
AddressWithdrawalsResponse,
} from 'types/api/address';
import type { AddressesResponse } from 'types/api/addresses';
import type { BlocksResponse, BlockTransactionsResponse, Block, BlockFilters } from 'types/api/block';
import type { BlocksResponse, BlockTransactionsResponse, Block, BlockFilters, BlockWithdrawalsResponse } from 'types/api/block';
import type { ChartMarketResponse, ChartTransactionResponse } from 'types/api/charts';
import type { SmartContract, SmartContractReadMethod, SmartContractWriteMethod, SmartContractVerificationConfig } from 'types/api/contract';
import type { VerifiedContractsResponse, VerifiedContractsFilters, VerifiedContractsCounters } from 'types/api/contracts';
import type { DepositsResponse } from 'types/api/deposits';
import type { IndexingStatus } from 'types/api/indexingStatus';
import type { InternalTransactionsResponse } from 'types/api/internalTransaction';
import type { L2DepositsResponse, L2DepositsItem } from 'types/api/l2Deposits';
import type { L2OutputRootsResponse } from 'types/api/l2OutputRoots';
import type { L2TxnBatchesResponse } from 'types/api/l2TxnBatches';
import type { L2WithdrawalsResponse } from 'types/api/l2Withdrawals';
import type { LogsResponseTx, LogsResponseAddress } from 'types/api/log';
import type { OutputRootsResponse } from 'types/api/outputRoots';
import type { RawTracesResponse } from 'types/api/rawTrace';
import type { SearchResult, SearchResultFilters } from 'types/api/search';
import type { SearchRedirectResult, SearchResult, SearchResultFilters } from 'types/api/search';
import type { Counters, StatsCharts, StatsChart, HomeStats } from 'types/api/stats';
import type {
TokenCounters,
......@@ -37,12 +40,11 @@ import type {
import type { TokensResponse, TokensFilters, TokenInstanceTransferResponse } from 'types/api/tokens';
import type { TokenTransferResponse, TokenTransferFilters } from 'types/api/tokenTransfer';
import type { TransactionsResponseValidated, TransactionsResponsePending, Transaction } from 'types/api/transaction';
import type { TxnBatchesResponse } from 'types/api/txnBatches';
import type { TTxsFilters } from 'types/api/txsFilters';
import type { TxStateChanges } from 'types/api/txStateChanges';
import type { VisualizedContract } from 'types/api/visualization';
import type { WithdrawalsResponse } from 'types/api/withdrawals';
import type ArrayElement from 'types/utils/ArrayElement';
import type { ArrayElement } from 'types/utils';
import appConfig from 'configs/app/config';
......@@ -127,6 +129,12 @@ export const RESOURCES = {
paginationFields: [ 'block_number' as const, 'items_count' as const, 'index' as const ],
filterFields: [],
},
block_withdrawals: {
path: '/api/v2/blocks/:height/withdrawals',
pathParams: [ 'height' as const ],
paginationFields: [ 'items_count' as const, 'index' as const ],
filterFields: [],
},
txs_validated: {
path: '/api/v2/transactions',
paginationFields: [ 'block_number' as const, 'items_count' as const, 'filter' as const, 'index' as const ],
......@@ -167,6 +175,11 @@ export const RESOURCES = {
path: '/api/v2/transactions/:hash/state-changes',
pathParams: [ 'hash' as const ],
},
withdrawals: {
path: '/api/v2/withdrawals',
paginationFields: [ 'index' as const, 'items_count' as const ],
filterFields: [],
},
// ADDRESSES
addresses: {
......@@ -234,6 +247,12 @@ export const RESOURCES = {
paginationFields: [ 'items_count' as const, 'token_name' as const, 'token_type' as const, 'value' as const ],
filterFields: [ 'type' as const ],
},
address_withdrawals: {
path: '/api/v2/addresses/:hash/withdrawals',
pathParams: [ 'hash' as const ],
paginationFields: [ 'items_count' as const, 'index' as const ],
filterFields: [],
},
// CONTRACT
contract: {
......@@ -339,6 +358,9 @@ export const RESOURCES = {
homepage_blocks: {
path: '/api/v2/main-page/blocks',
},
homepage_deposits: {
path: '/api/v2/main-page/optimism-deposits',
},
homepage_txs: {
path: '/api/v2/main-page/transactions',
},
......@@ -372,43 +394,43 @@ export const RESOURCES = {
},
// L2
deposits: {
l2_deposits: {
path: '/api/v2/optimism/deposits',
paginationFields: [ 'nonce' as const, 'items_count' as const ],
filterFields: [],
},
deposits_count: {
l2_deposits_count: {
path: '/api/v2/optimism/deposits/count',
},
withdrawals: {
l2_withdrawals: {
path: '/api/v2/optimism/withdrawals',
paginationFields: [ 'nonce' as const, 'items_count' as const ],
filterFields: [],
},
withdrawals_count: {
l2_withdrawals_count: {
path: '/api/v2/optimism/withdrawals/count',
},
output_roots: {
l2_output_roots: {
path: '/api/v2/optimism/output-roots',
paginationFields: [ 'index' as const, 'items_count' as const ],
filterFields: [],
},
output_roots_count: {
l2_output_roots_count: {
path: '/api/v2/optimism/output-roots/count',
},
txn_batches: {
l2_txn_batches: {
path: '/api/v2/optimism/txn-batches',
paginationFields: [ 'block_number' as const, 'items_count' as const ],
filterFields: [],
},
txn_batches_count: {
l2_txn_batches_count: {
path: '/api/v2/optimism/txn-batches/count',
},
......@@ -471,7 +493,8 @@ export type PaginatedResources = 'blocks' | 'block_txs' |
'token_transfers' | 'token_holders' | 'token_inventory' | 'tokens' |
'token_instance_transfers' |
'verified_contracts' |
'output_roots' | 'withdrawals' | 'txn_batches' | 'deposits';
'l2_output_roots' | 'l2_withdrawals' | 'l2_txn_batches' | 'l2_deposits' |
'withdrawals' | 'address_withdrawals' | 'block_withdrawals';
export type PaginatedResponse<Q extends PaginatedResources> = ResourcePayload<Q>;
......@@ -489,6 +512,7 @@ Q extends 'homepage_chart_txs' ? ChartTransactionResponse :
Q extends 'homepage_chart_market' ? ChartMarketResponse :
Q extends 'homepage_blocks' ? Array<Block> :
Q extends 'homepage_txs' ? Array<Transaction> :
Q extends 'homepage_deposits' ? Array<L2DepositsItem> :
Q extends 'homepage_indexing_status' ? IndexingStatus :
Q extends 'stats_counters' ? Counters :
Q extends 'stats_lines' ? StatsCharts :
......@@ -496,6 +520,7 @@ Q extends 'stats_line' ? StatsChart :
Q extends 'blocks' ? BlocksResponse :
Q extends 'block' ? Block :
Q extends 'block_txs' ? BlockTransactionsResponse :
Q extends 'block_withdrawals' ? BlockWithdrawalsResponse :
Q extends 'txs_validated' ? TransactionsResponseValidated :
Q extends 'txs_pending' ? TransactionsResponsePending :
Q extends 'tx' ? Transaction :
......@@ -515,6 +540,7 @@ Q extends 'address_coin_balance' ? AddressCoinBalanceHistoryResponse :
Q extends 'address_coin_balance_chart' ? AddressCoinBalanceHistoryChart :
Q extends 'address_logs' ? LogsResponseAddress :
Q extends 'address_tokens' ? AddressTokensResponse :
Q extends 'address_withdrawals' ? AddressWithdrawalsResponse :
Q extends 'token' ? TokenInfo :
Q extends 'token_counters' ? TokenCounters :
Q extends 'token_transfers' ? TokenTransferResponse :
......@@ -525,6 +551,7 @@ Q extends 'token_instance_transfers' ? TokenInstanceTransferResponse :
Q extends 'token_inventory' ? TokenInventoryResponse :
Q extends 'tokens' ? TokensResponse :
Q extends 'search' ? SearchResult :
Q extends 'search_check_redirect' ? SearchRedirectResult :
Q extends 'contract' ? SmartContract :
Q extends 'contract_methods_read' ? Array<SmartContractReadMethod> :
Q extends 'contract_methods_read_proxy' ? Array<SmartContractReadMethod> :
......@@ -534,14 +561,15 @@ Q extends 'verified_contracts' ? VerifiedContractsResponse :
Q extends 'verified_contracts_counters' ? VerifiedContractsCounters :
Q extends 'visualize_sol2uml' ? VisualizedContract :
Q extends 'contract_verification_config' ? SmartContractVerificationConfig :
Q extends 'output_roots' ? OutputRootsResponse :
Q extends 'withdrawals' ? WithdrawalsResponse :
Q extends 'deposits' ? DepositsResponse :
Q extends 'txn_batches' ? TxnBatchesResponse :
Q extends 'output_roots_count' ? number :
Q extends 'withdrawals_count' ? number :
Q extends 'deposits_count' ? number :
Q extends 'txn_batches_count' ? number :
Q extends 'l2_output_roots' ? L2OutputRootsResponse :
Q extends 'l2_withdrawals' ? L2WithdrawalsResponse :
Q extends 'l2_deposits' ? L2DepositsResponse :
Q extends 'l2_txn_batches' ? L2TxnBatchesResponse :
Q extends 'l2_output_roots_count' ? number :
Q extends 'l2_withdrawals_count' ? number :
Q extends 'l2_deposits_count' ? number :
Q extends 'l2_txn_batches_count' ? number :
never;
/* eslint-enable @typescript-eslint/indent */
......
......@@ -12,16 +12,7 @@ const MAIN_DOMAINS = [
// eslint-disable-next-line no-restricted-properties
const REPORT_URI = process.env.SENTRY_CSP_REPORT_URI;
function getMarketplaceAppsHosts() {
return {
frames: appConfig.marketplaceAppList.map(({ url }) => new URL(url).host),
logos: appConfig.marketplaceAppList.map(({ logo }) => new URL(logo).host),
};
}
export function app(): CspDev.DirectiveDescriptor {
const marketplaceAppsHosts = getMarketplaceAppsHosts();
return {
'default-src': [
// KEY_WORDS.NONE,
......@@ -111,7 +102,8 @@ export function app(): CspDev.DirectiveDescriptor {
],
'frame-src': [
...marketplaceAppsHosts.frames,
// improve: allow only frames from marketplace config
'*',
],
...(REPORT_URI && !appConfig.isDev ? {
......
export default function getErrorCause(error: Error | undefined): Record<string, unknown> | undefined {
return (
error && 'cause' in error &&
typeof error.cause === 'object' && error.cause !== null &&
error.cause as Record<string, unknown>
) ||
undefined;
}
import getErrorCause from './getErrorCause';
export default function getErrorStatusCode(error: Error | undefined): number | undefined {
return (
error && 'cause' in error &&
typeof error.cause === 'object' && error.cause !== null &&
'status' in error.cause && typeof error.cause.status === 'number' &&
error.cause.status
) ||
undefined;
const cause = getErrorCause(error);
return cause && 'status' in cause && typeof cause.status === 'number' ? cause.status : undefined;
}
import type { ResourceError } from 'lib/api/resources';
import getErrorCause from './getErrorCause';
export default function getResourceErrorPayload<Payload = Record<string, unknown>>(error: Error | undefined): ResourceError<Payload>['payload'] | undefined {
const cause = getErrorCause(error);
return cause && 'payload' in cause ? cause.payload as ResourceError<Payload>['payload'] : undefined;
}
......@@ -64,7 +64,7 @@ export function isInternalItem(item: NavItem): item is NavItemInternal {
}
export default function useNavItems(): ReturnType {
const isMarketplaceFilled = appConfig.marketplaceAppList.length > 0 && appConfig.network.rpcUrl;
const isMarketplaceAvailable = Boolean(appConfig.marketplaceConfigUrl && appConfig.network.rpcUrl);
const hasAPIDocs = appConfig.apiDoc.specUrl;
const router = useRouter();
......@@ -103,16 +103,16 @@ export default function useNavItems(): ReturnType {
[
txs,
// eslint-disable-next-line max-len
{ text: `Deposits (L1${ rightLineArrow }L2)`, nextRoute: { pathname: '/deposits' as const }, icon: depositsIcon, isActive: pathname === '/deposits', isNewUi: true },
{ text: `Deposits (L1${ rightLineArrow }L2)`, nextRoute: { pathname: '/l2-deposits' as const }, icon: depositsIcon, isActive: pathname === '/l2-deposits', isNewUi: true },
// eslint-disable-next-line max-len
{ text: `Withdrawals (L2${ rightLineArrow }L1)`, nextRoute: { pathname: '/withdrawals' as const }, icon: withdrawalsIcon, isActive: pathname === '/withdrawals', isNewUi: true },
{ text: `Withdrawals (L2${ rightLineArrow }L1)`, nextRoute: { pathname: '/l2-withdrawals' as const }, icon: withdrawalsIcon, isActive: pathname === '/l2-withdrawals', isNewUi: true },
],
[
blocks,
// eslint-disable-next-line max-len
{ text: 'Txn batches', nextRoute: { pathname: '/txn-batches' as const }, icon: txnBatchIcon, isActive: pathname === '/txn-batches', isNewUi: true },
{ text: 'Txn batches', nextRoute: { pathname: '/l2-txn-batches' as const }, icon: txnBatchIcon, isActive: pathname === '/l2-txn-batches', isNewUi: true },
// eslint-disable-next-line max-len
{ text: 'Output roots', nextRoute: { pathname: '/output-roots' as const }, icon: outputRootsIcon, isActive: pathname === '/output-roots', isNewUi: true },
{ text: 'Output roots', nextRoute: { pathname: '/l2-output-roots' as const }, icon: outputRootsIcon, isActive: pathname === '/l2-output-roots', isNewUi: true },
],
[
topAccounts,
......@@ -125,7 +125,14 @@ export default function useNavItems(): ReturnType {
blocks,
topAccounts,
verifiedContracts,
];
appConfig.beaconChain.hasBeaconChain && {
text: 'Withdrawals',
nextRoute: { pathname: '/withdrawals' as const },
icon: withdrawalsIcon,
isActive: pathname === '/withdrawals',
isNewUi: true,
},
].filter(Boolean);
}
const otherNavItems: Array<NavItem> = [
......@@ -170,7 +177,7 @@ export default function useNavItems(): ReturnType {
isActive: pathname.startsWith('/token'),
isNewUi: true,
},
isMarketplaceFilled ? {
isMarketplaceAvailable ? {
text: 'Apps',
nextRoute: { pathname: '/apps' as const },
icon: appsIcon,
......@@ -234,5 +241,5 @@ export default function useNavItems(): ReturnType {
};
return { mainNavItems, accountNavItems, profileItem };
}, [ hasAPIDocs, isMarketplaceFilled, pathname ]);
}, [ hasAPIDocs, isMarketplaceAvailable, pathname ]);
}
import type { FeaturedNetwork } from 'types/networks';
import appConfig from 'configs/app/config';
import ASSETS from 'lib/networks/networkAssets';
// for easy .env.example update
// const FEATURED_NETWORKS = JSON.stringify([
// {
// title: 'Ethereum',
// url: 'https://blockscout.com/eth/mainnet',
// group: 'mainnets',
// type: 'eth_mainnet',
// },
// {
// title: 'Ethereum Classic',
// url: 'https://blockscout.com/etx/mainnet',
// group: 'mainnets',
// type: 'etc_mainnet',
// },
// {
// title: 'Gnosis Chain',
// url: 'https://blockscout.com/xdai/mainnet',
// group: 'mainnets',
// type: 'xdai_mainnet',
// },
// {
// title: 'Astar (EVM)',
// url: 'https://blockscout.com/astar',
// group: 'mainnets',
// type: 'astar',
// },
// {
// title: 'Shiden (EVM)',
// url: 'https://blockscout.com/shiden',
// group: 'mainnets',
// type: 'astar',
// },
// {
// title: 'Klaytn Mainnet (Cypress)',
// url: 'https://klaytn-mainnet.aws-k8s.blockscout.com/',
// group: 'mainnets',
// type: 'klaytn',
// },
// {
// title: 'Goerli',
// url: 'https://blockscout.com/eth/goerli/',
// group: 'testnets',
// type: 'goerli',
// },
// {
// title: 'Optimism Goerli',
// url: 'https://blockscout.com/optimism/goerli/',
// group: 'testnets',
// type: 'optimism_goerli',
// },
// {
// title: 'Optimism Bedrock Alpha',
// url: 'https://blockscout.com/optimism/bedrock-alpha',
// group: 'testnets',
// type: 'optimism_bedrock_alpha',
// },
// {
// title: 'Gnosis Chiado',
// url: 'https://blockscout.com/gnosis/chiado/',
// group: 'testnets',
// type: 'gnosis_chiado',
// },
// {
// title: 'Shibuya (EVM)',
// url: 'https://blockscout.com/shibuya',
// group: 'testnets',
// type: 'shibuya',
// },
// {
// title: 'Optimism Opcraft',
// url: 'https://blockscout.com/optimism/opcraft',
// group: 'other',
// type: 'optimism_opcraft',
// },
// {
// title: 'Optimism on Gnosis Chain',
// url: 'https://blockscout.com/xdai/optimism',
// group: 'other',
// type: 'optimism_gnosis',
// },
// {
// title: 'ARTIS-Σ1',
// url: 'https://blockscout.com/artis/sigma1',
// group: 'other',
// type: 'artis_sigma1',
// },
// {
// title: 'LUKSO L14',
// url: 'https://blockscout.com/lukso/l14',
// group: 'other',
// type: 'lukso_l14',
// },
// {
// title: 'POA',
// url: 'https://blockscout.com/poa/core',
// group: 'other',
// type: 'poa_core',
// },
// {
// title: 'POA Sokol',
// url: 'https://blockscout.com/poa/sokol',
// group: 'other',
// type: 'poa_sokol',
// },
// ]).replaceAll('"', '\'');
const featuredNetworks: Array<FeaturedNetwork> = (() => {
return appConfig.featuredNetworks.map((network) => ({
...network,
icon: network.icon || (network.type ? ASSETS[network.type]?.icon : undefined),
}));
})();
export default featuredNetworks;
import type React from 'react';
import type { PreDefinedNetwork } from 'types/networks';
import arbitrumIcon from 'icons/networks/icons/arbitrum.svg';
import artisIcon from 'icons/networks/icons/artis.svg';
import baseIcon from 'icons/networks/icons/base.svg';
import ethereumClassicIcon from 'icons/networks/icons/ethereum-classic.svg';
import ethereumIcon from 'icons/networks/icons/ethereum.svg';
import gnosisIcon from 'icons/networks/icons/gnosis.svg';
import goerliIcon from 'icons/networks/icons/goerli.svg';
import optimismIcon from 'icons/networks/icons/optimism.svg';
import poaSokolIcon from 'icons/networks/icons/poa-sokol.svg';
import poaIcon from 'icons/networks/icons/poa.svg';
import rskIcon from 'icons/networks/icons/rsk.svg';
import artisLogo from 'icons/networks/logos/artis.svg';
import astarLogo from 'icons/networks/logos/astar.svg';
import baseLogo from 'icons/networks/logos/base.svg';
import etcLogo from 'icons/networks/logos/etc.svg';
import ethLogo from 'icons/networks/logos/eth.svg';
import gnosisLogo from 'icons/networks/logos/gnosis.svg';
import goerliLogo from 'icons/networks/logos/goerli.svg';
import luksoLogo from 'icons/networks/logos/lukso.svg';
import poaLogo from 'icons/networks/logos/poa.svg';
import rskLogo from 'icons/networks/logos/rsk.svg';
import shibuyaLogo from 'icons/networks/logos/shibuya.svg';
import shidenLogo from 'icons/networks/logos/shiden.svg';
import sokolLogo from 'icons/networks/logos/sokol.svg';
interface NetworkAssets {
icon?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
logo?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
smallLogo?: React.FunctionComponent<React.SVGAttributes<SVGElement>>;
}
const networkAssets: Partial<Record<PreDefinedNetwork, NetworkAssets>> = {
xdai_mainnet: {
icon: gnosisIcon,
logo: gnosisLogo,
},
xdai_optimism: {
icon: optimismIcon,
},
xdai_aox: {
icon: arbitrumIcon,
},
eth_mainnet: {
icon: ethereumIcon,
logo: ethLogo,
},
etc_mainnet: {
icon: ethereumClassicIcon,
logo: etcLogo,
},
poa_core: {
icon: poaIcon,
logo: poaLogo,
},
rsk_mainnet: {
icon: rskIcon,
logo: rskLogo,
},
xdai_testnet: {
icon: arbitrumIcon,
logo: gnosisLogo,
},
poa_sokol: {
icon: poaSokolIcon,
logo: sokolLogo,
},
artis_sigma1: {
icon: artisIcon,
logo: artisLogo,
},
lukso_l14: {
logo: luksoLogo,
},
astar: {
logo: astarLogo,
},
shiden: {
logo: shidenLogo,
},
shibuya: {
logo: shibuyaLogo,
},
goerli: {
logo: goerliLogo,
icon: goerliIcon,
},
base_goerli: {
logo: baseLogo,
icon: baseIcon,
},
};
export default networkAssets;
import React from 'react';
import appConfig from 'configs/app/config';
import featuredNetworks from 'lib/networks/featuredNetworks';
export default function useNetworkNavigationItems() {
return React.useMemo(() => {
return featuredNetworks.map((network) => {
return {
...network,
isActive: network.type ? appConfig.network.type === network.type : false,
};
});
}, []);
}
import type { GetServerSideProps } from 'next';
import appConfig from 'configs/app/config';
import type { Props } from 'lib/next/getServerSideProps';
import { getServerSideProps as getServerSidePropsBase } from 'lib/next/getServerSideProps';
export const getServerSideProps: GetServerSideProps<Props> = async(args) => {
if (!appConfig.beaconChain.hasBeaconChain) {
return {
notFound: true,
};
}
return getServerSidePropsBase(args);
};
const old = Number.prototype.toLocaleString;
Number.prototype.toLocaleString = function(locale, ...args) {
return old.call(this, 'en', ...args);
};
export {};
......@@ -3,6 +3,7 @@ import type { Channel } from 'phoenix';
import type { AddressCoinBalanceHistoryItem } from 'types/api/address';
import type { NewBlockSocketResponse } from 'types/api/block';
import type { SmartContractVerificationResponse } from 'types/api/contract';
import type { RawTracesResponse } from 'types/api/rawTrace';
import type { TokenTransfer } from 'types/api/tokenTransfer';
import type { Transaction } from 'types/api/transaction';
......@@ -10,8 +11,10 @@ export type SocketMessageParams = SocketMessage.NewBlock |
SocketMessage.BlocksIndexStatus |
SocketMessage.InternalTxsIndexStatus |
SocketMessage.TxStatusUpdate |
SocketMessage.TxRawTrace |
SocketMessage.NewTx |
SocketMessage.NewPendingTx |
SocketMessage.NewDeposits |
SocketMessage.AddressBalance |
SocketMessage.AddressCurrentCoinBalance |
SocketMessage.AddressTokenBalance |
......@@ -19,7 +22,9 @@ SocketMessage.AddressCoinBalance |
SocketMessage.AddressTxs |
SocketMessage.AddressTxsPending |
SocketMessage.AddressTokenTransfer |
SocketMessage.AddressChangedBytecode |
SocketMessage.TokenTransfers |
SocketMessage.TokenTotalSupply |
SocketMessage.ContractVerification |
SocketMessage.Unknown;
......@@ -35,8 +40,10 @@ export namespace SocketMessage {
export type BlocksIndexStatus = SocketMessageParamsGeneric<'block_index_status', {finished: boolean; ratio: string}>;
export type InternalTxsIndexStatus = SocketMessageParamsGeneric<'internal_txs_index_status', {finished: boolean; ratio: string}>;
export type TxStatusUpdate = SocketMessageParamsGeneric<'collated', NewBlockSocketResponse>;
export type TxRawTrace = SocketMessageParamsGeneric<'raw_trace', RawTracesResponse>;
export type NewTx = SocketMessageParamsGeneric<'transaction', { transaction: number }>;
export type NewPendingTx = SocketMessageParamsGeneric<'pending_transaction', { pending_transaction: number }>;
export type NewDeposits = SocketMessageParamsGeneric<'deposits', { deposits: number }>;
export type AddressBalance = SocketMessageParamsGeneric<'balance', { balance: string; block_number: number; exchange_rate: string }>;
export type AddressCurrentCoinBalance =
SocketMessageParamsGeneric<'current_coin_balance', { coin_balance: string; block_number: number; exchange_rate: string }>;
......@@ -45,7 +52,9 @@ export namespace SocketMessage {
export type AddressTxs = SocketMessageParamsGeneric<'transaction', { transaction: Transaction }>;
export type AddressTxsPending = SocketMessageParamsGeneric<'pending_transaction', { transaction: Transaction }>;
export type AddressTokenTransfer = SocketMessageParamsGeneric<'token_transfer', { token_transfer: TokenTransfer }>;
export type AddressChangedBytecode = SocketMessageParamsGeneric<'changed_bytecode', Record<string, never>>;
export type TokenTransfers = SocketMessageParamsGeneric<'token_transfer', {token_transfer: number }>;
export type TokenTotalSupply = SocketMessageParamsGeneric<'total_supply', {total_supply: number }>;
export type ContractVerification = SocketMessageParamsGeneric<'verification_result', SmartContractVerificationResponse>;
export type Unknown = SocketMessageParamsGeneric<undefined, unknown>;
}
......@@ -6,12 +6,12 @@ export default function getConfirmationString(durations: Array<number>) {
const [ lower, upper ] = durations.map((time) => time / 1_000);
if (!upper) {
return `Confirmed within ${ lower } secs`;
return `Confirmed within ${ lower.toLocaleString() } secs`;
}
if (lower === 0) {
return `Confirmed within <= ${ upper } secs`;
return `Confirmed within <= ${ upper.toLocaleString() } secs`;
}
return `Confirmed within ${ lower } - ${ upper } secs`;
return `Confirmed within ${ lower.toLocaleString() } - ${ upper.toLocaleString() } secs`;
}
......@@ -28,7 +28,7 @@ export function middleware(req: NextRequest) {
const end = Date.now();
const res = NextResponse.next();
res.headers.append(appConfig.isDev ? 'Content-Security-Policy' : 'Content-Security-Policy-Report-Only', cspPolicy);
res.headers.append('Content-Security-Policy', cspPolicy);
res.headers.append('Server-Timing', `middleware;dur=${ end - start }`);
return res;
......
......@@ -36,6 +36,7 @@ export const token: Address = {
name: null,
private_tags: [],
watchlist_names: [],
watchlist_address_id: null,
public_tags: [],
token: tokenInfo,
block_number_balance_updated_at: 8201413,
......@@ -84,6 +85,7 @@ export const contract: Address = {
public_tags: [ privateTag ],
token: null,
watchlist_names: [ watchlistName ],
watchlist_address_id: 42,
};
export const validator: Address = {
......@@ -113,4 +115,5 @@ export const validator: Address = {
public_tags: [],
token: null,
watchlist_names: [],
watchlist_address_id: null,
};
import type { FeaturedNetwork } from 'types/networks';
const FEATURED_NETWORKS: Array<FeaturedNetwork> = [
{ title: 'Gnosis Chain', url: 'https://blockscout.com/xdai/mainnet', group: 'mainnets', type: 'xdai_mainnet' },
{ title: 'Optimism on Gnosis Chain', url: 'https://blockscout.com/xdai/optimism', group: 'mainnets', type: 'xdai_optimism' },
{ title: 'Arbitrum on xDai', url: 'https://blockscout.com/xdai/aox', group: 'mainnets' },
{ title: 'Ethereum', url: 'https://blockscout.com/eth/mainnet', group: 'mainnets', type: 'eth_mainnet' },
{ title: 'Ethereum Classic', url: 'https://blockscout.com/etx/mainnet', group: 'mainnets', type: 'etc_mainnet', icon: 'https://example.com/my-logo.png' },
{ title: 'POA', url: 'https://blockscout.com/poa/core', group: 'mainnets', type: 'poa_core' },
{ title: 'RSK', url: 'https://blockscout.com/rsk/mainnet', group: 'mainnets', type: 'rsk_mainnet' },
{ title: 'Gnosis Chain Testnet', url: 'https://blockscout.com/xdai/testnet', group: 'testnets', type: 'xdai_testnet' },
{ title: 'POA Sokol', url: 'https://blockscout.com/poa/sokol', group: 'testnets', type: 'poa_sokol' },
{ title: 'ARTIS Σ1', url: 'https://blockscout.com/artis/sigma1', group: 'other', type: 'artis_sigma1' },
{ title: 'LUKSO L14', url: 'https://blockscout.com/lukso/l14', group: 'other', type: 'lukso_l14' },
{ title: 'Astar', url: 'https://blockscout.com/astar', group: 'other', type: 'astar' },
{ title: 'Gnosis Chain', url: 'https://blockscout.com/xdai/mainnet', group: 'Mainnets', isActive: true },
{ title: 'Arbitrum on xDai', url: 'https://blockscout.com/xdai/aox', group: 'Mainnets' },
{ title: 'Ethereum', url: 'https://blockscout.com/eth/mainnet', group: 'Mainnets' },
{ title: 'Ethereum Classic', url: 'https://blockscout.com/etx/mainnet', group: 'Mainnets', icon: 'https://localhost:3000/my-logo.png' },
{ title: 'POA', url: 'https://blockscout.com/poa/core', group: 'Mainnets' },
{ title: 'RSK', url: 'https://blockscout.com/rsk/mainnet', group: 'Mainnets' },
{ title: 'Gnosis Chain Testnet', url: 'https://blockscout.com/xdai/testnet', group: 'Testnets' },
{ title: 'POA Sokol', url: 'https://blockscout.com/poa/sokol', group: 'Testnets' },
{ title: 'ARTIS Σ1', url: 'https://blockscout.com/artis/sigma1', group: 'Other' },
{ title: 'LUKSO L14', url: 'https://blockscout.com/lukso/l14', group: 'Other' },
{ title: 'Astar', url: 'https://blockscout.com/astar', group: 'Other' },
];
export const FEATURED_NETWORKS_MOCK = JSON.stringify(FEATURED_NETWORKS).replaceAll('"', '\'');
export const FEATURED_NETWORKS_MOCK = JSON.stringify(FEATURED_NETWORKS);
......@@ -8,7 +8,12 @@ export const verified: Partial<SmartContract> = {
constructor_args: 'constructor_args',
creation_bytecode: 'creation_bytecode',
deployed_bytecode: 'deployed_bytecode',
compiler_settings: 'compiler_settings',
compiler_settings: {
evmVersion: 'london',
remappings: [
'@openzeppelin/=node_modules/@openzeppelin/',
],
},
evm_version: 'default',
is_verified: true,
name: 'WPOA',
......
export const data = {
items: [
{
challenge_period_end: null,
from: {
hash: '0x67aab90c548b284be30b05c376001b4db90b87ba',
implementation_name: null,
is_contract: false,
is_verified: false,
name: null,
private_tags: [],
public_tags: [],
watchlist_names: [],
},
l1_tx_hash: '0x1a235bee32ac10cb7efdad98415737484ca66386e491cde9e17d42b136dca684',
l2_timestamp: '2022-02-15T12:50:02.000000Z',
l2_tx_hash: '0x918cd8c5c24c17e06cd02b0379510c4ad56324bf153578fb9caaaa2fe4e7dc35',
msg_nonce: 396,
msg_nonce_raw: '1766847064778384329583297500742918515827483896875618958121606201292620172',
msg_nonce_version: 1,
status: 'Ready to prove',
},
{
challenge_period_end: null,
from: null,
l1_tx_hash: null,
l2_timestamp: null,
l2_tx_hash: '0x2f117bee32ac10cb7efdad98415737484ca66386e491cde9e17d42b136def593',
msg_nonce: 391,
msg_nonce_raw: '1766847064778384329583297500742918515827483896875618958121606201292620167',
msg_nonce_version: 1,
status: 'Ready to prove',
},
{
challenge_period_end: '2022-11-11T12:50:02.000000Z',
from: null,
l1_tx_hash: null,
l2_timestamp: null,
l2_tx_hash: '0xe14b1f46838176702244a5343629bcecf728ca2d9881d47b4ce46e00c387d7e3',
msg_nonce: 390,
msg_nonce_raw: '1766847064778384329583297500742918515827483896875618958121606201292620166',
msg_nonce_version: 1,
status: 'Ready for relay',
},
],
next_page_params: {
items_count: 50,
nonce: '1766847064778384329583297500742918515827483896875618958121606201292620123',
},
};
......@@ -85,7 +85,7 @@ export const erc721: TokenTransfer = {
method: 'updateSmartAsset',
};
export const erc1155: TokenTransfer = {
export const erc1155A: TokenTransfer = {
from: {
hash: '0x0000000000000000000000000000000000000000',
implementation_name: null,
......@@ -128,26 +128,44 @@ export const erc1155: TokenTransfer = {
log_index: '1',
};
export const erc1155multiple: TokenTransfer = {
...erc1155,
export const erc1155B: TokenTransfer = {
...erc1155A,
token: {
...erc1155.token,
...erc1155A.token,
name: 'SastanaNFT',
symbol: 'ipfs://QmUpFUfVKDCWeZQk5pvDFUxnpQP9N6eLSHhNUy49T1JVtY',
},
total: [
{ token_id: '12345678', value: '100000000000000000000', decimals: null },
{ token_id: '483200961027732618117991942553110860267520', value: '200000000000000000000', decimals: null },
{ token_id: '456', value: '42', decimals: null },
],
total: { token_id: '12345678', value: '100000000000000000000', decimals: null },
};
export const erc1155C: TokenTransfer = {
...erc1155A,
token: {
...erc1155A.token,
name: 'SastanaNFT',
symbol: 'ipfs://QmUpFUfVKDCWeZQk5pvDFUxnpQP9N6eLSHhNUy49T1JVtY',
},
total: { token_id: '483200961027732618117991942553110860267520', value: '200000000000000000000', decimals: null },
};
export const erc1155D: TokenTransfer = {
...erc1155A,
token: {
...erc1155A.token,
name: 'SastanaNFT',
symbol: 'ipfs://QmUpFUfVKDCWeZQk5pvDFUxnpQP9N6eLSHhNUy49T1JVtY',
},
total: { token_id: '456', value: '42', decimals: null },
};
export const mixTokens: TokenTransferResponse = {
items: [
erc20,
erc721,
erc1155,
erc1155multiple,
erc1155A,
erc1155B,
erc1155C,
erc1155D,
],
next_page_params: null,
};
......@@ -39,5 +39,11 @@ export const withIndexedFields: DecodedInput = {
type: 'uint256',
value: '31567373703130350',
},
{
indexed: true,
name: 'inputArray',
type: 'uint256[2][2]',
value: [ [ '1', '1' ], [ '1', '1' ] ],
},
],
};
......@@ -100,8 +100,10 @@ export const withTokenTransfer: Transaction = {
token_transfers: [
tokenTransferMock.erc20,
tokenTransferMock.erc721,
tokenTransferMock.erc1155,
tokenTransferMock.erc1155multiple,
tokenTransferMock.erc1155A,
tokenTransferMock.erc1155B,
tokenTransferMock.erc1155C,
tokenTransferMock.erc1155D,
],
tx_types: [
'token_transfer',
......@@ -240,3 +242,11 @@ export const withActionsUniswap: Transaction = {
},
],
};
export const l2tx: Transaction = {
...base,
l1_gas_price: '82702201886',
l1_fee_scalar: '1.0',
l1_gas_used: '17060',
l1_fee: '1584574188135760',
};
export const data = {
items: [
{
challenge_period_end: null,
from: {
hash: '0x67aab90c548b284be30b05c376001b4db90b87ba',
amount: '192175',
block_number: 43242,
index: 11688,
receiver: {
hash: '0xf97e180c050e5Ab072211Ad2C213Eb5AEE4DF134',
implementation_name: null,
is_contract: false,
is_verified: false,
is_verified: null,
name: null,
private_tags: [],
public_tags: [],
watchlist_names: [],
},
l1_tx_hash: '0x1a235bee32ac10cb7efdad98415737484ca66386e491cde9e17d42b136dca684',
l2_timestamp: '2022-02-15T12:50:02.000000Z',
l2_tx_hash: '0x918cd8c5c24c17e06cd02b0379510c4ad56324bf153578fb9caaaa2fe4e7dc35',
msg_nonce: 396,
msg_nonce_raw: '1766847064778384329583297500742918515827483896875618958121606201292620172',
msg_nonce_version: 1,
status: 'Ready to prove',
timestamp: '2022-06-07T18:12:24.000000Z',
validator_index: 49622,
},
{
challenge_period_end: null,
from: null,
l1_tx_hash: null,
l2_timestamp: null,
l2_tx_hash: '0x2f117bee32ac10cb7efdad98415737484ca66386e491cde9e17d42b136def593',
msg_nonce: 391,
msg_nonce_raw: '1766847064778384329583297500742918515827483896875618958121606201292620167',
msg_nonce_version: 1,
status: 'Ready to prove',
amount: '192175',
block_number: 43242,
index: 11687,
receiver: {
hash: '0xf97e987c050e5Ab072211Ad2C213Eb5AEE4DF134',
implementation_name: null,
is_contract: false,
is_verified: null,
name: null,
},
timestamp: '2022-05-07T18:12:24.000000Z',
validator_index: 49621,
},
{
challenge_period_end: '2022-11-11T12:50:02.000000Z',
from: null,
l1_tx_hash: null,
l2_timestamp: null,
l2_tx_hash: '0xe14b1f46838176702244a5343629bcecf728ca2d9881d47b4ce46e00c387d7e3',
msg_nonce: 390,
msg_nonce_raw: '1766847064778384329583297500742918515827483896875618958121606201292620166',
msg_nonce_version: 1,
status: 'Ready for relay',
amount: '182773',
block_number: 43242,
index: 11686,
receiver: {
hash: '0xf97e123c050e5Ab072211Ad2C213Eb5AEE4DF134',
implementation_name: null,
is_contract: false,
is_verified: null,
name: null,
},
timestamp: '2022-04-07T18:12:24.000000Z',
validator_index: 49620,
},
],
next_page_params: {
index: 11639,
items_count: 50,
nonce: '1766847064778384329583297500742918515827483896875618958121606201292620123',
},
};
......@@ -16,6 +16,7 @@
"build": "next build",
"build:docker": "docker build --build-arg GIT_COMMIT_SHA=$(git rev-parse HEAD) -t blockscout ./",
"start": "next start",
"start:docker:local": "docker run -p 3000:3000 --env-file .env.local blockscout",
"start:docker:poa_core": "docker run -p 3000:3000 --env-file ./configs/envs/.env.common --env-file ./configs/envs/.env.poa_core --env-file ./configs/envs/.env.secrets blockscout",
"lint:eslint": "./node_modules/.bin/eslint . --ext .js,.jsx,.ts,.tsx",
"lint:eslint:fix": "./node_modules/.bin/eslint . --ext .js,.jsx,.ts,.tsx --fix",
......@@ -24,7 +25,7 @@
"format-svg": "./node_modules/.bin/svgo -r ./icons",
"test:pw": "./playwright/make-envs-script.sh && NODE_OPTIONS=\"--max-old-space-size=4096\" playwright test -c playwright-ct.config.ts",
"test:pw:local": "export NODE_PATH=$(pwd)/node_modules && rm -rf ./playwright/.cache && yarn test:pw",
"test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.31.0-focal ./playwright/run-tests.sh",
"test:pw:docker": "docker run --rm --network host -v $(pwd):/work/ -w /work/ -it mcr.microsoft.com/playwright:v1.32.0-focal ./playwright/run-tests.sh",
"test:jest": "jest",
"test:jest:watch": "jest --watch"
},
......@@ -57,7 +58,7 @@
"js-cookie": "^3.0.1",
"lodash": "^4.0.0",
"monaco-editor": "^0.34.1",
"next": "12.2.5",
"next": "13.3.0",
"nextjs-routes": "^1.0.8",
"node-fetch": "^3.2.9",
"papaparse": "^5.3.2",
......@@ -78,7 +79,7 @@
"wagmi": "^0.10.6"
},
"devDependencies": {
"@playwright/experimental-ct-react": "1.31.0",
"@playwright/experimental-ct-react": "1.32.3",
"@svgr/webpack": "^6.5.1",
"@testing-library/react": "^13.4.0",
"@total-typescript/ts-reset": "^0.3.7",
......@@ -99,7 +100,7 @@
"css-loader": "^6.7.3",
"dotenv-cli": "^6.0.0",
"eslint": "^8.32.0",
"eslint-config-next": "^12.3.0",
"eslint-config-next": "13.3.0",
"eslint-plugin-es5": "^1.5.0",
"eslint-plugin-import-helpers": "^1.2.1",
"eslint-plugin-jest": "^27.1.6",
......@@ -112,7 +113,7 @@
"lint-staged": ">=10",
"mockdate": "^3.0.5",
"next-transpile-modules": "^10.0.0",
"playwright": "1.31.0",
"playwright": "1.32.3",
"style-loader": "^3.3.1",
"svgo": "^2.8.0",
"ts-jest": "^29.0.3",
......
......@@ -17,6 +17,8 @@ import AppError from 'ui/shared/AppError/AppError';
import ErrorBoundary from 'ui/shared/ErrorBoundary';
import GoogleAnalytics from 'ui/shared/GoogleAnalytics';
import 'lib/setLocale';
function MyApp({ Component, pageProps }: AppProps) {
useConfigSentry();
const [ queryClient ] = useState(() => new QueryClient({
......
import type { NextPage } from 'next';
import Head from 'next/head';
import { useRouter } from 'next/router';
import React, { useEffect, useState } from 'react';
import React from 'react';
import type { AppItemOverview } from 'types/client/apps';
import appConfig from 'configs/app/config';
import { apos } from 'lib/html-entities';
import EmptySearchResult from 'ui/apps/EmptySearchResult';
import MarketplaceApp from 'ui/pages/MarketplaceApp';
import Page from 'ui/shared/Page/Page';
const AppPage: NextPage = () => {
const router = useRouter();
const [ isLoading, setIsLoading ] = useState(true);
const [ app, setApp ] = useState<AppItemOverview | undefined>(undefined);
const id = router.query.id;
useEffect(() => {
if (!id) {
return;
}
const app = appConfig.marketplaceAppList.find((app) => app.id === id);
setApp(app);
setIsLoading(false);
}, [ id ]);
if (app || isLoading) {
return (
<>
<Head><title>{ app ? `Blockscout | ${ app.title }` : 'Loading app..' }</title></Head>
<MarketplaceApp app={ app } isLoading={ isLoading }/>
</>
);
}
return (
<Page>
<Head><title>Blockscout | No app found</title></Head>
<EmptySearchResult text={ `Couldn${ apos }t find an app.` }/>
<Page wrapChildren={ false }>
<Head><title>Blockscout | Marketplace</title></Head>
<MarketplaceApp/>
</Page>
);
};
......
......@@ -10,7 +10,7 @@ const AppsPage: NextPage = () => {
return (
<Page>
<PageTitle text="Apps"/>
<Head><title>Apps</title></Head>
<Head><title>Blockscout | Marketplace</title></Head>
<Apps/>
</Page>
......
......@@ -5,6 +5,7 @@ import React from 'react';
import getSeo from 'lib/next/block/getSeo';
import Block from 'ui/pages/Block';
import Page from 'ui/shared/Page/Page';
const BlockPage: NextPage<RoutedQuery<'/block/[height]'>> = ({ height }: RoutedQuery<'/block/[height]'>) => {
const { title, description } = getSeo({ height });
......@@ -14,7 +15,9 @@ const BlockPage: NextPage<RoutedQuery<'/block/[height]'>> = ({ height }: RoutedQ
<title>{ title }</title>
<meta name="description" content={ description }/>
</Head>
<Page>
<Block/>
</Page>
</>
);
};
......
import type { NextPage } from 'next';
import type { GetServerSideProps, NextPage } from 'next';
import Head from 'next/head';
import React from 'react';
import appConfig from 'configs/app/config';
import getNetworkTitle from 'lib/networks/getNetworkTitle';
import type { Props } from 'lib/next/getServerSideProps';
import { getServerSideProps as getServerSidePropsBase } from 'lib/next/getServerSideProps';
import CsvExport from 'ui/pages/CsvExport';
const CsvExportPage: NextPage = () => {
......@@ -19,4 +22,12 @@ const CsvExportPage: NextPage = () => {
export default CsvExportPage;
export { getServerSideProps } from 'lib/next/getServerSideProps';
export const getServerSideProps: GetServerSideProps<Props> = async(args) => {
if (!appConfig.reCaptcha.siteKey) {
return {
notFound: true,
};
}
return getServerSidePropsBase(args);
};
......@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle';
import Deposits from 'ui/pages/Deposits';
import L2Deposits from 'ui/pages/L2Deposits';
const DepositsPage: NextPage = () => {
const title = getNetworkTitle();
......@@ -12,7 +12,7 @@ const DepositsPage: NextPage = () => {
<Head>
<title>{ title }</title>
</Head>
<Deposits/>
<L2Deposits/>
</>
);
};
......
......@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle';
import OutputRoots from 'ui/pages/OutputRoots';
import L2OutputRoots from 'ui/pages/L2OutputRoots';
const OutputRootsPage: NextPage = () => {
const title = getNetworkTitle();
......@@ -12,7 +12,7 @@ const OutputRootsPage: NextPage = () => {
<Head>
<title>{ title }</title>
</Head>
<OutputRoots/>
<L2OutputRoots/>
</>
);
};
......
......@@ -3,7 +3,7 @@ import Head from 'next/head';
import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle';
import TxnBatches from 'ui/pages/TxnBatches';
import L2TxnBatches from 'ui/pages/L2TxnBatches';
const TxnBatchesPage: NextPage = () => {
const title = getNetworkTitle();
......@@ -12,7 +12,7 @@ const TxnBatchesPage: NextPage = () => {
<Head>
<title>{ title }</title>
</Head>
<TxnBatches/>
<L2TxnBatches/>
</>
);
};
......
import type { NextPage } from 'next';
import Head from 'next/head';
import React from 'react';
import getNetworkTitle from 'lib/networks/getNetworkTitle';
import L2Withdrawals from 'ui/pages/L2Withdrawals';
const WithdrawalsPage: NextPage = () => {
const title = getNetworkTitle();
return (
<>
<Head>
<title>{ title }</title>
</Head>
<L2Withdrawals/>
</>
);
};
export default WithdrawalsPage;
export { getServerSideProps } from 'lib/next/getServerSidePropsL2';
import type { GetServerSideProps, NextPage } from 'next';
import type { NextPage } from 'next';
import Head from 'next/head';
import { route } from 'nextjs-routes';
import React from 'react';
import type { SearchRedirectResult } from 'types/api/search';
import buildUrlNode from 'lib/api/buildUrlNode';
import fetchFactory from 'lib/api/nodeFetch';
import getNetworkTitle from 'lib/networks/getNetworkTitle';
import type { Props } from 'lib/next/getServerSideProps';
import { getServerSideProps as getServerSidePropsBase } from 'lib/next/getServerSideProps';
import * as serverTiming from 'lib/next/serverTiming';
import SearchResults from 'ui/pages/SearchResults';
const SearchResultsPage: NextPage = () => {
......@@ -27,53 +19,4 @@ const SearchResultsPage: NextPage = () => {
export default SearchResultsPage;
export const getServerSideProps: GetServerSideProps<Props> = async({ req, res, resolvedUrl, query }) => {
const start = Date.now();
try {
const q = String(query.q);
const url = buildUrlNode('search_check_redirect', undefined, { q });
const redirectsResponse = await fetchFactory(req)(url, {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore:next-line timeout property exist for AbortSignal since Node.js 17 - https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
// but @types/node has not updated their types yet, see issue https://github.com/DefinitelyTyped/DefinitelyTyped/issues/60868
signal: AbortSignal.timeout(1_000),
});
const payload = await redirectsResponse.json() as SearchRedirectResult;
if (!payload || typeof payload !== 'object' || !payload.redirect) {
throw Error();
}
const redirectUrl = (() => {
switch (payload.type) {
case 'block': {
return route({ pathname: '/block/[height]', query: { height: q } });
}
case 'address': {
return route({ pathname: '/address/[hash]', query: { hash: payload.parameter || q } });
}
case 'transaction': {
return route({ pathname: '/tx/[hash]', query: { hash: q } });
}
}
})();
if (!redirectUrl) {
throw Error();
}
return {
redirect: {
destination: redirectUrl,
permanent: false,
},
};
} catch (error) {}
const end = Date.now();
serverTiming.appendValue(res, 'query.search.check-redirect', end - start);
return getServerSidePropsBase({ req, res, resolvedUrl, query });
};
export { getServerSideProps } from 'lib/next/getServerSideProps';
......@@ -19,4 +19,4 @@ const WithdrawalsPage: NextPage = () => {
export default WithdrawalsPage;
export { getServerSideProps } from 'lib/next/getServerSidePropsL2';
export { getServerSideProps } from 'lib/next/getServerSidePropsBeacon';
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 209.322 209.322">
<path d="M105.572 101.811c9.889-6.368 27.417-16.464 28.106-42.166.536-20.278-9.971-49.506-49.155-50.878C53.041 7.659 39.9 28.251 36.071 46.739l-.928-.126c-1.932 0-3.438 1.28-5.34 2.889-2.084 1.784-4.683 3.979-7.792 4.308-3.573.361-8.111-1.206-11.698-2.449-4.193-1.431-6.624-2.047-8.265-.759C.545 51.765-.13 53.864.02 56.828c.331 6.326 4.971 18.917 16.016 25.778 7.67 4.765 16.248 5.482 20.681 5.482h.006c2.37 0 4.945-.239 7.388-.726 2.741 4.218 5.228 7.476 6.037 9.752 2.054 5.851-27.848 25.087-27.848 55.01 0 29.916 22.013 48.475 56.727 48.475h55.004c30.593 0 70.814-29.908 75.291-92.48-28.541 24.072-42.294-9.969-103.75-6.308zM18.941 77.945C8.775 71.617 4.992 58.922 5.294 55.525c.897.24 2.194.689 3.228 1.042 4.105 1.415 9.416 3.228 14.068 2.707 4.799-.499 8.253-3.437 10.778-5.574.607-.509 1.393-1.176 1.872-1.491.87.315.962.693 1.176 3.14.196 2.26.473 5.37 2.362 9.006 1.437 2.761 3.581 5.705 5.646 8.542 1.701 2.336 4.278 5.871 4.535 6.404-.445 1.184-4.907 3.282-12.229 3.282-6.553.008-13.04-1.679-17.789-4.638zM56.86 49.368c0-4.938 4.001-8.943 8.931-8.943a8.942 8.942 0 0 1 8.942 8.943c0 4.931-4.001 8.942-8.942 8.942-4.937.001-8.931-4.011-8.931-8.942zm92.299 106.03-20.63 11.169 13.408 9.293s-49.854 15.813-72.198-6.885c-11.006-11.16-13.06-28.533 4.124-38.84 17.184-10.312 84.609 3.943 84.609 3.943L134.295 147.8l14.864 7.598z" fill="#ffef07"/>
</svg>
import type { test } from '@playwright/experimental-ct-react';
import type { Browser } from '@playwright/test';
interface Env {
name: string;
......@@ -6,9 +7,17 @@ interface Env {
}
// keep in mind that all passed variables here should be present in env config files (.env.pw or .env.poa)
export default function createContextWithEnvs(envs: Array<Env>): Parameters<typeof test.extend>[0]['context'] {
export default function contextWithEnvs(envs: Array<Env>): Parameters<typeof test.extend>[0]['context'] {
return async({ browser }, use) => {
const context = await browser.newContext({
const context = await createContextWithEnvs(browser, envs);
await use(context);
await context.close();
};
}
export async function createContextWithEnvs(browser: Browser, envs: Array<Env>) {
return browser.newContext({
storageState: {
origins: [
{ origin: 'http://localhost:3100', localStorage: envs },
......@@ -16,8 +25,4 @@ export default function createContextWithEnvs(envs: Array<Env>): Parameters<type
cookies: [],
},
});
await use(context);
await context.close();
};
}
......@@ -61,6 +61,8 @@ export function sendMessage(socket: WebSocket, channel: Channel, msg: 'transacti
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'pending_transaction', payload: { pending_transaction: number }): void;
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'new_block', payload: NewBlockSocketResponse): void;
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'verification_result', payload: SmartContractVerificationResponse): void;
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'total_supply', payload: { total_supply: number}): void;
export function sendMessage(socket: WebSocket, channel: Channel, msg: 'changed_bytecode', payload: Record<string, never>): void;
export function sendMessage(socket: WebSocket, channel: Channel, msg: string, payload: unknown): void {
socket.send(JSON.stringify([
...channel,
......
......@@ -2,7 +2,7 @@
targetFile='./playwright/envs.js'
declare -a envFiles=('./configs/envs/.env.pw' './configs/envs/.env.poa_core')
declare -a envFiles=('./configs/envs/.env.pw')
touch $targetFile;
truncate -s 0 $targetFile;
......@@ -26,7 +26,7 @@ do
# if there is a value, escape it and add line to target file
escapedConfigValue=$(echo $configValue | sed s/\'/\"/g);
echo "window.process.env.${configName} = localStorage.getItem('${configName}') || '${escapedConfigValue}';" >> $targetFile;
echo "window.process.env.${configName} = localStorage.getItem('${configName}') ?? '${escapedConfigValue}';" >> $targetFile;
done < $envFile
done
......
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 123 24">
<g clip-path="url(#network-logo_svg__a)">
<mask id="network-logo_svg__b" width="123" height="22" x="0" y="1" maskUnits="userSpaceOnUse" style="mask-type:luminance">
<path fill="#fff" d="M122.375 1H0v22h122.375V1Z"/>
</mask>
<g fill="#51AA8F" mask="url(#network-logo_svg__b)">
<path d="M22.28 18.796V4.093h6.204c1.1 0 2.038.169 2.798.506.759.337 1.338.803 1.728 1.398.39.595.58 1.289.58 2.082 0 .615-.11 1.16-.34 1.656-.23.495-.57.902-1.03 1.239-.459.337-1.008.565-1.668.694v.129c.5.119.92.317 1.26.595.339.277.619.614.838 1.001.23.396.43.872.61 1.447l1.269 3.946h-3.157l-1.12-3.51c-.16-.564-.35-1-.569-1.318a1.82 1.82 0 0 0-.86-.684c-.359-.139-.819-.218-1.398-.218h-2.058v5.72h-3.088v.02Zm5.674-8.09c.52 0 .97-.08 1.36-.228.379-.149.679-.387.889-.704.21-.317.32-.714.32-1.17 0-.466-.11-.852-.32-1.16a1.795 1.795 0 0 0-.89-.674 3.98 3.98 0 0 0-1.358-.218h-2.588v4.164h2.587v-.01Zm12.691 8.338c-1.12 0-2.128-.248-3.028-.733a5.355 5.355 0 0 1-2.138-2.073c-.52-.892-.779-1.913-.779-3.063 0-1.14.26-2.162.77-3.054a5.443 5.443 0 0 1 2.127-2.092c.91-.505 1.929-.753 3.068-.753s2.158.248 3.057.753c.9.496 1.609 1.2 2.118 2.092.51.893.77 1.914.77 3.064 0 1.14-.26 2.161-.78 3.053a5.486 5.486 0 0 1-2.128 2.082c-.909.476-1.928.724-3.057.724Zm0-2.449a2.85 2.85 0 0 0 1.528-.416c.45-.278.81-.674 1.08-1.19.26-.515.4-1.12.4-1.814 0-.684-.13-1.29-.39-1.815a2.937 2.937 0 0 0-1.07-1.2 2.892 2.892 0 0 0-1.538-.425c-.57 0-1.08.138-1.529.426-.45.277-.81.684-1.069 1.2-.26.515-.39 1.13-.39 1.824 0 .684.13 1.289.4 1.804.26.516.62.912 1.07 1.19.429.277.938.416 1.508.416Zm12.748 2.449c-1.119 0-2.128-.248-3.027-.733a5.354 5.354 0 0 1-2.138-2.073c-.52-.892-.78-1.913-.78-3.063 0-1.14.26-2.162.77-3.054a5.442 5.442 0 0 1 2.128-2.092c.909-.505 1.928-.753 3.067-.753 1.14 0 2.158.248 3.058.753a5.426 5.426 0 0 1 2.118 2.092c.51.893.769 1.914.769 3.064 0 1.14-.26 2.161-.78 3.053a5.485 5.485 0 0 1-2.128 2.082c-.909.476-1.928.724-3.057.724Zm0-2.449c.57 0 1.08-.139 1.529-.416a2.98 2.98 0 0 0 1.079-1.19c.26-.515.4-1.12.4-1.814 0-.684-.13-1.29-.39-1.815a2.937 2.937 0 0 0-1.07-1.2 2.892 2.892 0 0 0-1.538-.425c-.57 0-1.079.138-1.529.426-.45.277-.809.684-1.069 1.2-.26.515-.39 1.13-.39 1.824 0 .684.13 1.289.4 1.804.26.516.62.912 1.07 1.19.43.277.939.416 1.508.416Zm12.06 2.38c-.949 0-1.708-.149-2.258-.446-.56-.298-.949-.704-1.169-1.2-.23-.506-.34-1.1-.34-1.785v-5.74h-2.008v-2.31h2.009V4.668h2.927v2.826h2.638v2.3h-2.638v5.592c0 .386.12.684.36.892.24.208.63.307 1.169.307.34 0 .699-.04 1.079-.109v2.221a5.416 5.416 0 0 1-1.769.278Zm7.355.079c-1.259 0-2.308-.278-3.147-.833-.84-.555-1.409-1.348-1.709-2.39l2.398-.802c.2.585.51 1.04.92 1.358.41.317.919.476 1.508.476.6 0 1.05-.11 1.36-.317.309-.209.459-.496.459-.833 0-.278-.07-.506-.21-.664-.14-.169-.38-.308-.71-.437-.329-.119-.809-.248-1.418-.386-.96-.208-1.719-.446-2.268-.714-.55-.268-.96-.605-1.219-1.031-.26-.426-.4-.952-.4-1.606 0-.724.19-1.349.56-1.894.37-.545.899-.962 1.598-1.269.7-.297 1.499-.446 2.408-.446.8 0 1.509.109 2.128.337.62.228 1.12.565 1.519 1.011.4.446.68.992.83 1.626l-2.379.793a2.55 2.55 0 0 0-.789-1.17 2.056 2.056 0 0 0-1.289-.426c-.35 0-.65.04-.91.129-.258.09-.459.218-.599.387a.904.904 0 0 0-.21.595c0 .257.06.466.19.614.12.149.35.278.67.387.32.109.79.228 1.399.357 1.008.218 1.808.456 2.378.724.57.257.999.604 1.268 1.02.27.427.41.962.41 1.637 0 .763-.18 1.417-.55 1.982-.369.556-.909.992-1.618 1.31-.709.316-1.568.475-2.578.475Zm10.918-.079c-.95 0-1.709-.149-2.258-.446-.56-.298-.95-.704-1.17-1.2-.229-.506-.339-1.1-.339-1.785v-5.74h-2.008v-2.31h2.008V4.668h2.927v2.826h2.638v2.3h-2.638v5.592c0 .386.12.684.36.892.24.208.63.307 1.17.307.34 0 .699-.04 1.078-.109v2.221a5.401 5.401 0 0 1-1.768.278Zm8.454.069c-1.119 0-2.128-.248-3.027-.733a5.357 5.357 0 0 1-2.138-2.073c-.52-.892-.78-1.913-.78-3.063 0-1.14.26-2.162.77-3.054a5.44 5.44 0 0 1 2.128-2.092c.91-.505 1.928-.753 3.068-.753 1.139 0 2.158.248 3.057.753.9.496 1.609 1.2 2.118 2.092.51.893.77 1.914.77 3.064 0 1.14-.26 2.161-.78 3.053a5.482 5.482 0 0 1-2.128 2.082c-.91.476-1.919.724-3.057.724Zm0-2.449a2.85 2.85 0 0 0 1.529-.416c.45-.278.81-.674 1.08-1.19.26-.515.399-1.12.399-1.814 0-.684-.13-1.29-.39-1.815a2.919 2.919 0 0 0-1.07-1.2 2.89 2.89 0 0 0-1.538-.425c-.569 0-1.078.138-1.528.426-.45.277-.81.684-1.07 1.2-.259.515-.389 1.13-.389 1.824 0 .684.13 1.289.4 1.804.26.516.619.912 1.069 1.19.44.277.939.416 1.509.416Zm13.01 2.459c-1.059 0-2.038-.218-2.937-.664-.91-.446-1.629-1.11-2.178-1.993-.55-.882-.82-1.943-.82-3.173 0-1.219.26-2.27.789-3.172a5.42 5.42 0 0 1 2.138-2.072c.9-.486 1.899-.724 2.988-.724.9 0 1.709.169 2.428.506.72.337 1.329.793 1.809 1.378a5.274 5.274 0 0 1 1.028 1.992l-2.527.724a3.355 3.355 0 0 0-.55-1.1 2.723 2.723 0 0 0-.889-.764c-.35-.188-.76-.277-1.209-.277-.6 0-1.139.148-1.608.436a2.91 2.91 0 0 0-1.1 1.22 4.043 4.043 0 0 0-.399 1.804c0 .704.139 1.309.419 1.824.28.516.66.912 1.129 1.18.47.268.98.406 1.539.406.449 0 .85-.089 1.209-.267.36-.179.659-.427.909-.724.25-.307.44-.644.57-1.011l2.518.743a5.096 5.096 0 0 1-.959 1.854c-.46.565-1.06 1.021-1.799 1.369-.729.327-1.559.505-2.498.505Zm6.685-.258V4.093h2.927v7.912l4.596-4.511h3.387l-4.896 4.7 4.866 6.602h-3.417l-3.527-4.838-1.019.952v3.886h-2.917ZM9.06 6.82a2.747 2.747 0 0 0 2.758-2.737 2.747 2.747 0 0 0-2.757-2.736 2.747 2.747 0 0 0-2.758 2.736A2.747 2.747 0 0 0 9.061 6.82Z"/>
<path d="M16.724 12.54c-1.319-.753-3.007-.307-3.766 1.002a2.72 2.72 0 0 0-.37 1.427c.03 1.21-1.07 1.835-2.108 1.21-.04-.02-.08-.05-.13-.07-1.05-.584-1.05-1.824 0-2.399a2.744 2.744 0 0 0 1.449-2.409v-.06c-.03-1.209 1.069-1.834 2.108-1.209.83.506 1.908.545 2.807.03a2.726 2.726 0 0 0 1.01-3.738 2.77 2.77 0 0 0-3.767-1.001 2.74 2.74 0 0 0-1.379 2.429c.03 1.21-1.07 1.834-2.098 1.21a2.732 2.732 0 0 0-1.439-.407c-.53 0-1.02.148-1.439.396-1.039.615-2.128-.01-2.098-1.21a2.73 2.73 0 0 0-1.379-2.428A2.774 2.774 0 0 0 .358 6.324a2.73 2.73 0 0 0 1.02 3.738 2.785 2.785 0 0 0 2.807-.03c1.04-.625 2.128 0 2.098 1.21v.059c0 1.041.58 1.943 1.45 2.41 1.048.584 1.048 1.823 0 2.399-.04.02-.08.05-.12.069-1.04.615-2.129-.01-2.099-1.21.01-.486-.11-.981-.37-1.437-.759-1.309-2.448-1.755-3.766-1.002-1.32.774-1.769 2.45-1.01 3.758a2.77 2.77 0 0 0 3.767 1.001c.02-.01.03-.02.05-.03 1.04-.624 2.128 0 2.098 1.21v.07c0 1.506 1.24 2.736 2.758 2.736 1.519 0 2.758-1.23 2.758-2.736v-.06c-.03-1.21 1.069-1.834 2.108-1.21.02.01.04.02.06.04 1.319.754 3.007.307 3.766-1.001.76-1.339.31-3.014-1.009-3.768Z"/>
</g>
</g>
<defs>
<clipPath id="network-logo_svg__a">
<path fill="#fff" d="M0 1h122.375v22H0z"/>
</clipPath>
</defs>
</svg>
......@@ -5,5 +5,5 @@ import { RESOURCES } from 'lib/api/resources';
export default function buildApiUrl<R extends ResourceName>(resourceName: R, pathParams?: ResourcePathParams<R>) {
const resource = RESOURCES[resourceName];
return compile('/node-api/proxy/poa/core' + resource.path)(pathParams);
return compile('/node-api/proxy' + resource.path)(pathParams);
}
......@@ -43,4 +43,5 @@ export const ADDRESS_INFO: Address = {
private_tags: [],
public_tags: [],
watchlist_names: [],
watchlist_address_id: null,
};
......@@ -12,6 +12,7 @@ export interface Address {
creator_address_hash: string | null;
creation_tx_hash: string | null;
exchange_rate: string | null;
has_beacon_chain_withdrawals?: boolean;
has_custom_methods_read: boolean;
has_custom_methods_write: boolean;
has_decompiled_code: boolean;
......@@ -32,6 +33,7 @@ export interface Address {
private_tags: Array<AddressTag> | null;
public_tags: Array<AddressTag> | null;
token: TokenInfo | null;
watchlist_address_id: number | null;
watchlist_names: Array<WatchlistName> | null;
}
......@@ -127,3 +129,19 @@ export interface AddressInternalTxsResponse {
transaction_index: number;
} | null;
}
export type AddressWithdrawalsResponse = {
items: Array<AddressWithdrawalsItem>;
next_page_params: {
index: number;
items_count: number;
};
}
export type AddressWithdrawalsItem = {
amount: string;
block_number: number;
index: number;
timestamp: string;
validator_index: number;
}
......@@ -10,6 +10,7 @@ export interface Block {
tx_count: number;
miner: AddressParam;
size: number;
has_beacon_chain_withdrawals?: boolean;
hash: string;
parent_hash: string;
difficulty: string;
......@@ -56,3 +57,18 @@ export interface NewBlockSocketResponse {
export interface BlockFilters {
type?: BlockType;
}
export type BlockWithdrawalsResponse = {
items: Array<BlockWithdrawalsItem>;
next_page_params: {
index: number;
items_count: number;
};
}
export type BlockWithdrawalsItem = {
amount: string;
index: number;
receiver: AddressParam;
validator_index: number;
}
......@@ -30,7 +30,10 @@ export interface SmartContract {
file_path: string;
additional_sources: Array<{ file_path: string; source_code: string }>;
external_libraries: Array<SmartContractExternalLibrary> | null;
compiler_settings: unknown;
compiler_settings?: {
evmVersion?: string;
remappings?: Array<string>;
};
verified_twin_address_hash: string | null;
minimal_proxy_address_hash: string | null;
}
......@@ -124,6 +127,7 @@ export interface SmartContractVerificationConfigRaw {
verification_options: Array<string>;
vyper_compiler_versions: Array<string>;
vyper_evm_versions: Array<string>;
is_rust_verifier_microservice_enabled: boolean;
}
export interface SmartContractVerificationConfig extends SmartContractVerificationConfigRaw {
......
......@@ -7,6 +7,6 @@ export interface DecodedInput {
export interface DecodedInputParams {
name: string;
type: string;
value: string;
value: string | Array<unknown> | Record<string, unknown>;
indexed?: boolean;
}
export type DepositsItem = {
export type L2DepositsItem = {
l1_block_number: number;
l1_tx_hash: string;
l1_block_timestamp: string;
......@@ -7,8 +7,8 @@ export type DepositsItem = {
l2_tx_hash: string;
}
export type DepositsResponse = {
items: Array<DepositsItem>;
export type L2DepositsResponse = {
items: Array<L2DepositsItem>;
next_page_params: {
items_count: number;
l1_block_number: number;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment