From 2f771f2dacceaf2408d58bedb0217fbf4dcf4de2 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Tue, 30 Jan 2024 21:45:11 -0500 Subject: [PATCH 01/24] feat: adding token manager type and address --- cli/schemas/interchain-tokenlist.ts | 2 ++ cli/wizard/commands/list-squid-token/index.ts | 8 +++++++ .../mainnet/interchain/squid.tokenlist.json | 2 +- .../schemas/interchain-tokenlist.schema.json | 22 +++++++++++++++++-- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 4e60f16..d78e76a 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -13,6 +13,8 @@ export const remoteToken = z.object({ export const interchainToken = z.object({ tokenId: hash, tokenAddress: address, + tokenManagerAddress: address, + tokenManagerType: z.string(), symbol: z.string(), prettySymbol: z.string(), decimals: z.number().int(), diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 959653d..d89ae52 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -125,6 +125,8 @@ export async function listSquidToken() { export type InterchainTokenInfo = { tokenId: string; tokenAddress: string; + tokenManagerAddress: string; + tokenManagerType: string; isOriginToken: boolean; isRegistered: boolean; chainId: number; @@ -141,6 +143,8 @@ export type InterchainTokenSearchResult = InterchainTokenInfo & { export type RemoteInterchainToken = { axelarChainId: string; tokenAddress: string; + tokenManagerAddress: string; + tokenManagerType: string; deploymentStatus: string; deploymentTxHash: string; }; @@ -152,6 +156,8 @@ export type InterchainTokenDetails = { tokenSymbol: string; tokenDecimals: number; tokenAddress: string; + tokenManagerAddress: string; + tokenManagerType: string; axelarChainId: string; tokenId: string; deploymentTxHash: string; @@ -165,6 +171,8 @@ function parseAsInterchainTokenConfig( return { tokenId: hash.parse(data.tokenId), tokenAddress: address.parse(data.tokenAddress), + tokenManagerAddress: address.parse(data.tokenManagerAddress), + tokenManagerType: data.tokenManagerType, symbol: data.tokenSymbol, prettySymbol: data.tokenSymbol, decimals: data.tokenDecimals, diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index d69ff53..eb79d2c 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -17,7 +17,7 @@ "originAxelarChainId": "moonbeam", "transferType": "interchain", "iconUrls": { - "svg": "https://raw.githubusercontent.com/axelarnetwork/axelar-configs/images/tokens/rmrk.svg" + "svg": "/images/tokens/rmrk.svg" }, "remoteTokens": [ { diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index 254a7d0..409058d 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -39,6 +39,11 @@ "type": "array", "items": { "$ref": "#/definitions/remoteToken" } }, + "tokenManagerAddress": { + "type": "string", + "pattern": "^0x[a-fA-F0-9]{40}$" + }, + "tokenManagerType": { "type": "string" }, "coinGeckoId": { "type": "string" } }, "required": [ @@ -51,7 +56,9 @@ "originAxelarChainId", "transferType", "iconUrls", - "remoteTokens" + "remoteTokens", + "tokenManagerAddress", + "tokenManagerType" ], "additionalProperties": false }, @@ -61,9 +68,20 @@ "axelarChainId": { "type": "string" }, "tokenAddress": { "$ref": "#/definitions/interchainToken/properties/tokenAddress" + }, + "tokenManagerAddress": { + "$ref": "#/definitions/interchainToken/properties/tokenManagerAddress" + }, + "tokenManagerType": { + "$ref": "#/definitions/interchainToken/properties/tokenManagerType" } }, - "required": ["axelarChainId", "tokenAddress"], + "required": [ + "axelarChainId", + "tokenAddress", + "tokenManagerAddress", + "tokenManagerType" + ], "additionalProperties": false }, "version": { From 520b0d270494f9a5e356d3e4a3d9bf8151e551c4 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Tue, 30 Jan 2024 22:49:50 -0500 Subject: [PATCH 02/24] feat: add other details to interchain token schema --- cli/schemas/interchain-tokenlist.ts | 2 ++ cli/wizard/commands/list-squid-token/index.ts | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index d78e76a..89338ed 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -14,6 +14,8 @@ export const interchainToken = z.object({ tokenId: hash, tokenAddress: address, tokenManagerAddress: address, + deployerAddress: address, + originalMinterAddress: address, tokenManagerType: z.string(), symbol: z.string(), prettySymbol: z.string(), diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index d89ae52..6b6b60a 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -158,6 +158,7 @@ export type InterchainTokenDetails = { tokenAddress: string; tokenManagerAddress: string; tokenManagerType: string; + originalMinterAddress: string; axelarChainId: string; tokenId: string; deploymentTxHash: string; @@ -173,6 +174,8 @@ function parseAsInterchainTokenConfig( tokenAddress: address.parse(data.tokenAddress), tokenManagerAddress: address.parse(data.tokenManagerAddress), tokenManagerType: data.tokenManagerType, + deployerAddress: data.deployerAddress, + originalMinterAddress: data.originalMinterAddress, symbol: data.tokenSymbol, prettySymbol: data.tokenSymbol, decimals: data.tokenDecimals, @@ -185,6 +188,8 @@ function parseAsInterchainTokenConfig( remoteTokens: data.remoteTokens.map((token) => ({ axelarChainId: token.axelarChainId, tokenAddress: address.parse(token.tokenAddress), + tokenManagerAddress: address.parse(token.tokenManagerAddress), + tokenManagerType: token.tokenManagerType, })), }; } From e4d964fc321e41de4d5f81834b5aee6a67f2b1c2 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Tue, 30 Jan 2024 23:07:21 -0500 Subject: [PATCH 03/24] chore: update existing data to follow schema --- .../mainnet/interchain/squid.tokenlist.json | 18 ++++- .../schemas/interchain-tokenlist.schema.json | 2 +- .../testnet/interchain/squid.tokenlist.json | 74 +------------------ 3 files changed, 16 insertions(+), 78 deletions(-) diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index eb79d2c..1db0c59 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -10,6 +10,8 @@ { "tokenId": "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", + "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManagerType": "mint_burn", "symbol": "RMRK", "prettySymbol": "RMRK", "decimals": 18, @@ -22,19 +24,27 @@ "remoteTokens": [ { "axelarChainId": "polygon", - "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3" + "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", + "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManagerType": "mint_burn" }, { "axelarChainId": "ethereum", - "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3" + "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", + "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManagerType": "mint_burn" }, { "axelarChainId": "base", - "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3" + "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", + "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManagerType": "mint_burn" }, { "axelarChainId": "binance", - "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3" + "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", + "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManagerType": "mint_burn" } ] } diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index 409058d..99f7ea1 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -19,7 +19,7 @@ "definitions": { "IconUrlsSchema": { "type": "object", - "properties": { "svg": { "type": "string", "format": "uri" } }, + "properties": { "svg": { "type": "string" } }, "required": ["svg"], "additionalProperties": false }, diff --git a/registry/testnet/interchain/squid.tokenlist.json b/registry/testnet/interchain/squid.tokenlist.json index 55b0792..36c0459 100644 --- a/registry/testnet/interchain/squid.tokenlist.json +++ b/registry/testnet/interchain/squid.tokenlist.json @@ -6,77 +6,5 @@ "minor": 1, "patch": 0 }, - "tokens": [ - { - "tokenId": "0x977be77da4e97b7a71f7ed2b9d6bf8e49900f63c7f2e055e66746406ea575ace", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9", - "symbol": "tSUSHI", - "prettySymbol": "tSUSHI", - "decimals": 18, - "name": "Testnet SushiToken", - "originAxelarChainId": "ethereum-2", - "transferType": "interchain", - "iconUrls": { - "svg": "https://raw.githubusercontent.com/axelarnetwork/axelar-configs/images/tokens/tsushi.svg" - }, - "remoteTokens": [ - { - "axelarChainId": "linea", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "celo", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "moonbeam", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "polygon-zkevm", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "ethereum-sepolia", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "scroll", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "binance", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "kava", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "polygon", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "base", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "fantom", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "mantle", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "avalanche", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - }, - { - "axelarChainId": "arbitrum", - "tokenAddress": "0xE280532Bc53B0135B9a4076022B563118Cf838c9" - } - ] - } - ] + "tokens": [] } From 4d466bbf67aa5e2ffeecc141f2d5fd0939c42584 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 15:36:48 -0500 Subject: [PATCH 04/24] Update cli/schemas/interchain-tokenlist.ts Co-authored-by: Milap Sheth --- cli/schemas/interchain-tokenlist.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 89338ed..35a0c72 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -13,9 +13,9 @@ export const remoteToken = z.object({ export const interchainToken = z.object({ tokenId: hash, tokenAddress: address, - tokenManagerAddress: address, - deployerAddress: address, - originalMinterAddress: address, + tokenManager: address, + deployer: address, + originalMinter: address, tokenManagerType: z.string(), symbol: z.string(), prettySymbol: z.string(), From b200732a1e99fa10d5b338882edfa9d4e5e40baa Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 15:47:48 -0500 Subject: [PATCH 05/24] Update cli/wizard/commands/list-squid-token/index.ts Co-authored-by: Milap Sheth --- cli/wizard/commands/list-squid-token/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 6b6b60a..2c4f297 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -185,7 +185,7 @@ function parseAsInterchainTokenConfig( iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, - remoteTokens: data.remoteTokens.map((token) => ({ + chains: data.remoteTokens.map((token) => ({ axelarChainId: token.axelarChainId, tokenAddress: address.parse(token.tokenAddress), tokenManagerAddress: address.parse(token.tokenManagerAddress), From dfd27a6ff60f0191f3851729f92f2e776c0c1e56 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 15:49:51 -0500 Subject: [PATCH 06/24] Update registry/mainnet/interchain/squid.tokenlist.json Co-authored-by: Milap Sheth --- registry/mainnet/interchain/squid.tokenlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index 1db0c59..61ccf9c 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -10,7 +10,7 @@ { "tokenId": "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", "tokenManagerType": "mint_burn", "symbol": "RMRK", "prettySymbol": "RMRK", From 9a243fc5b1f36004520fe7dbf31616685fc72734 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 15:50:02 -0500 Subject: [PATCH 07/24] Update registry/mainnet/interchain/squid.tokenlist.json Co-authored-by: Milap Sheth --- registry/mainnet/interchain/squid.tokenlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index 61ccf9c..0d4d3c6 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -11,7 +11,7 @@ "tokenId": "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mint_burn", + "tokenManagerType": "mintBurn", "symbol": "RMRK", "prettySymbol": "RMRK", "decimals": 18, From 9dee8005294fa7a9899e542db8de0f945fb83896 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 16:14:27 -0500 Subject: [PATCH 08/24] chore: update schemas for tokenManager, minter, and salt --- cli/schemas/interchain-tokenlist.ts | 7 ++- cli/wizard/commands/list-squid-token/index.ts | 44 +++++++++++++----- package.json | 1 + pnpm-lock.yaml | 45 +++++++++++++++++++ .../schemas/interchain-tokenlist.schema.json | 10 ++--- 5 files changed, 89 insertions(+), 18 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 35a0c72..9caa9a1 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -5,9 +5,11 @@ export const IconUrlsSchema = z.object({ svg: z.string().url(), }); -export const remoteToken = z.object({ +export const chains = z.object({ axelarChainId: z.string(), tokenAddress: address, + tokenManager: address, + tokenManagerType: z.string(), }); export const interchainToken = z.object({ @@ -24,7 +26,8 @@ export const interchainToken = z.object({ originAxelarChainId: z.string(), transferType: z.string(), iconUrls: IconUrlsSchema, - remoteTokens: z.array(remoteToken), + salt: z.string(), + chains: z.array(chains), coinGeckoId: z.string().optional(), }); diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 2c4f297..1211abb 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -1,6 +1,7 @@ import { input, confirm } from "@inquirer/prompts"; import chalk from "chalk"; import { $, fs, path, spinner } from "zx"; +import { convertCase } from "@axelarjs/utils"; import { InterchainTokenConfig, @@ -162,35 +163,56 @@ export type InterchainTokenDetails = { axelarChainId: string; tokenId: string; deploymentTxHash: string; - deployerAddress: string; + deployer: string; remoteTokens: RemoteInterchainToken[]; }; function parseAsInterchainTokenConfig( data: InterchainTokenDetails ): InterchainTokenConfig { + console.log({ data }); return { tokenId: hash.parse(data.tokenId), tokenAddress: address.parse(data.tokenAddress), - tokenManagerAddress: address.parse(data.tokenManagerAddress), - tokenManagerType: data.tokenManagerType, - deployerAddress: data.deployerAddress, - originalMinterAddress: data.originalMinterAddress, + tokenManager: address.parse(data.tokenManagerAddress), + tokenManagerType: convertCase( + "CONSTANT_CASE", + "camelCase" + )(data.tokenManagerType), + deployer: data.deployer, + originalMinter: data.originalMinterAddress, symbol: data.tokenSymbol, prettySymbol: data.tokenSymbol, decimals: data.tokenDecimals, name: data.tokenName, originAxelarChainId: data.axelarChainId, transferType: data.kind, + salt: data.salt, iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, - chains: data.remoteTokens.map((token) => ({ - axelarChainId: token.axelarChainId, - tokenAddress: address.parse(token.tokenAddress), - tokenManagerAddress: address.parse(token.tokenManagerAddress), - tokenManagerType: token.tokenManagerType, - })), + chains: [ + ...[ + { + axelarChainId: data.axelarChainId, + tokenAddress: address.parse(data.tokenAddress), + tokenManager: address.parse(data.tokenManagerAddress), + tokenManagerType: convertCase( + "CONSTANT_CASE", + "camelCase" + )(data.tokenManagerType), + }, + ], + ...data.remoteTokens.map((token) => ({ + axelarChainId: token.axelarChainId, + tokenAddress: address.parse(token.tokenAddress), + tokenManager: address.parse(token.tokenManagerAddress), + tokenManagerType: convertCase( + "CONSTANT_CASE", + "camelCase" + )(token.tokenManagerType), + })), + ], }; } diff --git a/package.json b/package.json index 269f38e..419f686 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@inquirer/prompts": "^3.2.0" }, "devDependencies": { + "@axelarjs/utils": "^0.1.12", "@types/prettier": "^2.7.3", "bun-types": "^0.8.1", "chalk": "^5.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 659e291..3a00e53 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,9 @@ dependencies: version: 3.3.0 devDependencies: + '@axelarjs/utils': + specifier: ^0.1.12 + version: 0.1.12 '@types/prettier': specifier: ^2.7.3 version: 2.7.3 @@ -55,6 +58,17 @@ devDependencies: packages: + /@axelarjs/utils@0.1.12: + resolution: {integrity: sha512-56fnZN8ePGsrEYhDPgsnXUDuuKhkhJC/15RCpeRDPJm9MzVvcfleWSEIsYNgpz3gDA1W4n0sNxFyVsoQUeXP2w==} + dependencies: + immer: 10.0.3 + isomorphic-unfetch: 4.0.2 + lodash.debounce: 4.0.8 + lodash.throttle: 4.1.1 + ramda: 0.29.1 + tiny-invariant: 1.3.1 + dev: true + /@esbuild/android-arm64@0.19.9: resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==} engines: {node: '>=12'} @@ -1115,6 +1129,10 @@ packages: engines: {node: '>= 4'} dev: true + /immer@10.0.3: + resolution: {integrity: sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==} + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1146,6 +1164,13 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /isomorphic-unfetch@4.0.2: + resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} + dependencies: + node-fetch: 3.3.1 + unfetch: 5.0.0 + dev: true + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -1174,6 +1199,14 @@ packages: p-locate: 4.1.0 dev: true + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: true + /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: @@ -1447,6 +1480,10 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /ramda@0.29.1: + resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} + dev: true + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true @@ -1598,6 +1635,10 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: true + /tinybench@2.5.1: resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true @@ -1653,6 +1694,10 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unfetch@5.0.0: + resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} + dev: true + /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index 99f7ea1..ff63812 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -39,7 +39,7 @@ "type": "array", "items": { "$ref": "#/definitions/remoteToken" } }, - "tokenManagerAddress": { + "tokenManager": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, @@ -57,7 +57,7 @@ "transferType", "iconUrls", "remoteTokens", - "tokenManagerAddress", + "tokenManager", "tokenManagerType" ], "additionalProperties": false @@ -69,8 +69,8 @@ "tokenAddress": { "$ref": "#/definitions/interchainToken/properties/tokenAddress" }, - "tokenManagerAddress": { - "$ref": "#/definitions/interchainToken/properties/tokenManagerAddress" + "tokenManager": { + "$ref": "#/definitions/interchainToken/properties/tokenManager" }, "tokenManagerType": { "$ref": "#/definitions/interchainToken/properties/tokenManagerType" @@ -79,7 +79,7 @@ "required": [ "axelarChainId", "tokenAddress", - "tokenManagerAddress", + "tokenManager", "tokenManagerType" ], "additionalProperties": false From 67d8c0a333eff697d2e2e6cbddc99747b509d26d Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 16:46:41 -0500 Subject: [PATCH 09/24] chore: update schema of squid list --- cli/schemas/interchain-tokenlist.ts | 2 +- cli/wizard/commands/list-squid-token/index.ts | 13 +++++------ .../mainnet/interchain/squid.tokenlist.json | 23 ++++++++++++------- .../schemas/interchain-tokenlist.schema.json | 20 +++++++++++----- .../testnet/interchain/squid.tokenlist.json | 2 +- 5 files changed, 37 insertions(+), 23 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 9caa9a1..ba7930f 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -43,7 +43,7 @@ const interchainTokenList = z.object({ .regex(/^(?:\.\.\/)+schemas\/interchain-tokenlist\.schema\.json$/), name: z.string(), version, - tokens: z.array(interchainToken), + tokens: z.record(z.string(), interchainToken), }); export default interchainTokenList; diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 1211abb..015f2fc 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -76,15 +76,15 @@ export async function listSquidToken() { await patchConfig( relativePath, { - tokens: (tokens) => [...(tokens ?? []), newTokenConfig], + tokens: (tokens) => ({ + ...tokens, + [newTokenConfig.tokenId]: newTokenConfig, + }), + // tokens: (tokens) => [...(tokens ?? []), newTokenConfig], }, { isDuplicate: (config) => - config.tokens.some( - (token) => - token.tokenAddress === newTokenConfig.tokenAddress || - token.tokenId === newTokenConfig.tokenId - ), + config.tokens[newTokenConfig.tokenId] !== undefined, } ); @@ -170,7 +170,6 @@ export type InterchainTokenDetails = { function parseAsInterchainTokenConfig( data: InterchainTokenDetails ): InterchainTokenConfig { - console.log({ data }); return { tokenId: hash.parse(data.tokenId), tokenAddress: address.parse(data.tokenAddress), diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index 0d4d3c6..8fded4b 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -6,8 +6,8 @@ "minor": 1, "patch": 0 }, - "tokens": [ - { + "tokens": { + "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb": { "tokenId": "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", @@ -21,32 +21,39 @@ "iconUrls": { "svg": "/images/tokens/rmrk.svg" }, - "remoteTokens": [ + "salt": "0x", + "chains": [ + { + "axelarChainId": "moonbeam", + "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", + "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManagerType": "mintBurn" + }, { "axelarChainId": "polygon", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mint_burn" + "tokenManagerType": "mintBurn" }, { "axelarChainId": "ethereum", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mint_burn" + "tokenManagerType": "mintBurn" }, { "axelarChainId": "base", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mint_burn" + "tokenManagerType": "mintBurn" }, { "axelarChainId": "binance", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mint_burn" + "tokenManagerType": "mintBurn" } ] } - ] + } } diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index ff63812..8836cfb 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -10,8 +10,16 @@ "name": { "type": "string" }, "version": { "$ref": "#/definitions/version" }, "tokens": { - "type": "array", - "items": { "$ref": "#/definitions/interchainToken" } + "type": "object", + "properties": { + "$id": { + "type": "string" + }, + "$schema": { + "type": "object", + "$ref": "#/definitions/interchainToken" + } + } } }, "required": ["$schema", "name", "version", "tokens"], @@ -35,9 +43,9 @@ "originAxelarChainId": { "type": "string" }, "transferType": { "type": "string" }, "iconUrls": { "$ref": "#/definitions/IconUrlsSchema" }, - "remoteTokens": { + "chains": { "type": "array", - "items": { "$ref": "#/definitions/remoteToken" } + "items": { "$ref": "#/definitions/chains" } }, "tokenManager": { "type": "string", @@ -56,13 +64,13 @@ "originAxelarChainId", "transferType", "iconUrls", - "remoteTokens", + "chains", "tokenManager", "tokenManagerType" ], "additionalProperties": false }, - "remoteToken": { + "chains": { "type": "object", "properties": { "axelarChainId": { "type": "string" }, diff --git a/registry/testnet/interchain/squid.tokenlist.json b/registry/testnet/interchain/squid.tokenlist.json index 36c0459..f4fd49d 100644 --- a/registry/testnet/interchain/squid.tokenlist.json +++ b/registry/testnet/interchain/squid.tokenlist.json @@ -6,5 +6,5 @@ "minor": 1, "patch": 0 }, - "tokens": [] + "tokens": {} } From db1a88558010fdbc6170f5c6e410b3b7d225a428 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 16:47:40 -0500 Subject: [PATCH 10/24] feat: add TDBG19 token --- .../testnet/interchain/squid.tokenlist.json | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/registry/testnet/interchain/squid.tokenlist.json b/registry/testnet/interchain/squid.tokenlist.json index f4fd49d..24856ab 100644 --- a/registry/testnet/interchain/squid.tokenlist.json +++ b/registry/testnet/interchain/squid.tokenlist.json @@ -6,5 +6,55 @@ "minor": 1, "patch": 0 }, - "tokens": {} + "tokens": { + "0xad3a8666cbb964e76419d7ff3930d4095c99f5c7df74480875dc69f25e612a0f": { + "tokenId": "0xad3a8666cbb964e76419d7ff3930d4095c99f5c7df74480875dc69f25e612a0f", + "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", + "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", + "tokenManagerType": "mintBurn", + "originalMinter": "0xB8Cd93C83A974649D76B1c19f311f639e62272BC", + "symbol": "TDBG19", + "prettySymbol": "TDBG19", + "decimals": 18, + "name": "Test Debug 19", + "originAxelarChainId": "avalanche", + "transferType": "interchain", + "salt": "0xdf5bdd98a44080731aafeb46094337ae904888adb884617397fa1670cb054b6c", + "iconUrls": { + "svg": "https://raw.githubusercontent.com/axelarnetwork/axelar-configs/images/tokens/tdbg19.svg" + }, + "chains": [ + { + "axelarChainId": "avalanche", + "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", + "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", + "tokenManagerType": "mintBurn" + }, + { + "axelarChainId": "celo", + "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", + "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", + "tokenManagerType": "mintBurn" + }, + { + "axelarChainId": "base", + "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", + "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", + "tokenManagerType": "mintBurn" + }, + { + "axelarChainId": "arbitrum", + "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", + "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", + "tokenManagerType": "mintBurn" + }, + { + "axelarChainId": "binance", + "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", + "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", + "tokenManagerType": "mintBurn" + } + ] + } + } } From cc2558c0a6602dfad7bb2803e50a6cff7adf4a86 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 17:04:29 -0500 Subject: [PATCH 11/24] chore: adding tokenType and srcTxHash to cli --- cli/schemas/interchain-tokenlist.ts | 3 ++- cli/wizard/commands/list-squid-token/index.ts | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index ba7930f..047ba6f 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -24,11 +24,12 @@ export const interchainToken = z.object({ decimals: z.number().int(), name: z.string(), originAxelarChainId: z.string(), - transferType: z.string(), + tokenType: z.string(), iconUrls: IconUrlsSchema, salt: z.string(), chains: z.array(chains), coinGeckoId: z.string().optional(), + srcTxHash: hash, }); export const version = z.object({ diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 015f2fc..7075e7d 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -162,7 +162,7 @@ export type InterchainTokenDetails = { originalMinterAddress: string; axelarChainId: string; tokenId: string; - deploymentTxHash: string; + deploymentMessageId: string; deployer: string; remoteTokens: RemoteInterchainToken[]; }; @@ -185,11 +185,12 @@ function parseAsInterchainTokenConfig( decimals: data.tokenDecimals, name: data.tokenName, originAxelarChainId: data.axelarChainId, - transferType: data.kind, + tokenType: data.kind, salt: data.salt, iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, + srcTxHash: data.deploymentMessageId?.split("-")[0] ?? "", chains: [ ...[ { From d607238941392a44e29548c8b14e49582d57a5cb Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 17:08:45 -0500 Subject: [PATCH 12/24] chore: add srcTxHash to schema --- .../mainnet/interchain/squid.tokenlist.json | 3 +- .../schemas/interchain-tokenlist.schema.json | 6 ++- .../testnet/interchain/squid.tokenlist.json | 52 +------------------ 3 files changed, 7 insertions(+), 54 deletions(-) diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index 8fded4b..acb04fd 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -17,11 +17,12 @@ "decimals": 18, "name": "RMRK", "originAxelarChainId": "moonbeam", - "transferType": "interchain", + "tokenType": "interchain", "iconUrls": { "svg": "/images/tokens/rmrk.svg" }, "salt": "0x", + "srcTxHash": "", "chains": [ { "axelarChainId": "moonbeam", diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index 8836cfb..d10c8d3 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -41,7 +41,8 @@ "decimals": { "type": "integer" }, "name": { "type": "string" }, "originAxelarChainId": { "type": "string" }, - "transferType": { "type": "string" }, + "tokenType": { "type": "string" }, + "srcTxHash": { "type": "string" }, "iconUrls": { "$ref": "#/definitions/IconUrlsSchema" }, "chains": { "type": "array", @@ -62,9 +63,10 @@ "decimals", "name", "originAxelarChainId", - "transferType", + "tokenType", "iconUrls", "chains", + "srcTxHash", "tokenManager", "tokenManagerType" ], diff --git a/registry/testnet/interchain/squid.tokenlist.json b/registry/testnet/interchain/squid.tokenlist.json index 24856ab..f4fd49d 100644 --- a/registry/testnet/interchain/squid.tokenlist.json +++ b/registry/testnet/interchain/squid.tokenlist.json @@ -6,55 +6,5 @@ "minor": 1, "patch": 0 }, - "tokens": { - "0xad3a8666cbb964e76419d7ff3930d4095c99f5c7df74480875dc69f25e612a0f": { - "tokenId": "0xad3a8666cbb964e76419d7ff3930d4095c99f5c7df74480875dc69f25e612a0f", - "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", - "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", - "tokenManagerType": "mintBurn", - "originalMinter": "0xB8Cd93C83A974649D76B1c19f311f639e62272BC", - "symbol": "TDBG19", - "prettySymbol": "TDBG19", - "decimals": 18, - "name": "Test Debug 19", - "originAxelarChainId": "avalanche", - "transferType": "interchain", - "salt": "0xdf5bdd98a44080731aafeb46094337ae904888adb884617397fa1670cb054b6c", - "iconUrls": { - "svg": "https://raw.githubusercontent.com/axelarnetwork/axelar-configs/images/tokens/tdbg19.svg" - }, - "chains": [ - { - "axelarChainId": "avalanche", - "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", - "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", - "tokenManagerType": "mintBurn" - }, - { - "axelarChainId": "celo", - "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", - "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", - "tokenManagerType": "mintBurn" - }, - { - "axelarChainId": "base", - "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", - "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", - "tokenManagerType": "mintBurn" - }, - { - "axelarChainId": "arbitrum", - "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", - "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", - "tokenManagerType": "mintBurn" - }, - { - "axelarChainId": "binance", - "tokenAddress": "0x45A8773a47869dF7e8Eb7BcEe1769aEC1b6D1664", - "tokenManager": "0xAa7F142bF55F39F0DdC39241D26c679Eef3F807f", - "tokenManagerType": "mintBurn" - } - ] - } - } + "tokens": {} } From bf48b8bafba8e46e604e8aca7ee3cf0c048a9b9e Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 17:10:57 -0500 Subject: [PATCH 13/24] chore: clean up stagenet file --- registry/stagenet/interchain/squid.tokenlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/registry/stagenet/interchain/squid.tokenlist.json b/registry/stagenet/interchain/squid.tokenlist.json index 36c0459..f4fd49d 100644 --- a/registry/stagenet/interchain/squid.tokenlist.json +++ b/registry/stagenet/interchain/squid.tokenlist.json @@ -6,5 +6,5 @@ "minor": 1, "patch": 0 }, - "tokens": [] + "tokens": {} } From 2f87f1a8707fe712b18d2396b5da8e6f00c3a38f Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 17:15:11 -0500 Subject: [PATCH 14/24] chore: code cleanup --- cli/wizard/commands/list-squid-token/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 7075e7d..98aa311 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -80,7 +80,6 @@ export async function listSquidToken() { ...tokens, [newTokenConfig.tokenId]: newTokenConfig, }), - // tokens: (tokens) => [...(tokens ?? []), newTokenConfig], }, { isDuplicate: (config) => From 2c51a1538fe90320ef19bafd7e85dc5dd97d5ab1 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Fri, 2 Feb 2024 17:53:04 -0500 Subject: [PATCH 15/24] chore: updating lint job for cli,registry,scripts --- .github/workflows/lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 4230c5a..94c9f99 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -16,7 +16,7 @@ jobs: run: bun install - name: Format files - run: bun run format + run: prettier --write cli registry scripts - name: Check for changes run: | From 80d2f8d6ac2c4a1ddcf259fa678ee98251289c44 Mon Sep 17 00:00:00 2001 From: alanrsoares Date: Sat, 3 Feb 2024 15:03:43 +1300 Subject: [PATCH 16/24] chore: set latest bun --- .github/workflows/lint.yaml | 4 +++- .github/workflows/test.yml | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 94c9f99..5686a4b 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -11,12 +11,14 @@ jobs: - name: Setup bun uses: oven-sh/setup-bun@v1 + with: + bun-version: latest - name: Install dependencies run: bun install - name: Format files - run: prettier --write cli registry scripts + run: bun format - name: Check for changes run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4c5f5e7..9a12e51 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,6 +12,8 @@ jobs: - name: Setup bun uses: oven-sh/setup-bun@v1 + with: + bun-version: latest - name: Install dependencies run: bun install From 6d2a2cc6cd387fbba421f45502ee3b42d3541b21 Mon Sep 17 00:00:00 2001 From: alanrsoares Date: Sat, 3 Feb 2024 16:56:42 +1300 Subject: [PATCH 17/24] chore: rebuild lockfile --- bun.lockb | Bin 237663 -> 95288 bytes pnpm-lock.yaml | 1919 ------------------------------------------------ 2 files changed, 1919 deletions(-) delete mode 100644 pnpm-lock.yaml diff --git a/bun.lockb b/bun.lockb index 84d0f7b714f1f56d1356b97dcae882309fa10f85..2fdae08a0bfe55099b2a33785123353b1a04e15e 100755 GIT binary patch delta 28313 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 literal 237663 zcmeF4c{o*V_xO)8L`kSLDMO`+lp&E>lA%y~RHK{`p?lb6@Ya&OLnATKBq#eeZov&#S54H&PJZ*NY$AmlqtR z<`o$%2bXqWhS5io*%T#*mr`#XmBE$?Ni&2DSOt98N+2d{P8yF2Uin0_n^5 ziwx%pI2Dk`dT)PjAhwwbU`xpRa|PPIfm}ZUU2mzLtLS6}^4)}rn>;w|?@*ovJ{s6y_d&S6U;1rfe1cgEg^bM4u-K$WJ{-!}5 z^+H_2eRvU^i_ix39tDYdr$i&g;lyx*0#Q!(=X?8u{(w?IZldLn8hBIqR5qsUXo0-|&zisOGeU;A1`$I)Q$y z0*QG?$l&;yg2eK

%iu@q_t6d_ja?V2GDj42L5K@LhFG37U*9~igYorQd*me3y`o>!zF=nZ1}XWm0tUOQi5{)9sukb3~_ z(Qn!ZA_cr~|BxVFa6f1SsWs@weo$QecoEv6A>k3%fx|fdzHTCer|?5VdEtZl2=!}& z#PO5S7RKQ#k}33+Y5(VLU>Dy>Z!cCWmuFLt!i(nDITJE41ISpRk|uAkjWQ*f)^x=O2*^ zJo*t705dog_B61Empcm&; z%K<{(5b`)53Yc+AfN{q-{k~7PHsWw#$tDDb_yzK!c!9-C``Cd(Jv45#?lPJAvm4ss zc*k(V{c!47nF#gA^fL-ZfBQim{m}r4SOzH#4J*bia6V87z= zcmoXdIRU1^{+B^L#@)_Ls80YlRJ3;u^4K3fj0GlR$YVTugG76u%!T#AyoeyKAb>;d ztSp53c!E%vB3#ZV$YY#KEQS5$2_hr-fdbB1CjW}5j}Qd%aU$Wojtu8>{<_I=nEXE4p#gql?1b&9yb$s@9y>t7l1|`-hlhm2miuj}kYCNz(>}}g zd@#peIM4is3;i7o61KVo3($x2YPti5(+Q-Uqi|nJ0EzQ53?zl1iT9p8ngPi{^oux%Sp=3_gB{%e^*~~O zv_RsxH3f$M(Jg z*zJNN1kSL!Fy4~{KD7t16L5FHc>FCsp^?Ec-XT7`z0eN13`Wviq z8?X%IF)sOGLJ9kqcZ4=yK>uw`A(InLNe^J027m2$o=9 z@eM)2nVcYu%kSk}?~rhq8k}cPkMqHsi>r#m=?!tj{a`J`1qbQId^o=N0m^N`f1D4U=LqBVe|0<;g8vw2 zMUWWBw1q-B3-TC08Xv0veI3#`(mJK}MC**!&+qFd0uQyYHpea%j>`d%I4<-YVFh`d zm+8xd_p2tU!g)Od@;JYDKpy9*Akq(ZH~|MYlSl!FL+3Hr4{!n> zG*>Vx8Jm51=!bQWjeWBPOSL>Folr9QIAQpbqV@J=_UdZ}Rb{&*Xl4)TJIkfCvg?$P zR&J^q_cilnH4crFSY2-Wd0ps_K#AR<8aB7KhxFSYSmnL8(r27Y#h`qfp-*L&^b4&-y zh73CM!YTcT}Fw;S~T{XJTZBnq~@Lhk2vzL<0 z&YSOA_bJM%!_8Aww_MhKncGze1AhoaZ8aZt&*1x&a zxjHJe>p8t5{c@f0SEQrX1kZg{`pN6{7s=@lr4Bj|)c@Avm}}}D&kI2*pEE|hv)$6i z_0}k*7uS>ghZN84R@pLf{r>y?jfeJmeZb=Q$NkOrw99FhG3Z+0DWCDja)Ua4xb$>I z$NOCu+{iafX<0GramSYvX34LpI{)lz`HKs7G5jQl5*dwQ7kfn9U-T(+{bALn)8%#a zt?qxcaWc<({=I+a;E!%wUY@ntaA9(|{h_KpH?+46I59tWx%K@^X%)+IosypDrrek~ zO*Q!E)mLj|TleH8U;L1zw7SU>-$gH+&z!%(%bL{Bd{ei$8HycV2Ax_p_Nh~m%f!l` z-xhH{<+r{eeYoIh7t{CodkR|__)CuMKe|{t`*g3qcHh5@Z~bm<(h=(|KU!u@p6UBU zXGEld+?xBhX39L&%j>i1mWfL{`=|%@rMiyE9tvFtk2X*3<6hjt;p(`Y*F9&;^jzzZ zv3Ijc7dy`>OYDcu_gS{*=&kd21*cAz7p1=T-+B8;rMjR`hl;FbmmgJb9qtjIZQwSw zg~s>m_Du$lzBp%C!Io=A_oD6?*%wyzU)3R+=54de^Fu6Ex<^>w?%d*jMpFfvAE5)+ zU5)L!`tT6NLuzYxwd_dcTf48bKmRCav(YQ#G!L2CirR(`Uk<pU7okz=NIm~B(}($?htzYqgi_!ZrS}S(sB2lhWF{dFQdD9|JK1R`s;1@!gG4) zG|fi#;I|%c@4ObMyg4vYX?C}rOQy_}4@Cz{!75CkweSq6G zUVB}$Uz4rPX#pU+3iWwoFi+^URk3X$$RN?dcx=D1&ud*L= zT4&|v9kI?)9qtspk{WB-J5QMJBc;D`GQ8 zDBp?CEA<|zq?rCfrQO}Dez~(Z92^`nCoA^ef@{*Ad2b8u7ECRMl(lcsf;8g}UWcNv*!~s>k`{ zxRxqSu0^{#U3Ktycm95x%swYyKDc~U>S?NB@XDPn@~V9gM;%|cEqrR<^h@_F)Ox>P zKQNusVPRraaarr*78~LRjz4ttaOdGW-p!56TRSC<2|TiwbMu3m$)U|Z6*;@e73S}tW&~_vN7EsM%pNLc>2RO zz_Vzn?cNho)6;XfS`wRVr{tKuJ1*zsq0zhV585v_`Amr4I6Pz&@5eS{)q&GK_E*{7 zeM-N$+2;*^ZqV`J87w&4R6pZcyy@@z^oQ0_gQu?jo?-ZX;nYdDv@%MMjjT~q%?S=Z zbL$Rw%SK-sH(GZpQ3Br`6=z4A%N+Z5^8PN@g)bju4@ju0Hubyg6E}NOSDSYd?;anI z$bVGfbe8{0)pHkr+qDbI$J>4nEcoFtK6*kst(n}b>-&$S`-Y*$$*%KvaWb#m$^ZHxi#|isREgv5__jbo9)9;C)nFj^MZ97aJ^}_6)WA9;y zzs>F(tvzm&nfCdV!}3qlGuA5}pJx~2nd{zs|A7$WJM9i_E8vEQU6KvEOYO35eky$y zKXY=y(nCAAmXdc5R&_hK^ldZ#qsqe_^3{HnMEAPaF)sg9aDeHuIbo%@&+e|eGk3Pk z_`$a8DzZ1K9Qh*mbp0}Ii@ZU9+plO}mXCZmaBan^$hL=gN6%m7-S^Wqw^^)utkMEjxMejoOqQ}?Py(|w0ia8?8Ad;{st4W`u2I1 zO660^yR^FCtsP@BZ{zL$>R(S(JbyChwodBGPr=Klx0cJ&w9ol@?~eODvCjv2VOr&t z)9hP6+cHm~tV}xe$;c^99bD25RFCp(fAh|~JFDI(Z!5T+CU3lJxW`im%ZTnpT@U5m zdln~S9ysr?+Hs#L7QG+nX^(E+X6WNF@=Lltq&U4>vAe88ocgV>~=c)EeN`a#_6|Rn)8hG^fo_*Ub z+T2}foYyQ~?zyX~`T7Olt_bpKt~n2q%_v$Kvu@HAewb-ai|3(B%xK(rRuY>XrdRB> zyHz}0`)bpO_U9JMR?OPHZLCA_=<24d{=4iOiP>EclJCuKJ+cAkO$)0Ohbc;Hwt#jEf zGkE8XF48i0ChCu#t^aV&-AN^H9>w>*H?H6NP7}hUC(?fZ`#zs?v*&s3kRvW}(jKc! z7i0!+KPH{y*5Twt^^qIaK5B8`$B|yfW~yex*5yBlGF>y!@oLoSf$2R@MM}_k()ek( zcL-dyUaL#ngU&lNw%zRB?(*}*#g2VX?DE;-xoKkc)`N?ttIVpJb7!&D&lg8bZoS@? z_%wHMnV-Q5-qr5KDLecAEj~TXyygyQDdka_u}OE0!}p9h56NB8g4hFeo(wY{m2TX5 z`>{BO%HZWPUvIB9^d7P2lwZWgJwN5Dr<4tQ`=(poMm@t~I_H#ba`XPsuF@{>vxgKv zF-EferM@lHkGT$sx^+BWBX?sDCA;!rT)(?JyPe#Ysiqzo*xdgMUqAcu#z&owyy&W| zU$y+cmD44=4iEme|4%fomR_|cVr7zTe(Y?$z|e(hL;T-$%{T1QXq*meEA)fad0`e$e#pLfKgcx}n*4Xvhx?>ldGGxN-Xb}LW1 z-0WQZ?%RT~#Q{9E=2iNON=D}AOl+kS=~QHVWr=%;)`zbHFG~+QyKeif*RgcIdh%x2 z1IL~&{4Pc_9Ipk>R2wxWGI_!MOSu-!Hum1}#cV{YwX>EMCSH+W*v5l<=y19wt)Df~ zvA$#D;~cxJX>w0rY5!Bj=oc9(1#P?9@4aav^&vO?s_Dla{hPe6m@sYDDbq1eEbJ=x zXSl!EZ1K=-xZ0qC!5z+hUQyXqcYjXbNp>!Yb6S=)ozVXMRfX-QC!_BjDH{GGvWFzU z)ezZl(R5y~$B+wX4~m*)?v$h%Q|v2;2#>aMPEAT$w^MtknYc$Sjel`JYTyr>a4C+ z`h)}03Qg8_)ID7K+dZLO)lK7`O542d zx0IS|t2KH2;FH^d*czYK+neVOx2gHP{O0F{K8M#odb{6w$lnd(JxNR-G0MpW}MooPTf1~iVrY&BW*U9w?wLk!ZbJY zro}7XENaKO`)-C;fYF!aw$ZK6Pd3?Eu<=fYdF4(YHTONCNl#zND@x21s3h)JKic}~ zh$rUjX?)rbljqIoI`zZY=|67XE7T7rN%QDgG{?Swi?QX=1zG10`z&l4Zn#(P)Md_& zxWy;N$>gi8DOrE_>dxFQ*+*`7YOm>hZmMF}F3O`dZKkk>*x1%^LF~U zpPMx$ESI-Ru+;O|Ie6yJoVC^M+62>cM2zmCH+|KE?PK2N+$c9cI(6bu@8%kFU2d&v zbKpgXSw{oz*A(yUp)bGkP_g&bJgIX#&DV1ETAIzur}NkmjoG@IU*2cz?lsu#q|=aO z=ciWl6c_tP>p4E#F}8ajGr#+Q9#jM{Q|)#06e zy$i0*3F4fW?meq{!liC&rgE%2Hm;vEP10HO%i=jD1Kjw&Z#U@Z_s2T9u|DF*B65CL20_QvH2@qV-1W zVO_U`KD}r0yd-u@9dOumI&Ohnv0RPx#$FXOr8cBT?hWbezg@NGHSN#8=M}DZ?=U^ zsLa{A?Bb(ip(|59-mQAHt7^i~q{yX5q*8z8aG&q&XE^Yf`t1X3&v%Kgy;ZVuJbdHb z+*BuiSlTJn<oHW9xWK*L7Ze+&Fb#y;AXV(9?c zw}cPWW zAI5-9qW1X1%|XB;hZp+6CJ|o_yan*&Kb6;~gW7ck5Pou#fbHRX71l8zegg2uz?1*t z&Yv`fM~-dm&{wiQ1VFSeEmDT{^(EqyfyekGkBO}h#FsKW`j1ImUI7eSfPDxgMBha<&^)Mq;?h%H0(dd9?Rf6G**fDMBuF%9(9Pzp90>r5%wkEOFr{P*tZbj zu}|>bBCACGPXXQ*?Blp$|Jf$u?*QKyc;eLQLp_rCw(zAk?f-~Sc|G_)?M4ER@yGVK z2HW8W7K!X+0&f94=4lSG!2hxT7ph)xPAexP2%$SV*=d&5f-NpWZwvQ z96#jIe;P;3*OiE$1U$wM^T@*OfK?)XJ@A$y{fFhqDiMDlcs#!$#CGmsTjEvWMIyt?1b|lIV=-*{v`l!06c6XwLIx1KmR7F-ErV?{m}UR zt^M!i#J>R^_b>Dxb%@*luF66l&u^%ctsi86Ebw&x#yKpm{jVJ zKMk>O3p~aTSxnR~VeapLsohNA(SKU^;`aX{@HW6xzs2P{!b3OqpX~qLyvd9*KX{}tN)IzOWhan~;wcs;O> zcHvgQI+6d&fXDum-xP=X6cJwt{9uv((>!3ycZ45@S}^uWXMHTzQ` z8^Pm`=ZS}{RBZbLfj0pA=(7e~7zZ|q;+F^CgicbI$Uh`0peYO$MJ{P7`0<3 z?)=pTqZYukwF_oy6WI>}-lh@!o<`b#3%nKBM}NpC#>F}XwYAd__FsbGQL;(I&jB9i zKkom?ip!q_9?yTY?!@J5fXDTN{vb>12tL-CustR_O%BIV#J;e!{=dX;0-na7t?#Iv z_-DZ5^D92LV;Qa?Hi`JquEOzWd+sIO#P0Bq&<`D1=eg5(UehBawJ51vGpTpQE zf5hc~08i^zTId3+zhrNK7KdZO_|Mih8X$f$@Ob`e=>12khtPkt-4OeBz~lK9=MT<7 zap&(8;PL%A_6O}#zu;q?iP~i`{^Plg=0KewQ%U?i;PL$h`b}lx@U44tI2OPo(~$U$ z1|IiswA~PX5%4AqkMGdfChBVu@Ob_e$2Qs^zG*KGM~CS@+p!nr`vH&l58A)P^?w@h zczzM5@1pj10+0P~=>GEsc>4ZboH3;Mx%U3Ge%SV1)c?5*kMYAXWIK*z{|NB7f1yq} zxWv7G+QH(r0G{l!U4vwQ4)C_XV;=j^3@$c__%?8Owh^&U<@M>Hc5WhkL*lmv_{O~d zD+eC$zvK_ak*)u|VeyH+KdXsaEvSR_NV4w?JnsLP$2~w?`$@p#`3+grA#VRmfVUIzUtIg`!8qDSj_ue%(^_9q z4h0zdPj)FTSXWn~cJaWAKEG3WT`bm7yEDKKVeF$1&Fcf1dg8nF6W%`wqkd5SZ<2T} z@Qv9&GJzMpf3iITlKl$casOcJH}!{j9XNd9_|d#$tA}_m;A#IymhBuOel_r8MEs|6 z^7C(!+PwoFXSLovY5^(Epxfyez5+hhO5jo&ih(SPDmvPoqB zh6s=T%d&x?4e_m@^Ys1{=N_nIm53h!yy*PFF<_I3Uj;CpU(t7row)P=9`Lw-qdo;j z2Z(wT*;j{`k7%F9jbwcai1z><=Rb1T2P$XFuK*ryVYNK=UEKJc1|Iisapo@iMt(Md z$!o>fN894sw*lS;c+`n!H@1F|{W-wX_%|eer+~Ky`?T&!FZxqgqIT_I@}Pa>*^WKx zC4MyUc>g8)b=efHBYrhwpY6OS9mL;Ycs%#Ef=iJa)FX-S1)EP}`tQr|CZv#Az zy}0AQ5O~}_Y23se|2*Jv|H1w=#J(&{K3j$d6|CPuQT#>#kMkerUqkHA1|H`h^;_Kd z9RePPu)+J^d*Jc@fp&52(>j8WbtdZn0Qm7So8Zv((fQMU1t$iB9It??GWIr2t z>_7UCK8PE?N5JFx9rsTfL&ij%g6z8ijPsAikIL(Wp_1BV08jf*L*jQIcnh$PV@Epc zvyJuCRviwX^!}C&M{S6A0G{R#+t`cRUkp61KkPduwmQgu6ANMgiANo567dce!udye zlJ)7Jb~Av-_@Uo;(L7+w?*bm@AMJnQ_P>v%(0?3%Oycs%z~lPC{;*}y4)wnrc-TS` zungA_TOGu!Sp7Tx;_g2Vz@vSPA6piECHr%M$M^48CJz_I5%YB=;!goj>lgb^<#n-G zN9{fVkNY38n5bNs`}<#NXJ9S7|KPl18++7Bd=T&!O#hLma%@vqqINqN`)uPzI*ES_ z{BV)}v+V=%{cMEum)1{HGEk2sJ^=V}O#fBtVMMEmKMg$2AKZVG;1bt9{`e8k52R0A z-UxWyKZqAMe$#=c^^e~lh|3=Z9?y?xA9=Qk{FQ{w-x7G_ungBAn?(Fz;OYL))_2rT z{50V4{D~};iDQ2k@U;Ilgn!BOAJ;F=AGV2X^%>H*-!Fv&kMEzv8GH1R?C${{<1Yzi zc(F~yzXTrVe?#}LiFU&H%YfmAjDI=sxPEcn;oM`ZgZyth^w;wT_FdfdI}vy<#y;|F z6WKorJUxG-Z7Q!%54Dqm!z=C|*dEKo?Y}kfum#lae{F#mcm1vep6;JGf5w(Al)6ns|1w5Xg+1jPPQD0k){Ppio*zR4ZgLoI<>H7mLXX^*?Gl0kO!}wtm zcmA9Q9`9drLR@TK(uuyr^!WGqUGP(4LH~+h0PyHPTfa#;*d47@(rr#xF7)P5WAM!?g)C$9f86My-Su@aXb z1w7tA&~NmC{DO~lCTf>9@z?jaZ2OLiiLU_O4D93F#WHdI@5mL-f13N^^6|jiF#QMf ztP}Zv0(c9?f7UQGB)+AWaQ>j*SVrab>7sU4z@z_?3?Od*7Xfd`@ObCK-{G)HWd98C zxPOsdlJ)5zzKOSR|HS(*TNZT_-ye9~KXCk!r*(vF>Po~10&l_ik38EsO#F7>@%b4! zETeINk98*E?*Kmlc>?!xBpv8{&(>e#;*m_gsl(6y91BsA92oJXo~nPz~lKr z63WoFxb|-VFFJmxn@uA7t^9uN|7v9a1FCbWWNM>D~4yoQ5)iw`NI7l^HfG{>XOvf z6?hAZ7Qs*9sK;#C5EonNsG{a}-b9|k;3 z;oA9+oVfefKH%+vC*Q^8e*lmB2gRQJs;>{!ZeZZQ&yV$SR8Ra8;7!3k<*B|tN$oEI z53k^B=YM^SXg%@jLBjJ7+jT=ah>rlC{Kwd9QiFOV@q2*B^9!;tk69<;p8;>n@CY|! zse$-G!M~nASfaJfh))0>*FP4D6GP$;0&fAlI4s&C{tNIJe>uj!xc47}kj9OF2=I9R zAb)5bp^tSXYQGM6j2~OSNhk5wfyeu23#h>Rhq&v%Q|Pbf58Ok<<;MbV0QLcG(0{*b z*WsYQQBfFBc|Ue+}g=fyd`R^ao=nZu}+#kK@-+`^CUp1Fs4S z*xq~47R66B{MUbfj>@pUzC>-u05AIfp+1i4iC+dhjvxAuYlrPRApQaHmQ4IQ0x$0V zrz!aL`zN$5?)vot-U{rKKcIqDqV}7BAKZxkKL=hHc-%kHe{uV779kuz!sw*q*)|Np*k zdGR8+I(i(=qAMFZy*;8DOLj?;eZ44Q{8~c=>R|f}L3{wiV;*BKZv6KGkNZDzxQ4~$ zp8`+sZ*UHDhKo%i|9emV_wyf>*QbNp1pzPm{;fWa>WM!9ygt)^?7O)8$0y(i0FQc= z;Sx7~k7I=Aw}$dPrwHeNL-`Qk?Hb|#0pM*K!B;oZzBQ~Y+eX-*3w&ezF9yCb@oN(& ze1F!^@#6yD82ej+cWgxbJ~z^T>-a{FAMlOoe+lr78UHp@8)x4G_~DI+|5o4|Gyh)$ zkMAEEI{yYvYh3>mfp1LziyLXb4fMP}^dHX-bYU#&OLYGjk{~?4Au9gga<)2%{{TFmKgoa8!6p&kHSw4KR3;8T9(Xt=B{TyF-vO{qWGe-D z3*fQeRK`XJwY>;@U*Pe+kI!E%*}%|-_#ePq0*{ymT)&?KvHVYoc(duh_|DK!-0@2X zeiYc302b$;!k>)&p^WUm0^YO{{`Z<8ynmoRy8dA9e~QR{BJenWsR5N!{%?}n9Rc1D zc*_5+{qN<}{w?tI{;MI+-#upv{YQN`_Bak~6500#-U|Fjt|=RkX+wM_@YsK3CB@J| zd^zJks%;40W|r{$jq8_mqOST9wRHj> zsV814>EAr=BWx1!gMc>y`^ad(B`!Z1c-+59pSbx)%PhE-p z?LAw#|NPDc^P(ek`s;C;+r3+7-gPw`QU0BX_XnQlKbDF6{Ja);^dGh39RA%8EdNs? z`&WQBZ^ZcN%@Kb8!PYMMLiVo#Py3e=RN^{flZcm}D_lRwG=z5sehAb5hVW^?4{Zeh zpppJ-&1;L}Uy%sdi|H;5N zX8eu=-DV?G$Q^FfNxCvdZq~f{|6g7{~~~IO#hDo-1l5Fi)15fX7H2{*X4`k{oPW>1E>OYmSQ9*6}fv5gA#Qs*`MW5fq z_5TU*{UCmH{*`0nJhUPIRhBev{<#5f2KH&*h&z5OfN#wC`3msVe~dwMG5asSRQUY~ z&f7LDS!_n}n*==VKjP>h{v_}eKa3%j*XPPV?Uo7Shj~0ZiW`3u;O$`i&>phluHSvY z)BPWLWmLo>k^k*eh3_ws#s1Sgs!s*+-VBfJQ3qaZ67eU2$NigZQ+a(ls9m$=!u3RZu~elqaDB_JdN7x{ttx)Sl{f!AUBk7eTWpMkdo9y!ukmtCr( zwni&{{rkbeP$};Cr2vobpU^(C;`)CMczS-uxi7B$mMeepZ1-+3^G~d7fwuwwF&=E^ zjwrthczcGYm|}f>iP}CE@gMDr+ke$G;rJulwmzdG^<;lsI)?-QgtK=2HH6;>{DemE zN~<^=??&*E!1Eiy-vOT62;O|P@V{Tt(DU0({*PHB{Quu-sQ)K`r~4;P zFLCE@v$el|ze96UWSaiOJJ{uDqi)Rm}R3FANA zH!ucl67fpwf8Br42fWxM;vLru#}65_jqfnoB;pg+|C&F@iR=GP;DPlq) z+xmY$Kd_wx#1Gmae15}u*Agyq?F)d%^Aqx_aM3uz$2t?)-@@3(xFg%8PU=@B@ppkY z1^ZZ|0hhS_@3isX-#>^u{u6-5^B>MT^a(FEiQ26KUKe;;_f%e=4r=#+;c4EJWXmgM z{96C0Q{3^l2Yw*%f`arxn@MvGO3_sVGh@S_%1@JU}Y-33LL&iSlaqkj$|LV9| zIR29LIs98a*`EqLKL3&5;@Uq5Jf0s&AKNjc_Lab!F+5uqyFz@gEx+RbTNmrh5e3R{KoYv}kpFg)9SQ;*31`M~4) zX{i4Nz+?YWAI(9sQI{n9UxCN-JLajZE{^J`ZSQO$-%$V80`JJ!C*5o$*{=j1=Rfsb zh7AmDi0`#c7(X08oIg}vpBid65qKOw%r|8Itpwfzc$$A~b&&lV3{Uy`{HA(p-){S_ z`#08!Yu_1oEASsVy2wUdlI$-7o}M4;YX5s3@n?X?^9$M*XATnIVu#RvGsXbTqu=fQ zo+sW6c-;T79(9Ntzi8mifk%BfciGy9rnSG-QvfLoS39_H4&yTj`atJEl&D(`E-Y7v z3lmDrYcNt1Bqo$t-W4;DL?u2S!C2M$2+usV?O^YzO(@ZKI1AUN#z?deF|AD~F%RF- z)ar+|UOUcKOnxwvAIeDhE~K{INRY@m!G#GW=AAJENmQcWE^uM|#=(U#<->&uC32H6 z14&e3c>r8EZsBlYUH}&+l$eje3?!78kHiclQHl1W;llbDxNy8;;lfmxM1K>o5u}9L zzyFq4KMO9@H=C(PiFW2NaxNq1fy9Io>*q6a0Z2?JQBMk7SPx$t*Cv!$z8EenUji2< zQHka7HB)U8mDum)OgT!_vy#b+BausIIFx7)UTfCM)l9jlRD-gkO#LyY9%XyD%HV1a z*L}E9??bpSp~UhkxKRIVxG;%IZ2z{lv~G#~JEk2-gPI_*s4G*BQV#MuOdcin+knZV#E*td zUK}Y2oH4_jfRu*3C8Gx=ezaopDDk5;{K4@W%#@2tEFZ#@i%KlAW6DJ(wzp@>QR2s8 zOkPxCJRPANr4vZxMltRFB(dHF>aocfrX5P;-9Tdfc#v4-&g4BY0|_O@#S0`Bc{AmI zk{B;O)T6!trhOpO9wmMZfzQ(t7?({<{!bFCGMRdm*nTTW)U%x_M~NSIFnKl-_3UA| zy&y3T`xzc3e#~L=DDh)1lShgDJPs25IKh;oM7^g$;(lMql>bR$RS{E<673g*M17Y* zVpR$LVI+RM!jzXX4=*KN6N4>Whd538yDzW|^lw;L>Mm}KLp~R05nLJAT z_=w4iO4Rd&DMyJPpEB|pBcEd-B$ODRDv-#%VaieB$G41p2NLT)U?C%MeSCvF_WK7T zYa3w$Y>Y`n;>RZN2ir@5L{-vEy{N=;8K%A&Q!gs9UY02rmADRDK{?Kcc8pX5iA^=| z4-CXW*N!60!w?V0>AMh*vw2_?330EtB-m~v5xXJ$X993_6_GkKKAPh#?-63YXa z`anhofy91CTGUc;2vC9%B({K0rN!3-nuqZIr>6*5eDT@v|bOuM=ywv%Pr ziApSL0e?^`F!gLC?i;P4J@&U9NE}ZchX21L(f|I8-+z)AH$A9Fsn19QraemhXv9bp zkhq?#u#l0+SwkMz%}|iIZbpMdyJJD(IFAE~NmOFFJ5%q;)T6|YTqcha^?QND@$h5H z|0J<$5>t;7_nB~z$O{-5!PKKf`%xhAc_V=-|Nkjb?>x|ps*@T0DAAu3CNC<{pG8dh zpCodNnR-!)bIw;5X>p`OZjZ8a~nBTpCrzsgG@b2)PD>l>Oanuvytd$KGPm0@+TO1l92^WJxW=q zzrf^0C33|~IZDi5Wb%KKX!kNx|2GLu{(JuhF&GRN?gv8|`QQ6D2n3`AxNzRjf(z%< zY`8F?#Q8Uek^jAagFry~@BN!F4)QoTAfd!9s1=j1OaAx%?Z5YLb-jnfdGz1=H{pHi zzxQv#`_VnvS8!|j@BN!F4x;bfAS@irV|--s=KY(*^X-4{--PFz|K7g|=gEKX-)fgh z?fW=fH=^&|um&F>Zz~hpZW#C2 zs$k@Xo`S&!7i^8j1+QOFvsqW7Ot0|cD7|i(QYX*Fy!$-*{kPdmv>$9-E#p~gwithV zM0%Oml|sGeHwRmcw%3ko*+D|`SpI zHyW4{JE(G^RKQdT>7Y#$TB>Zi-Z4ryhwX#=k#ZYVMXUT5Od=z88Dvs%xvM4ciP1OnOsn$ck8Dzhkgx|A}zxZy9 zlH~fW0jMA^m; zq1!JndtKAFh5P4My~>-s%S*U>{I33Yy{EU*Q>0INwCttk?i2sz<(na(i1gx_pOU0< zPuUS440`F8h2P>QB&fw}?%$so%(J_nQ24RRe(7QFZqH<1-?mapeQdHdRc}M+>ERNk zEp+6K6Z8Dq3{d(y+!Pd%Ui>bDl4SAj`0W}NBgU1dbh8fepVY&tc;eBCxg+GAI=S6W z3RMW3Vt9MJ$Fe4CBQ{<=)bC5evstB&+pftim$K+H$J1w-k`gE)z4$JilH_2;CT8cV z=e>R#k}k(Bl2Yx(Z+)|JVNKM)(Iq{P>zSu(O^_OV*T6T;SU&XWndbKvw_H*9!!hpu zd$qe~hRAN{))N$wUfg>rNk&v2zukO!#g5$uxkEG_w$B`(wjf~ssOrSN)vLl5#}AAu z$T)lV-s}Ej)>=**vTj(>%nkDfZc7Y%Rc2}|DecMWV*!dtFTTT~B$<%;@KKYOJ$;(* zNj#P^x+Ja3+g{`Ms7^@xD50xAr%7D#v?EO~$W>k&6CJZkvf|6jMBW7@wKFgF7L2hC z;wi5g$p=NGw*@H$DS5#Dz4R`VRgh+_~ zucz~`Won!s8qsb$|IMX~iUvdMOr9*&ymxHcigFRX@}hcA2Fe_rqPOXrk$PHJ!?GJw zCTIN|t`(QE;pkK8Uf!nyEZ!X2@YTacukH53#*2F{7_#2y+*pkfGV;@vH9Zpt9SN`z z(Tl&;qa>;5_F$@($&GfyjS2^?92&A?j%^z+x7U&17FwCb%{*snqT19f?SuTAiXyq9 z$G5s%{P~z8sV-6Ss`Yf2*vp&dCF5^QDGmyx6r|*?ts_De_wZuu1U+XS*{gL*Pdze7 zPNBoF>50R_o2TzMA(jMet+!(Eg*^=1qNJ^yEk86<$9}xi%ttag9)t%-_Cfu$;Hn zux6Wg%-qr4qrdcirCpdj&VU#=Iwi#(nfA!iJ9!n>u-||JX?K7V^pz%yO z2W>|_TH>{Qdi?NbTIZU2Tsb%?CE&`IU7(2KfO|Y8$*0L}PmH{%*UC8J&hpp^Heu$0 zf@mN2?*muqJG3i4y|{GR@e))0@eiLkSq!?}x}}%5rbhu5)8fWud_|s`ry zopX~t4NlD~9df^V!mRTmdOL{fU4EtK+2<{)6fS7Dov?UswNn1fAU5mZO)&luvKeTV3()sxYW4Iz^@aldJfHtlpL;8CZe~as9w9T{()mV&b@vv z`boFq=$XmgJFBfsk-HI6UG8i-E@bJ9{D|qDs(rE+Tobs(m>#e-iSqo+yIx}~Rj4}6 zHP?RGW)Z!eMD@1c;T^v~ab4bO^YZVLUY>HV2$&GtHhaw8$%&ULA8dNyJEqX7`;qW{ z?gr93q~xDHkIhb=X!a&5cBRUTr+(+G?+JfHFFg0Dit252D`RZp2Wv*< z=7gU%aP8Ett(j8E%9`Qn!B0E;@`66tTDIS)e=BOATc?{_n??6f-Z95=k<8_%JJm$| zrGGbp>LsT=$+zFVvRrl6XY1Zlv#QtFtlfWn)*k1(d+lt;4o^L4mZ~0i`=hzZd(+pI znFCxsnwH%v+um)+!0XwHXP%nu>YpT{SM=X?OFr**;rVgug)-#z74o zWs+n8nQP}ih>Z~mhXQCbAI6B`=%pA3C#@dw4kbixvXw29_Z`WOawrJVx zm#Mcl-a6Z^WAx9}2_Kgpf4m*Dle3s*Ogryw{GX$N6W2VdVA)FWc6O?ZPa^Ytcc#OqI#2C&0RjHaLt-q zk>#U|2iRrL3?5{ac=X!s_Vf0cY%k+YlZ)HXbG7flDdcH@q-i?q?{E?i`6C zUhIBXkEd$}s(vhxjUD5@#l5Q4{IYGwv^E<^ZH^s%dq^{@zD{rYB_|=9T`Yd(O^qx$g0@{P7jLs$1a$CN@3g z*D5gV$gvBHJ3Dj=ky~wba9OU1-X5ZQ)66yG3-6asnbE$r?|S(SE0z4tr1AQ7+5gi% z^P+K@qE2#Dw;5q+P4s1rw!d}zs4#F>aMfD7WJ87a#(mnmE4~R8(TitRN|H+M&mOyc zUG{3y=T1kP^|0QrFF!hWXZX_!pH?ldPg)ZnKkW8Zvk|@g{CeA_O}yTz^>e8~Ix~mu zK2?6TV0T2PZi@JCR%qOMky4P7uV!~%%GuS==;d?+ot=eepGl-SX}+myvatWRh%w3o z=I!$Bo048BGd=FnWrv{FrqAZY^V51?kU7WsmOp2Lg2q|VeX_TxUW2ot9uiC-x>G_>Iue?p_ZD9J`MuMlSJhS_!g$v&^M=TP1e+7dwr6^cig?Z-8<1`jAOem*&EA;ADZ;4 zx8|EJ>(u3K4ysFQ^6mF^?TmW@jay$)y5B9D@R>^HoKClWyak1C^>cfy zx?FiDAnV}R$WDh;wKqAedeAm)#tfs(;Bwi0?Y3=P-z07O-qm{3KDwU^ znrdw#;;){l-jvJVCI(fPESfX_r>(Rw+Jc{phFa=)!sFlQrVcUS4mn z?UXw5vdU@0eM&|4VLq}M8cAEdJIz{;K2jX?MfK*JCd9by@o42gAw{>TmRj<-;Ypv~ zL?oyC>TWvr-o4A1UaHN{yX^2d|zx2YfahZJ< zS%&vrzJ;5@slF}$(0PoAUPDp6v0;{};ZFv<`8cfdZ1L7h_eOm2+tH)7^Z^sc$m|OK z>750wQs*`8k@@1qSeMY{{1UCh^V08q?eu9@zt1N9xQ{~Ki0B<4s#ngo)%H*A{g56j(XKi_HTc0W9*plq4&arORL1PI>({%Wk)i(I}H_)e)L; zrwy-+=P&sh(>&+sfm;_UH6MuR#kovL^0iv4O{U9qR~OA6`6BP|EH6R1|MytlTl;5U z=A3S+Fx7J5x!ajH?fQM)Rh4G1wK6+n=EbIKK3zC=?c2s{FW$%YumnXke+Q9Lkdm?1 zE$_;>j?FF#Jk~UUf7LZ-_Lxf3fy0U(w7a+ZYqRKKr|ccSBs5W;zxZ(J#vq?>lRut~ z>!jdftvlyvOH-Yt#g9ew;yWZtk~RI)))$6eo*+F$Hu}ed5~DW*!al3)-`&&PMo)*Q z{5^J|Z0cT_z3o1xUx?mrX!7;6M#g0s!8N_Im8&c#U!SOg?=r|=Gg1mtvZRaG;gY*14eizXT|Hk>BBw5}kVMt-(qKX@bRpw5L>^W9vbVcshjrs5LFUJkhy|!#n zQ`N(rIIHetZ~1uS(vs0;4;TARoDdF@nJ$z?I{#yK_75w#fFK$0!Yq1Qs zGXBSk+xKK7C*V@OG|qI5ea^18E)@}?)9*0&g@G4F!oS~YdKuj)Y$T#n~gIoWL^Zq>!E4%^k>8wh31a3^Ibc(8emd1;^GRuW@`8H9)2=ky}x9MBd!IC zgEc7yDXA;{`HhNFV0`CJm&4W_&b(3bb8-A(uLU`*eae zIJ#GJm%E%&l8)?WotP84!91pe==&0UH$_QuQOSrxBktpq89Rmsow>AIrAyl4{o~HI zPx~6*epI}(@dYcT(jTM0Xm1Pf^pm%aIkL6y;w<@$kuNnC^mA?TaBMcd+aiAllTwh9 zEiN2aRFND%>8PLgv#;K+N91omPFiL+Hs56N_U@Zct;o?lenqEs#$n&RyF%xC6x~(L zcQza_e&Ss{yNIksBc3FSJ{Q`G>h0$6DmtP#g=;ukeb&V%gB0UV%DYQ$QB8ka-7HUf z$^K}Iv5PyqRQO-xe81ey`0ENAkBIp}y>su z-{*Bw@On+t@OZ-$2eOn?PslZ??!KkFn@UULOFIsyj{ULFeWq#9=PrwDmbLEbQ}A)= z`Khl@+`0_9C=Pa_dbhkVRe3txd19{inJ-c~A*(lr4gYd-)g!0ODz%pPw_UWVUOAZe zc83_d&w2e);lw4*K^_4SN_N zH)x>!#}m5@*Cz9PM@x@6GP&+*l4so8=+ z?=O!Zyea$k`GV?ep96biDgv9|@Czzf{rST-JbolT)PS{)GSW@6WjUnJ7?j|5jLp)!pJ!< zL7kjeB9nv?cPrhDTftVYfO-{yuF8DxMNggA=t>l+OQOP*kTUgubit7n>&K|}x+<_n zFkd{ak1keb{dTVvH#*%SMDQ(}o)1|qYE<^Fj}SrUqX1V4=(d*DzbidYjqVb)4X38P z>328{A32flK>vxl6Z6}jZo#E7d;FH=xXgZ-hnJn&uGheY&m%>~OkijrpOG2+egWVr z1KodmnEi2{yR|>!__gGSa{jbIV93Rc`F>`8YJ{vmWKe|eay5j#VaNRp`@ry|beg@q zbaA?;SbtYw5gV4tG6n*;DnOU>U$}HxMqKV4Wp2_ZR*P79_+i#7IOG&O{JYZgnWbA= z=uJ)pJS|ZNsB>bn^=K0qChTpzT%-@}$E~Cu0t1%-_iYRU2S`FnLGX7~S!TO1%5~VB z`N%8^l+OLSt07tX!byZ1bP5xBg49##{WtskenU~6xCg~0V{fYH|sYR-j* zp5s60#SO7%OhDwUU;f&w+4TG!ZPjg(`A{!L4tLT)n&D>Jak>#w@n-%ibxA(D)-<6W zv%_SM-=U`aZS4YQb)`XJpA~u#{+I-+$Ff-v8H&QdEkI^rAJO%MBbKw87|W z25rw#xfmCR1mth`&soG8S}6}B-P1t9L!i1{59?8 zKdR5^wVGkS%=6P>Qq+ONJ!dvH4Xyw2JDZj+%E`B-TaDY_ zOa~u@k}Mg6@u?%2#4TWcJ}0UbC%W^l5D%36CV26 zHf;CDqU(1nHT<>5a0NHcp;Dqebv{$=VvzbV*D%)HBP4sYtg|LxQ;%5%Lid{AIIBZ+ z@f8Bs`&K(RK#(MrE=_dpvlA>1h;a;^?tK~8&CskT&0|@GJFJ{y)fP1u^zzTE1Z`Mn zihGM;tf|cBBs#x;O2#1U()oVSCwzs#t{xbD%^=ecFh<&{Ntf{B2jo4zHJ*bVb57bQ zp3f<~zhy#kTb9SIw3f&x#Tr|0gnFb$15uq@>k&*{I>qdY0#p+)KEMK8eV_};daGGa zcXCxfxm7rAIV?w(>Z^4xc>CqWL=tk*(_1gR5~*;*|8J=IF9+jt=twtv*eklL#xx7u zD}Lyrdt>1EYXEd3@PE+>-(%HM zbWP4^Y7(RCcqiw*$dd6G)`gv%0o=}*SKzjUM$)W78a_h5Z^e4jTOR|ruMyBaI|?%F zqP>FI8h8cxA~mp1nr0O6!(am z*NgDApsxQF(w9z?hrX7Z06&E$yH-o!y2J$NdUN0gg^bON1hMpzkgl_ zFYLqyidbMg7lB`zD?NWz$xRkBvlY2jrp3qX6!pKBd#xW9b5~h0Re*X;fo^Jq4^86* z&6kmp(M~fMbNuMLt!0}w75>6_F6b^PnkKH43Mi!6V4mGP6q-b;Py2Gy1`7%WZ~TLvtRB_tv-$69&T~6)*#@l{vkywnz_mMTj7m_s9?CY zI=Od9!yVRjnYZs&QT?x?U>rJ@xOfl^D+S=11Ko!xAI8pdn~8$Y|0G$y+bJ^cFpWN7 zD}6(D>1g>$Qgi|h82+`u5oI0$AP`-Rf$0<;crEr4#U1L4qn zU$2D+cB-l_F=qtAAt7jd!7P}Mg$7j3%483W4ff4WR^y_vovdNarsRtmNNaawbxyR1 zIDBpantI&;_w5}3aDaxwE{g6O=Z;9aieCily5D)lqNYk4BPYczWiWOZ&t{*E=1-oI zxRBM&ST8Q^@S*ZcD?I-?HKA+m9TxnB83nw5vjU^98N{IZ(Zu~`cQSPCNU4fh`-pAs zN4#)<;YUAd=o<5y8a2f^czlw=b!wx9@=Qh7M`HSr``1j7^T~Q{AO=56CkdppG;WHEHqrgp@%i&6dop{f` zj7OJpO_`Qyv$dbE7WjF1yL$l#s9jiM`axrZizM#R0D~Mp`FAAaR4SG6ihu6E+-Mcs z6A4rQC^)udme4kNTOk`WlgZ9m^Ch*k=dTdhwFRTE83bPpeYqAOLMmlt z8+W$TO*gFRfx^Vz)uCK0%k6IMXaZX(enYsHcgcG*bIg#Xx00gt$VQX9b7DE6e4mv6 z@-{YtT|1zg%q?Q4vkjrEyLN0*OgDU&_8Bq^j-qTacgVmfr}H`lYm8w(HCjBQfqzz& z?&~^aM-hpn`x>`4l=n!!#PbnwJhKP7o3cUORbLYAi-*6@H)zor1#8#hqkU9C|59|0 zpVr*a7u2R-iBvh357%?xr^+{ffL5A=Q+ZFC0qK}lv5Ii&0jSpj=;ko{?ZYbG!)x#$ zGPz}58nvIFvPWStPmYG24~YzGWP}Js-On{-yifl#J(Pw`Y*BCTHa4P*-rfw)Rq;(A z>21vbZilzA4IH2pH3Lbfo+ciPvHsX^@&tN$Gl?K*MyGIDINty4YV|(Bqft0=IfgD% ztwx9L{|#A;iuzI#G1dC46||Jo>XrSrHU+z1!RTuSMMpVzqEk=wxd`lj4U5MTQzE>X z@Y`nHG&jefXC%I+4FSRb5`pO=p*~AYilih!*_5<&bF?bLZL0Ap=jOEn?l+x)?s%#A zhThFnv=&bx{O|YOt)k!VL9rq>FXcu7TRWeO#m)rn4A(4aqfIl|A|?;N(5h1)!!{%x-fZU+}I`kFztBMG5LIV66EKL(zI7Gh9 zX<+vo(CyZxD&FZK#pVk(x)@C|#|lEsMHp_Cy9kbkXI>FIo`+~OD!)@pemT~a zGVhSN=JTC8AKf`1{*RNLf*9bw&H3N}S=!$9$MV9o-DW0h{qBUFtN3F!p&>^g_F3-) z-OWORmRZFTi!fUTOUxJ9Vf?PYh3Z7{r+YLy8F8D8ap-Ig{3`^m*A0xmX3(f?0{Jlv za^tBx6K={1C^CBaqb2KXM(F(U>nk76!Dae7oc9W@>+IUKx4p6AExhX^3FZDj{ysqu zgEqNXhH(MzTi*i*Xhe8&+W=+*BPL6V)f?FsBh2Z{8R5ZB{fTutn^lE5Q@i_M5QP7^ z2O+Z_Fo#SRC>sRZ|UJ246e8EJj-M&^DKCJRK~O%`WZo$*qas z&WgbGdIMdLmXd1woTerJTAoXy~gsqMn?@;WV77ck_pT1V67SV?L*`vU+@3 zCpBBFbh^0|St2iVuLQ0lSlaM@r;75mXhRFcrt`Jar03C z(eeV|`U2hCyD0rn8<74(?&?H~-h&kHn7DheW(10f6F%@!)Y<#Qs;1_z`mRcxmqYWi z5rE!}^Yn5|6C2O}b(f8X8hv>i8^P`12Xr?Uk81Wc@YS>ptj0qcc+jDAXI2=$?M?8g z5HgS;?i&%#(7UY;ptN7hLez3kDP~9PAy2h1w9me)T$(rC?~VzMNBDMc5@VdvLq$C#wR&rZU+V5 z>pK8F%6}4dHlZfx^Qzr~XfxJpyqtG+?f+zysV2Y zER^gfIU}or*(W=j!BraZ{n3Q~@Rxl~F9=CL8sG*4-3m*T-fd&nd7s_x>ti2oj1OY; zipj4NmtH|2k3;#vpvpbxO{>Cqe|Cb(xmFJ@wOBfv96XT4t|Ls;QlxS=+fZx zX(Ksgn6JGZzM)&6+jUD1HYryiW7Td2WT-GEbMWke~~ z{&5Y1>x}(t2n?X!UqDx>Z;4_%H@(UPJ7-XTc;CT^m)Z@JdLHw@jNdvn>AlWV|9F%J z1T1q=kaNO zRJ*_!VmuG0U```(MUr%JpP>@E`c;4$9R5Y+tf99O@HFS6;QAyd4=(o`Z@xm{&n*m$ zzGhHqx5YEr)awbQtF(1WT_)YNyK$^&9zF48p{&ilJdshpE4HGslJV)-*fvr=CGR;x z`{!c#f?%ENA75qc6hvA9ZaC15yJ=4i59^W_+Dvc#M22UnDEt>e+P*~V^wMr}u{0fh zSqGLia&c`iw`e^5E60D|rX(F<6O~jhNzR&BAqGu><3j|{wI-D@c6=6sJzux??7Oig zRBJ&mB<#n}JL8-cY22)NwmR zl(2R|e)`AugI>93eU^bW05=Ngu7!~@qRT-K{kIumEy(;5Z{ht=FN?I7H@|-5nn8qL z@BOE=tDKy%0qc;!cq57y!Y70R*_DFkDkj##KfZkB?Pmwq`_@Om0n$A+nWC5Hp@Mc8 zc;fr=D{3ZckcoF|X0B@e`?pruv07Pmh@82)hHLrA!YawkR+X%O0U{Eldn5m`TzzrM z4e5G?z-|l}ea)aGmTn&e3z5~75op3r8tJkpfBlH_cB`7ucyS8(RdY$(>V>)xXyQtF zxMnFxqTu$WqJV~_vLo%*%vB1G9Fw;*Gq4*AbT{n(O2{FTcj7@z*2Xyh&llmks z582KP$g=2oP2mlsYag{7W9gWVF=DDGC>%%o4E0K|^W3r<#FkpFg zy156658u}Q;CkbME@RY>9Ut!(Blo~uzF%gNUejDtdj_H<-_58n6Qo;WxdmQO-ceT) zV4j;kuXMr*AG;m;LI_sD(WCQaIaPhK_yBMdfNm`#vzbt}EoejED4)iaWH~8&L65I|+K==GNgt9y~H#gjOQ1*mAD4$R8gVs!N*>EN+2v-g^K>peMBR`5V zl5rzpQ?gQtT91Fr=h>LRGlbEUz4~p8qqn^Z*nL~Gf&+wldRMHI*!M*`mv%6XiX+W^ ze+4>ams2FG9WFRL){?~MNHJtu^b^Y;sG$&S&Tbq}0bPso7X}v83!GrP$|Kjp z-y$F+o8;h$=V9YW6Gll3b6OQ#w#w-Gh*BGTUgg_(4{+0f?n-DJZyaeY!Xi)UcdE9s zuB|;%PAm)KhetRI$saxsPkPt=bi;cRp*I>s609xFb~Yj&+Ft+V_oCC1g4%EqH=>xX1N3VBF)OfrZ1|g`r z^dr7)FLVZXta;X>!VCcS?d%U6pxB2VOK%|~^*SB?Foer7o^M1X-}kwT&HrHA4YTZx z#NiGhQc(A4&6NkF;l!{l^~m_axD9B~Vb!|?C6gkgcf3O2_I=xHfCFR-VIQivl$-tz zIlmxc2Y1fxru|bxUev_Jn7W-LUCWY5MG9SqaHnZu;^=AFL~Bb&J=`_`qFTdaA!g%h@*e6+U!RS2Ea z8o$2zH@0$noOUt&&;KQM3hJDY5br@20^BU1t9|Zr;}m2q62ve13{3_4h-43vW%a^+ zKXYsBSX#%EGtK-l6yACHUnb*)0l8cs%CxB2z&tWdYn@S|-f^uz8Nkg3x(ybK7TE~P z0`k(@w!_}Ti8&{qJbdsb0%}x^CH_@~pWna|>5+#EsKpiej6JV^GEZflcD{YW%93Wk z_chU30nYO|KsQa*d8ko!-X}$pfEq4!aPRY9Vk7ZBHK{hxU`5dN6k<@^AO*Chq1?P6 zqdI)`o@U+R{kI1;6axu~%+L1}2v>l5bAc|T`suRhx9>Ci2cZ*|Ov0&>o8MIy&J%hH z*$D=DW!6HBh1e_wDQi9H6+F5TD4} zPw^jwaS0qmgXEwiEnQW6zGzVG1)^$fQpxgb&;jj$Q}%%{7`&vhgL_PyL|U z8SO!BbbWY*z|TWI7=6v4#DKy_b{mghPwlM%ExN7pTT}H@pG`VFn6jo zg?c~3lF{)PH|T;OhJR1<{JrE~O8uMoPvgRQhedc4B%nke;OJet{Hc{Lp$G;#77x}YefdJnyX~(44UL!(Qa;RETXXB3kM}#fe%zrTPT|R%j-6(IF}h5{Gxnz5gz-}=Zea)cQ<>03l{^BqutX^!mrhV^@zh%7LC)A0Rh{5VtVu!1oIzLj1 z(vFqJbi6Us2G6u4f83J6ZnHv#@(zw7SNc%^+!CP6eMCcSDYI8fYUV&_bu3lKGD=>g znsCk+)@|M`_Mr}$x?Q&-wqIU4{|JXUR>(KA?0uMxFPBH(Hn$`W<&li zRO8A48~y~H<8}Rqex7BIz%j6?!~ALB?Q9F&zU4rdyqS#{f~!t{yTh6E7Foe&vA+j) z_g~9dqb7|3v-@yAdegO6mS~F|Eh8uwBTS~sTA()#bT9Xdy46q+FE`^5;8p;SqF-g0hl9;DnZ49;p2XfJx7_;x1*ZioMX?sfSAl1PmGC4K8tQ5!4UH=WRb z^6eI}vE}dUMi*8@=d5k?HmZC|;{~Ag$!oH9YmsQ(8iO~7kvDvEg9@}Dfa|_0pnH;x zRCDVHltJW!~5DziO5q6_e5mQzaPhG zqA}VX&qYc|V%z9Ko@M{qmTy9P*cfM zJx_n?=HY)h6`0#`&nYCQUIv(vfzECEC9PQb_n)oe3z!Z*h@}(Bc^lE0_3Yy1&p`&I zK;z0yS3p?-=eIhb3wy;H9)^-S?gfq7# z>G=Q)8so)wI?voR>hGNCeNHQKdEX1@-kt&Q^H2|Ty`b3!joUs&9QZ@h#oh$EHMNxm z{?yVXS05ljwmKXdwIfGC+*%W?+xA-O!%5f~&Y#^(4sfa7#QM40hDJ0g3~(EOZd9s! z5jsou(3;9~Eq~P&Tw3YyayZR_u{7>^qrjCXm#c&Z+w$W!=J;n6)!^E_(N5X`UP-)N zv*`m}U#)9j;JU97=svC5c!zQi672mI-l|{Ony39qJM%t?;==cgW^}l6)eq_Bap^Rx zQuOEAjAl6EZB-t+5Hq&zroUNlxR!RIASR&RCZOvbU))A1iCU75c0FLqA@3gTsz&xp zd%_VTOyij|Uf?B-p)yW}&e%TElAtkC!$6gN#+hM&2-Upn$)~W76P6s{HUnLzcVF*+ zPhbrz49xxr4`SFvu-_ctFrfW?h5KbYUN=_U`z-8apWXeP7MC1uB$LL`!PJ?MD3Xbh zx8|AZ+y}!>fZGCe?+-bCeT7xMq_)%v8YW0|wKZ}WO-o;a8WObD*%Y0H8&RSdsoGjO zR4G4%lRLg_>Ai;=KpWk(_Yw?`573>L6ZZaeDsy5r=+GtRMje1*WzSsNIA z%^(-l@8<)<&w81K)_GRM%H`Ne8Q8y_ed{LIBmR^>@hVUE)pHTt9qiFYXmLb*$#p<9 z4>X{`-II%rT6?Q9AT64r)4%=ddA2C`4s8TJcn{=64}S z$+182&c(kRnK=Y^#T8tu1UNXkm$4#3hgvkj&P5A=`?hum2Po%plO@iO3itf*FaUeA z@a#vrHz^`w17F|n&dQO#IA!M`>-_28x(0UN^}D_YjA)xcjT9HTuRI<-a0Z=3NHLcIqRhZ{csn}*2WWVUdsblb zt`+XT#tqY?LTk!1`mtlY{wBF`7OUHEyx>vw|L8@8V_eVd<0^+%%^u9ESjik$(oZgW zHOL`jn`T}ia67!6*@6S~t1MkjnRmk(RSt`Gu2{_9{9A+kAeyEM6(a0o2(wMNSGvI6CK+55Z6zV9uEsF9NA z7QOz`mQwuC?@=<~IoBZ21^ve*udAZtbduOYxk_7STt;?RLet?BNJBpZPu>} z`hohP46{0B9lDoQ+t4xRgPnzMkqmnW0(;-a+dB{7&us|k&gyoq7;Kqv@7_wrp*s8= zlqm?Fwy{ zI}CJrMQO^Df}9{VL{o0Rb{~eI%y_6hBNMzpcg14!LJO<2u&TOd@U(s2;t={tP5GEr zGM!hU{rM-g1f2%eoeKy!{*D0Mw7^HHH3OtiFvb=!bG_zDv6%}r1crS|C3r9oh`JF} z(HObk>P?JtzX@e3?>-oNSUDV9eesKX>=^|0idhZ*0Mt7Qbe-U0?G>;apY{LfL1bU! zIkL$0$k)~q4N|B3GEKZwj_WVA!Z>-Jae<5#GRdKN(p4Oj7~=YNo-yY=+C!dg%>;1A zfNqVp4W(V@H?A}&QcD{jm+u~xq==y11r(=@6}g2)8=v|h(dkMH^Q_Xfd)uI|ic*a% z7gbnps`0|Nri@PZgRlU19OzCYb`S3oy*HAi@cAfPtuV(A8$Rw{Rlj?^SXDE{0)_S- zesSW#y@zBW(p3&3A1_4m2{8a#^>g|25lQMz4>GVHPXJv{8?o14WUjDxEW0uOufdGT zHiCtHgOC7%wUO+@CP{H0TV_R@0K$Vr*C%P#DgWzv$W-w=4yh^YyV?KMX(&3)BTy{+Rs8 z5@PZ_>yj|8y9p0XIu9*U)*EkP#6l_o!<5`GF$3UE16>%Z@C>?=lc@Ta3&m>?!|V;c zoadjHuGG7NK`7bw{Bb+h0m4g1izs6|mlUJt0L&9NbJg+^$zugIbi!NS2jD#PHpYVk zWT+GzX^EFq9ovf>UYWEDi#_qT|FXYV?>}?yf-TPJ5huZaF8TW5KQMK>9(0NB!d16; zbw9pagJBq0?GCND+Ixk-{cRSEzGhI05(};!^NB_(QtAe=UY>B1)@QGH+F~?s1$G>& zsYKAr=B=EV4t3=~_tR+W4NgJSP#0W_9n)B6hsRHCnPWkKI|p=8U0F#^71uBV6K*?Z z3wdZE;1?@`E4~TMMVY~4=;cJRURQImugeehdvOv@8;_O!T{iPw;cEh} zC*ST4!2xm^DhlA6onqvT|Mo>avyg7xmIVXT+5i2)>FPf|&XLf#|FW9Mi(z``q!5n> z3`$#Qrbp;q?QU3aE3|gi;P-*^@d6lq%^-*(Z6l?f^A$9;svtzB)SZoAewS{oP0;7p zC#CgKA5-}}GbdwspvxI^LS?2tGFQiP4!fP7j^Z_k(pqe4r)$0%;Pzbvy5g-$ssuHm zv=P%8LD6{Fx;^lt#tb3ccf~uk_^&8WwbulI6fd=)bV@sdCl^U}b0#auj z0gj3kxZY);du$eG&LDTZ&wFPore9J0 zQ8EYgJf}$?&HE4kKwER-X4Zw=*2chk*MKg{;T8{SD)j7C&2%)Km^M6NkKnVj!_b#< zLF{w+&vKN|Q#{O@4ZkQP6gl_$YB08R;212${!C+vi}|*gy8Sc))VmIJAt^okjN-B>nZoL7R=H`YuzdV+#kQy4i1puI*Y(h zvZkUin0L2{^66jgV)u710xi5*HooXA;ayDbLJL~9tgs0}yKBa~OopWHF~m+Gy(f9+ zdm<`VQjGJeTtN$-=;qN;- zVqfKcOsH*$AdRjeOhSkq5io9D6Lui{W;+Sw@USp1Dk1q%S!GcmS~6lwUYQrS25@(P z?%cf8dwvYfSm$K)F`h+5Sk5V;8wq3MD>di;REEb^(JI+$g7i%&&nAjahNG^yQ57dc z(OGbsW-jRGu8K$D-YjsvyFgc&8!vw^A-;+<3WrUhmcl6kTS<@?Tk2O+SD;=gz7zDF ztI+z`o$=mYe-ZzcX=80-d`e-+fm$;bk1;E@quVjSeVaSL0gBckD0JuMru8`c==@Cz zM5EdG(wDO;hX7;JU+fk6G()7tUO^YG-p{Wcx2z{&z+*m*@mTYOQmHOu>LvA#W&afd z*ZcN0I6%z3!V=qJpSZ*2Ha?wlBNbUVNa~7+qbz}53K?ezrFmAD{vw~9=>_|X*?QfZ zPMUftJV4Lh_{wr$67Gr)o`PN>uzLVTUo)szNfgV`$om=^g?)kEk8kFzq4D(8Z{A;4 zTpb#3&4a>Ioei0zJ&}s2>rN~Od3?KFtMqcH#O@EwRhwEwYX$H=;O(pu93Th@7UJbi z9F?7?(ri^Etcw~u#gGqEYO2&k4_weN#||pU!Uv^7z4@zsC1lPbZt9EmlOQhQ?F7Eg zT%$rZ=C?TwT<;MWea)b)>|+Nq3p-*am~ffNN*ImEG=b=wlo~I?HM)k+MDS2Suo-B0 z+>;CXKip70qbP8a(S?Q6h*L-sQrS)FUC(m?+_%pV9H0SQMIYq+v<+42gAa;2B$QK7 zt)f{@LJaZI4Fnj(;{R|5BO==CaPE>)CaiUdI{(}-tqZMHGB2a6OtEAhNW6_T;CfHM z=xYX*py`oEB|>TaHxuuDpf>|M;jt{A=vdNApqnv2(;rHNJrWNyj!|b?e~Dp)42QU| z^|JhEAa9rn_34Y?c*#@@z&!=JsaYvhIuB@~DE0NgX6%aZ7-u0bj)<5@ae;97jp zTlGXV>i? zr}ttHz1)GhRx_uCzwZI=1<*x|CD^Ysugv}wb~Kf1+6E8mttLw`QcW}E`MMUvc=MlQ z&OIRl=_M&or!JX-?0y%m!nxx|XNX<&6yc+&111uHdkJ(S_VS#BrIf4d{zPYzi6>W4 zwX;=;YLk3{<2H9a8fG7nvB3?Mhn)5@_~M_}T2ez#mbUi+{jd!N<&cU35)_dMaIb*w z;cZZLgXvbCIki9YtQ_3KkhCt5fsP5YRtWk&nZ32d?5`Oa>#L#CkIO0V59Zw$LYAIH z_kNG7EU?y^Vo!U$-2s4~vumJ>!>xM#-J!lDP;!mj|qr{W)j3mBoqeBu5vV4C2h0nC4%M5^j}~{{+*L~1d(XvhXUMN zpj!~wLY{Y@ejFU=oBuA8z$UFGMX^58?gaH(<5CZC^I=}$>v^%735KVT#>JEau}EX2 zKfYT~v;fO8Qp(QI(%aez+zxMhBXEFJPbBMJ3YW>hOXU@Ptp|;;q>7ViDiBA_#El`! z(rIU%P25YD=JMi=pPer*`D<^}sh|IpH*g#>;DvjD73++Cg~0CHGY1ZkgPc_b@pLBz z^>9Yf^mwJ@-wuNry{ua?mroK>J!2@26$^@N`ZGE!8yLG1OOIOrMMMf~neSu>W59Wo zdOQfd^#!o|HfDkYg#E3gEj+HlmDH8byW1l}M5w1FrA3hqyV8H@tZcR& z%u+U24^LpMh>Aqr5)7QuS#fQlSMxu^85_Ug)%6*O#F~BGG=KCAEu_#g;JbpS;k(;d;zcA)V*)n+J zO=Ec5W(TV+vK{vCJF!IhT|f`Sn3Dvt@V_*^w(CLlzte)TSyc6~9ABE_0QJ5$^#21y zC@?NDawvDrIaeGhoDBWswkX$ZAY`Ps<#e>`9fE4T6z1yASaf_6jbHL~WbdmPHsOuT zx_8^DD65JwVW9z>haiD2|Ca129GmU|1;NP-+SAp7g6gD$C*6c{h~baZRU74XW0>+5 zDc!Q&vT1}bv+W!U_P>qcSKqsO`>~H!Nv=!)&nKaP?k{}ZvUmH=o0=$k9#H8;ay@|# z<|fWa7S2ZwjJZOQm7_C9C78b~N#=?+`29}x!&8rm)pyS0D4oaQb7kGplmYDk4Ros; z>ukv#A2164p2BDF4vfjT!&RwAoT>1pUn!yEL5TZ$VLhdPHG21xXky&cCIT1Z==JYl zDD5up*mJ19c5&dm2?DwflQ}*#gRtx7EvBXY7#B%|qud#3`WWpO%DXyE&6M+5UY-ZP z8flCXjAd{yrlAJ4yO@m|`g(l+Ib5FRqYk`{Vc>oN19U?YdI$?}CSocR=@O zT$0l&9g~z{KFS86{!dBa&hqcV$erbD>EJyCtj@?6q_%7aVSOiYzCTgf{}oMEP!~Nj6DL|0T$?v3h;g&bk5<0{?gIfP*;1vilGGf4*S$d{%4p3E zXRlaYw*O97C!0|og~c*r2!AW~AHm0=e9oj1K)rB4SMRgkPfO{4D0Q;&OaJzDFN-;d z4wRwlbN9Kf-Qec1$&h~peSrzwI%>?F$cd zS?5}R%v(~-GGm9TYmAPRvL9h<;)d=#VikUcTwp9M{DNtysHxk^2@xcNvjyK4jDfa) z)s);W=lE3&Vj_JO-aDL`spFfnhS)wJrashuJtE!CmV(jol0yk6t ziD^n=ty6V#@ZQ#UY9*Hv4F=sMKpjL8;^~Va zonucOQ^IPtY+}{rtig3mYZ2YDzIkHyPA&au!8pDxs1Y)0*zQ=w@#)m5%NXDy0bMl# zT=GI(@u~H*u#isYFx!x}rcEpFb{4ewh_Rce|H_5FuVD3}7xI^QVG@cbl9ci&4)dTi zr_Wnq<3u~{-~9o&;Q!P0`Yi~M$SFq6YB}Z@112ogDan6E%ld{k%75T~&3E}9Fn63T zFXeYYLR~r*EREnH2R@PZQu?4@j4q6xGa?xvR!r;Q0bFEYy(i`q9&WOohVv{Ol5Qjd z)HH>tffw2o^kJ*MgzY+?7Y}BvZST*G1?K5V&{dN%vCddjkCse&PK+D~1wB)p+h)_-PKLt-zo&Ds;>ym74 zCAmU)t&-qtsg^S7RIch+coQINqpqXKd8M1z);^Y1+KeI!6TxmOr2I{Z$S< zJ4=n6o@M=x`1}biE#ICu_S5&!_OVcNRqhLIEUTb>;)anuUA`W*Q{$X0I5gnKB9j5njj(}k)T%CJ(@sC>6n%&t zl4sq#;kfeAh<}AwWi4NA$LFt86l8@%L2hED!Gx^rbB%>*x;Q0af$qnM-&FEY$<)Uqp77EPdrI5+u4k8Cm)p@UYaL0g z9;K=XR#ENL-fm4eJU$i1t1h92+CjlCpifY}zhVQ-4ub(M9?)Hdl?a*nS{&OkIf6|u z)*v4nBli9@+<}tRn6%M0SA6hgQ?+1zFKT=#O~j7T^y^9_RJnf^eM_CGYTHi(Ne1A1 zO!z?8yv}3~fj@Vxa7B-y(#vlR-v$<=G2(iuC%HWo6|zSjRy`6J-}Y~6ZgI{WR=WoSxiAoVNBQ*h(uOu`Z>$@)Li>tN6daoyCF29b%xHkYBGTW!Uyq62Xe<$MFceB@!XX=MnyK$gCtr zP5Pu80rwq8xws|lbnp9oExv^+RK?{%f4VPC0hTn8C70=MdkU~i0(9HVY%)K`6NWXL zglHB+ue|&a9o&II;dOIyTIgEbLfdB?ux_18xEOo1q$%nr^ixTB3epl7SsgAi?sp68 zE)4>>q(E1K+x7>Pd@mPF(q#6&&KKLkda{$BOrBkl!^^QD5TAFZ^Y}IBk91bM>_38D z#*vsb&TlLuRiHe}$37M5`2Jx5xMV=r@5(6r+CHP&d!Zy!zu%|600xKao@1m2cd^Iv zlAfT29u%fe$1K>`U9e^-`qUsOvV@{2NTI3xIY8Pdzr0!%;F1H~_WS*V?Cn6kmo-Sg z-N>|JjLXA%jTWQJ(<+TojV|^>cBpiE@q{0~DJrt*#`*gfqg)g7_C4RnG?(fT!zi+x z04@d4-ER4?v1B>IHlu;Er0ep*V*q*s>t5y23*^Pm)Np!h>{5ByIdtRbj=$$L%f0G4 zAAnWxf>;t>QBsVMza|Pv3UDcb?p4Et(^;2}b@X7_sngb@%DXbg&3<*S=J2+_>I9B` z>R&o^{|w?Z)C4iCtRYZMhy{ZU%B||krr-m@`Tm1AowX_wrHocu? zfS)repvx*HTFl>p7JJf*!8g_GY_FWVqgFkmJ=dzjCM^*>w21tE_It`7qhBV;32pHn z5NzA&@gu7m{?@kWFSGAH+cP8gmU%vz*OM1x;a$>xHLdl%q_)fzTA?4z1IOp z0^;u!y|7T_q{G4iDwWS!AiTTfUd~a}7FA|V(n9uhtPX0=vSc8%1~t085wTWexX?9l zy+aFh^&H?@P>9&}p!V_*drKHa=`sKFJPe(6)ghQ((pHx>;JDPQoslK9YbU_STcZ(~ z*B)w3j>u-xfmOf^z@RTh0@OQ)?O;1X#ge}0O2f7bxCgEe3!f2ye2pQ%fJ)KZHg!c$*}XBUNv>a?n%9I4TfvJmBEUQnGW{1ybb z3_zE!Zz()~)=DD+e{5`W?SrnFh}_-iy0LIEUp7VAc47oX>W5!#=ik@@Mk8_NR(U$$ zA3DB#IsR&E+p+YsztRd7;4%W;{}{(KBdQb!8ulvDu&y&}ZHAnUOLMTt@2IL~Rj6%m z_-gIrqa`U~XJ+OlGrU;hm8x>9aAP`!Ar=t%{afUK^AHozCHgu7Pk0jE!*9F)o^h7k zJY%QFE5+Lww6AH6T$h?H6K0i>XuI8t6xfO28#f?#uy16KY>Pa38=7 zbeZ&_EmEj=MF0PX3P6B{q}ARxWBOgUGhDx;?}xD7S8RXeP{q958ExX%yc85 zUN)dB``2IjE5rBvRr}C@5pDBr-A&E9AM$+>TPca6oKyRoQ0 z6PA$GtP|$o86SoC7Uk}K$DG}>V#Ojx=pl(e1*n$`=w|bzbIJUEU?8tzVaST$FaNYsoan$T4HrjVwuh|0 zsihw?gk4{(S%yO`AG6aJ1e^N$TZkpz+r0U6ArtNOVsCe2;CA2!x_dH%5hPQs-t2G# z?F}`@q&miPXT;Q8tCWoAU-5SYB)3kT~nL*EtA4cWI zhQ2s|;2?6vt<2+n9Mm4Rfi7qcg4$^~S(@sJN<8Wv%>@CVUOu3^XpAhRYIxjEJ%we7 zWEZ{tL35Ze&p?W~xUwsivbJy#xsWhVxUk^%6~e> z2e|w|7he|yD^vx6R5vX71CAHc*7@`P$CjvluI>*9%zUs3tn4^Eq()zI{`yqz9Ie1H z(*I?!LkLt1>}UKa^?;ZD9r%8f0MNA|YnxAJW2E{D8=zMo$^=n)-|40434%^`qGcoc z*?+d*Okf+vKqRr3E^`c7<#MEt@RgjNL7I13VO69%TpxHYCkS-o1-~L>LHgb!871Ce z+bD{aU7)pC2l(MO^!n44S4xN~u1(?-@?#gtzmJ7D74EdsgKR0EJty)!<k;pF zZ%r*wCBhje#?(t?C^cQ*pJ@%!Fq{+|cz;mPZ~&uq2)g493db2s zviw7yn>^BONk}U%GI0}I+zekga&niixLEJuOg$|dUR0+Crf14dDq^mcA9o_#-(z^6 zlH036T;u?*5a{?)%*~Tw1L-#g>~=c96$ahF*9Bq?RgTZ*e#{`so6BA&Raib((dBQ) z^DVmbsDq4Uy`IJsVM5-sMM{PEWL<{W!LGvva794ZEue{GNV$D& z1=5rfsd|6*{K9}_RNAqP_`+a2Q2$FtU9rnZX+*)f@r3_;5OlnjO{xmq`FC7gC)u9^ z^0{4LKUEZT?R*qGet(jt;h9Mt-?VuxG(3Z$#%4!E!gE;;Pk_8)pj(yAb>vpuFI%zT$g#b14iEQovO4CQ=)_4} zmEkWEhW4`>A;?k8iXc=k8Npx%!}yXhYU^>zR_{ct^+1M{SvkNJ2i@5y%4L2C@sf4g z-h#7`31kT`%ONkcoclWL#TOX}Q&fw1t1p?Fl6o=Ebk;)8BXyd3`T|Z&d%qFKpQoNl zYk=)50lFLxVby!_`^AdO0;O6%dLxP8un|pr-0r@#Qy_l3D`;Bo#;N_$L^7yq@OE6y z>Bs&-v#P4De+uCncbC0clMi4WMiO)n6J{LrF#8DJcZVPLcN#>P@Uyj=Tgw|ROGaA@ zNJ|AEn7?)%Jxea?n1b-~b1a0`EA!KkDSToiPY@91Uh>RT3BwA^D!y=SQ*IzDJ_n|>(qrV!lo zB+b8g6Ipkv(u|-KQ1}@2Bni0Epo?6MW{UCdNdkonN6@LqUwXkQ#vsr8a}eJzzx+5~ zIau2K;4Bj;!|=oi^kJs;XQT4_oDZdz276jTrStYPeO7=g1G>ZsdI;K0UtVcnt+>cj zVzd|KFYt1&N^V(Q15uia#vi z%7X6A4e8xEgZv!gptL>{z6+^>DJyAVMcOLmXSzZ@ceNcsyf~^?$*_YHgC8;IiBYDZ z5V^$W7L|TNi!9YWn)#Igt{muEbGnSbX^UnZ{x0(CTgclsgtr%*ZCTaI^wwWZSA(?T zBOhseIr2mF#YQ-_Ia}Wk1;SJ7Nq7v+dflh)a_2ki0j@mg;)*);<+v`kL^D9{)5996 zz)%WKIe#sbdXaT>gbpRxmrH81%sOub%Q|?Wq?=!4(4q_}nM)A8b@deCozFP^XHDvV z{SpPxWnK<$8XaC*PyYyM!xgMpK7e4-4E5|_-@gDOd?pUl`T$$adZya!7XjTZUIbrs zJS;mDTmaRLrJHIT)hP@QSVw#hy4J!MRk2?iXj_TIqaja9#sjBBW7^*xpoE7jX?;-o z*-8yXej)(%x-=u`qhI^iIerSZI`>|O)$JxV3|$%q$v!Tfx|1C3MQ4E+UthId zC?dS$K&t8A?PP@vq8Ki#5~IM9;KJHn4R(4hnOc|f0Zjxk3;G(WYmN^F^Pm7a;j?l- z9s=Mhfi9wL^;!xV9aeEYh4|B@k@|#{JiP)Y#iB8DE=en7Q^qxaT^^*ceZb75`^%0a z+0P>CW-awAE3tWzno}26xwe3-47v(e_Sxl7C)Hf%P@XBiH#-=EED%vvZus{GJ3$Hb zInIKWgN|0^IwH7+?Htq91-*pJURY3(@7Erx@?xsC--7is70|spKFA;`HL$r={|O`F zK7j30|KassmX)Zq11SOn)~n__?e00)aIT>W5gK-)*zZlfD@EHTl1FkygGTnGRss5fFIV^>4$Xk_i zaWiWwsx>h3b&7gbTV|J$%cJolOfT1;nTm2f(F0wZj>JBbB%AxY?Iw37+FSEubHLRA z-QBH^8!a3f<2jWM#h3H}ij0IM@5DmAm8E$5&5QhZ500#59cF)jTG4??p2&B{H&sZC zozL+piSL0|%t9RG_8$H<;A(@e zus`n=rDg|L79ukQ)bobf7ieEANR=W)y1v))eGrz=XB}lnb?7oVMB7+6_{qpXPA@#; zo+`F`UN6RRsNIYYuCvhr-3~Ko%pZR}x;t9`0(>gNR`W=v07j&(c;DRQ`IT(W9a35}?)o@TQ zv(y-BCtOo=K^Z1oscLCpe8~I0cpROc8|!9fwtl^Qo}&{`qTC!U)AXabHeK7ek; zpcxit6lSpK94wo|!=lvgX&))Ai#^tlJUymZHsM%d2f|-F4C~faC*6VW&k(-25$BET z8Ti~goYS7B#_xdj5hrJi7%`Vlo~h07oAm-2Yb z3gKdHUv=A8+~5HwNb7D+5d*Cj`{4&WZDGefpdIuNZRxG`)#8^a-k^cdP?>GKoeCj2;ls88d7|Ut zG#_<1Q&ML0whPE>2)fGYDmeBdG;HoKD%@nJ9VKJAJueK@>k;M|m)BwhSMIHK(Zl1wgw%IvAG?{=!(mtuUN(Y1S0F$*DNQLqeXmy3(_9Bu#vZ223chPb76jOjX}4c zCQOis8FKY|Be9i+btWzz0ymTo3z-l9c48>`eZ(LxQn_ZdR#t-y6(kK4d=+7RY@k{0 z3eEDH*(VL_l^!Y}uL#wUeuBfz%>Qkr*T}(RvD{K>m8FH0TI~Jv%R@9 zOS?(B7e@!yKD>Ir+BLLMdQx{SWAho7zif4PYPwJ;}D9j zUq$n5MbT|pWjhnb&9M@dWh?36RTDJzYZELrS#5|Ka zMf$#9b)P)%%<+{<2p3{N@;4r*5BRfn__DVpa0z8{ekbk+6Y(b3N8tJP5p?G@pZ4?a z-O|FpVn87KX;2@TD3_i$>dPx@Dtu^-nq7Na-|aeejvT+M^SO;FRPS_uNAcI1l6oT3 z$>65si&JpFS%PjkuIC8EuR4WKHCFi$h92rtF>9|OGN9huj3tYbmbdFzQg1mnBplmM zXtUXS54H(L;vwRRHw0G4D|7w7RMLA!Aw=LA52-pEYv-_0Oz9w=mq) zk236iD@VA=YeK_uKXtYZws@_x1yvkH{l2N#Ez_)(Wcshqy|26oI(mLBe-St@|CDa* zrko8UmiXN)TLW-yKzH>d?|6aEf5468*V$IQ zLiB}+r$yq;wx;CtG4D~1bN&;)1&`Y@@mdNZk!#?x^&4;2tw)pc)NFqBX9ZqFKahQ< zN<;%aAa}v>rXA>N(r9^->v?RVU)}dj@|E@oIR(^}_7o*|c-7An<%o29o%1S2<}cGd zLRU#tZ465DIqU}6?9kG@cxVucg%An`+QA-lX{gW;oTzMNW;j`FtB*+^`LVASzONRF z2X8ZR;mA)Uh;mu~f%$I^x_M$^yl3`zS&JbK6xhY_e415^=~bp&06bb0UMa6g;MR^+FsRpWYF)bEKG=+~5&h=<%6GYGcDiMm`wlp{529>-{%Cn*jFDNWZ@ac?#|#?y$v^5D4$8!EJEH( z(w~XO)j>cMh(*)ND7KXuv)%1d52Gq(avAe~Kq5u2wzZfIYP_78=C=Jlj`a%0C4%nAN$l*g z?;FEgIiMX}K(`lxM`E`(ps8s%e7A8uirzRR|; zn|{AR+cR_zBY4LM>Wqrtxk_jrRwu5QM}omcye5pLy5@v zph2@VI8(y|;X=pQ#-tGa&l=vkfa?LesuBjofnt2b0=X&nEdFXcxaJKIxq*BYWHH}Q zpjMddUHG3%^$D7sYV%>$m zz}FjmrBt)va5;ZF`57ZO4!k~igRZ?QL`2;9GbChIrg~LaKID^Bsg`I)NtINLL0R*H z1I89S;q(-~vMZgG_(X09p_zcD74H#W7sEsXgLGYE`c5FP59o@<+PoPOJzmFp>hJMu zdzpfI>@5^ zQP$nk6Nt+##_UfQ{14xOyniolzyJU9gVCZ5!FiOE%J`7hXSMkA(@E}pZF5{MMx0*}^?J6HuPETMVvFX_|b&Uf#h z!vw6qBw(z0iFiF#=(rr;u=zOfRq|yI;0A!MAv@p4+oln=zS|I?GFaZUavX2(Bwk*O zI$jwgJ?pixcIi0+AC=fiwDwiPFJyjXLT}G1Z5+n%6ByH9jT9z^0&XDaR$g*8=`8AN z9;&6;^kDXk-{*W*)W@zpgRJF}{3wh-Y^)GE>f4OL1BW577D?F|^ii%3^NkU=Z=F1S zp`!EicEAk+U0i5qX1t@I#@Ai74=aNv~cRtaMz4DvV!mmbJT9{abWyD z&)HqGCiOgbkK-_DH$ZcHYOZ48?I21sc zLN*FLkA12Z=dMuAN#v?-41^*|?+6pV4?ad8ms13^QYGMj&(Cv4y zza9a)k;a+t`hzfj4j3-_oEQ}2Wi+>CsHn)A<{^a1US^rW{6Z5OE$Llu9cLu+7gPLr z&Od;jQ&x75`Ca5q!bwNRpYh;-=UXJ`a)j1HU|@&ZQzvp6_@Pu9?eWdY#EfbPRD6J$u=iMPfTZlb^6zGfAEyektEh0`xS4SCMZ zW;|y*jx(y|mWC|>O&Bp52}xc{7HB>jkfPQW9d+m9U!)GWv7n1^#(id1Sn=WeXA&pR z+Ar8~QmG46+pwG-mHX(hQ38ZQ8c1#7u%^O@<5KJp;q#E3ckpvks(Cx`D)1dml*Gn> z8wa{i_JXf;RWZB@#p0xkSOlBSg1F$4j}KLov5#2ZFCt!f|4& z)i3a%G(#4osO+Q0E>B_sHy(6dQ%OG!thPR%2qQy7e%Saf8Tr5@Cd|msFL27KmN3}j zvV}NzJ!6h|k^|KpF;l6c!gb>kClOYYlvBwl#-gA)i`*O<>?97kp-n(+Ls?KU-sF>3?AfG!u4K00eKTa zx4GRn#TX-db+}tEb@HjCTN-tlhT3@RlUJDK6qBID2OX!bUb5sKzq5M_#FH2t4{I+|WWzL_3hI!&<6qlKeEzf#TD(+0s1N=A3$x9*=LTne> zQ}+;%uudc2g$V-ORM1U{Fxd3UeU%(6bnQdE(eX*1!Ieh&pommgbJ&|sBUMR8pT>U% ztv*xkkUV*y{!Oc)6UL{A4+f(K&@MUS9fcBrn+Cc!YBx)9VV$X*)Gr5qKT@mk^aVm_ z&_~`_n3KO$1#U*%VCaNH)^+M+8E-Tz`!V>153rPPKt|e)s%hd@lH( zlHp%H8q{ft&7(s*eI5IWyN)G&NRP_oRl2`0aH|!M+;X|wS$DoKJq6q>&~5X4-llBX zuR3XBq+^=|tMG=a=p?B+V4BRJ?b$~dt>?laaB#oB=P7DaZ4>%tFnL?O-t}p#es~gg zgJT-8TM+E8XM^s<-BXg!rK4i|K<%c@aQjE^J*s=Ar#5<3%0SHy9$$a50P_^1L;Dt} zqlm4qR~1rz+4=$D@8q*)$Hd%X8@c{GQ~2L~Cw(pcs?L^_I`g0mxI{%CsaC1RdJ)0h4 zPXSsHV`A@BankN{epdT%wDzIa6g@ptR(HpfxiK0X=6>k(N3}iL7Q#2DUfse{mV4@7 zUfyB(qLW3A0d5}X!ZpI@Tgxcmkc|3$3cst>IEu$P@;e9+Ns863hc+){4miaR$8mEE zM^TAG<|G)Xo0)k9=k~Z9%7U4ywG$*&3%L298-e`t&Ci-UCu{symP;F7G)m9buRhMYkkOwK!dm%&9eQX$8w@QmJ3+YwVCX-!JBi?|fcALA~SpB0uaQU(NhgTBLV_ zoIrb@|2f#-DFod;)!{UeW2g+%hZ>rTG|L;e#}B5T*_zu0=AlSPR$ENYtR_@vB8O+> z{Ne7@1Y15U;&&@LRPV5=Z3@zR^@{&4QT+eop$K$&yTYBGZYBjgrQEO+S$r-SRT+J2 zt9Xjf9Q(KA>(-=u>o!IjA@#0~OrYO!$(T*zn?I3%pU_g)B8Wk7d0|}qKle|+rxBC`Ptv43{5gJiEVmRrB?bkp9!`NVdo^xPy5nT9 zx-8*LCDekQQf$>kb6I2IYKy6uR{X28`g{s3pdCs<_b~cpt{P|bQfuPUyqfh=9aJPu zIZyKlsSAaptgUdYw*Ew7kLCv^Do32N(i`TO5)P9^*c-m1au_MuIOw)+aGgyV=!%OT zD`l!Qcdr#Q`3HR{AR!4WP=$&LV-nXk<|27OB(l2sJnKkH=NLNyNW4Sq;Wo2UiD zAc7hu2qj(7qL*`~JN{ zu_(km%T?NJ>Qvlh4CS~?KlT?NbFsHjxKY7(%pKPZZZsR=0qtK^kuI4b}N( z=msTCw*8n&VcS)bn^VPxtx!J3H#&@g!4+hN6cysXE&{|Kw+eLo*wVCv>V9I4s%IY9 z#R(?$cwFG&6<+&$wGhbDQ@N6x2J%#nXt3el+rqlC{^0(SGceUrfYB}TwNnf4iQ;N_dbp~z1{NC1pF61|c2>24eNlNjc*E0CusEj?Q?C8;~ zon3JT35q1cG(M=Zi(TJI*cx>Zp!Z}A^bWarvsE6UrkAnTrA3q*4gAj~`Ms_EKW>ar zM!S$PoUG$Z2Ks>sM;Bh>$3V+0+wkG+QjzjE-#Q&sBqeePxyiaN%dSR7xW6IVJ6|D= zl|zM3mI)S8|9R)mZw}%22BHphbJf1RIbs+=zCy_#PS9iZ`jX((Lq&=;!eh26fcdTN zWA^M|If~T*OJX;Vo#H3|;pX3q3b$7jAo@figzoY2{#_p+5HNnb^`M&rYk%_*Cgm5& zQ@>^n<;Dl&PzVxvHJ;J&;#VitKF^CD#Ex-Uz3i&LZnsQTWoqG@N3j=8HN%lEb|#4B z9Qbzq%M10#Z2(;c^)jm!?Nr^K{k)+Chh~LmZ#$2I;(eBHsALuSvE&h^Ww&yw?kf>i zNbFv67=LSkjjl?HIBR%1dw!sNr?BwH`@{X&HiGVj?6u6VFvKdpDHK?4)RhGHxy=&+ zoG&jekm=gjNf2N98ZfhcRkj`A?DgDt@8=4MCcGNQq+;1=%)R%ZLU;B4>w5onn?Uz{ zJ@T`o`T<3Xq`=m#W`(5^hU<@zR|R9|^Ue*(BQf>;B8z47z^wn$L!qu<4YUlw|a1yUbSx)n-Z1OFs2U(%A{)UJCo5 zYyYy(JFn>5W;Jw9!iVqDT59z9r5mG{^pl;R`}78ITR^wSa3vDnUp&pcYbT*j2s-h5 z$e713OeEi~+BUlndRv?@#JaY^TG`$PBd*`Fl9rJSNa zmK@WC8+9pblTL8-{ZZ=d@6Hx7J^2iNqRFOQyRVGn{K3C*EYx4O9dt+A-y)&^8kL?y zW*XqY9eoJ?_<4FNzjs{J zzwY09BM5{)CtL^UraP6vrh7YSgxIm;elgQ0 zc$wx8HRp1)!g9RAA`~b$F}$;H*?*rggu&@0p7C(@yl^3Rl>J5=@aj&_H{bnjUkHRh z{f92lt-YQLh4d&pB-6~%yQ0zG?r||}#tL6hb)o4rp!u|x3NaV#U=RI@we4M>>Q;D? zWGarqJIAZbUDvRe+lQudj5$Z*aNf8)Ja+vefv9W{{_$Jn%o|G&I{PUara#mPgY5o%&~ zf+X@&XJS=?LiJSdH&VT3(5dsy(({tNRtWZQ9JOIfjd{IAsnqq$0^1TF|9)zU=GILf zddCOh-~IS^+TUg`==Q9T+esa7sTTQV*vGIaU*fkj+hNXWhJD#-KrT1Vq$N$2Ajcsa zRbV0>VZA8!3d~!6|MhSd+STFnLoZ)$s`%f$P=DP%(52ta>Io`ZRWZ8I8%p8y!Dr*) zoSyK&95JO`c~>uwPJ)G7zWJ9^97^zX+6Lcbbv>J6!Lh{#rM1TBk z_Jgj|hWyKP6iEL;Qzi)(gG^SGYwWdAV|UvrN9|2Q_mmIG1|pDg<;bXsV|HCCC*qE1 zng@-tkz(9CsF9U^k-6af@c`(CUXeH5)Hf)+*!dAjKeKHtqferT<&0BXL1k|{H`qs51lfJWfV_jCYx&|D=_^$v+51`wopH=s zmL=4RMx)duVOJ-VjqGB33=`{@pkK zwZjnTrY-I2(?ba5m}J#-U#|8EcM=R0Rly2Zwij|qa}83F!C>dGee1dB%;IssuBx*2 z#m9k8yrw9tr2d(+YKNk}0_6P)x=j`6kenuRNM>aLaqCs+E}1`hMa|~mAT153KZ{T+ zk4r2x(u`WYGeYBnLTvbum`>;zM5I#;W1MPQ8~662xE^r7fv#B3nM`wp2&-^^7NNie zWC2pPhH9O1?_|z#UwKx(zQXb@yNO^|SwhSLRFaJNK89vUQ(Rr>$9>EMVuPOn^Fn|- z47zwC-pQGy@25H*t)Y|1J14pHcA36L*|X4=Y3=GDp}tL~Lf6i?e0Xxhlu@G9uzK)S zhA?W{N}3@wfJGoQ`eY5bBcSVZDsS9?ZP!^y?doa}*$vCPEHi?pva;iuvb35_gcaw* ztE0O0$fxqr^K5A95NoV#VvL#!x!0Ume}i?*k_voZ+bHN-=e%wnOIv)oh$a{8UmXVt ze?AJ;%g<10>l$+iqg zVGMNdsF@@it@e4VxqiM&k(+n*p1XwJnn$1GNtuz$#1x-4Zn=e=?JpQ)t2%DbsxMS` zf9MG*y-9B1|Av~!%TJpGw8J>)!ncZ9sXMw`Plr9lXrR&Qe)^ON_4~y-J2InTd@7!Mi z?d}chnTPlIjya&?2%x=cKF|>A(-Ao}n)iE~#azXtCaGYodoe)GFsV_=G-rKc<_frz zpew=*v#1u|uCtCylA4C|Nq@h7(cQQWXVS>1S<{clnL(SoyJd4p>eb^He_7GuC$)+lg@{M=aIfi=&9_a+P2O{f{oZPyljDc$#4Hk6=~M($ZdaT1LEgca+vMK4^(1dWc(}d5n|j=7 z`1EsKOMzC~g|>+gMct}6izCsSA_z_)wEU7=rgmoFRTwz0Hv_u+vG3Ywy_Hy>GQCTP zx7vElu;XfVq<*eeLSO9kRoy@FrVSQSk~jtr=Wq8)e99^yMWD`Mfpc9G3wZO!)By6| zeg0oN%z`f84$|;Gi%t}6taL)MG!0i`n#3U-vDjGlH>pp#!o-vIYw;>es+%8V7{Vk4 zUvQbaUNhsxQn^DXA21lrbyR}y{h9+^uOE?tjKm-C!#MU)J&Iqb>f$Va|7os9re(QF zN30TEfZb2E-%@U4oiTllV#_|O${Lq`-h~ZoT7Q+(S!vfa2ej`z=t^jqm3%QhfCLE3>Y?*OA$Q|e)qyo`quU zbFfbE6Le#DstKebedxF)Tm142QSM~}1;uJt*qw4$T@mSKSndZmav9UJX|#`%l#g6C ziA^%IBOAgwe}9UjYmmA}I|dwgFM#fFc>QCH%1_uATv}O;DshYoov?E;sxMV5SZHE+ z;8S0dv19M3jR;ZSPd7O&)jCV$$YL5~Tz|@|O-_GLF1aHMw8J9kdj6inq@`v1_=x9! zXF0&f)=(6GQxriY+Gm-UaMXN#3<-(*Nwo>-A&dST3=RHrIB3>Vu(~hcM zCj#yg=q9~;QwgtgE8xG|mfi1hJ@@coO75A5ztvvG`!<%+xftK+#}%CTjWr^dUr6V2Y;t`A=SivNJJP1 z@~(m|&+OI(J_5SpK(HXKN<{5{m-*HJ7M~{rtzVGL-c2ntQUU zktQRA0t?n-`Em=!Rp#wMz+D5~sz=i0rt#TI+cnD*_;!}Nt(}4|2@jL3I;gNHrU&|t z;>zX17G2`!=_he*S#=U0?y*$EZ#kmH-Y?*o3hrUR0`5BK2EOezhaf?x!I?&@_Dc=A zL829cw`QU(T~I~xs?lT0FEb0`6Lb7NXs_`!`I=7G!YjgsX{G#ANvR+@N8b6pBH(U- zF0xM8O#tg;Bj#sgZ6y8nz)VDzC&myahHC9 zgw9?(_SS@z9%-F6>ps^wXRsbRLz+$e)4K`eOHm;27U(`4$hJzQ-QT3Vx3u4cBIRB} z&clX&f?!cD)^h9U`B-)x?Um{LJ80$D>q3pvy$^Qa2&sZiB8C zDV)gWhn`Q5{BTSUy!khFPZD=C?Sx^ThNy~;aSS>-QF2i#`~uU@7@pMA^qe&8Ca_kE zY!&$m*AWPmmn}a6?hfeoXr=BJHWj}{q_k-K@oqyN<>O8J+O-acU~wzf<_XF`GVu!s z@?}g9wnTjYdaFfD0)J`O&jr71GI-v}khlct0q!p7+U`|lZ!4AeR|nSf7z`sAQ$-+jF8=Hj z!?|UR;?<$$iRv+l%U}0jy>B0MH6F*|=m*j7Cb)RtNysUhVa1H)oB?97?wu zkiA*#4Li88Ze4Q2!ra%3B@rrhkN?Uz+1JNT5=;5z-~ISsz3%{Y9e%)y=g{jTy(|sA zp)kZSh2pAd+8v#lUP0hyZ`3!l#Qb8HSoDIVD`v+-X|q&SLzxXVV3I3`GPYer&Ld@s z?|4+XA{zGkapTGwdkRaUGQkPC5q2-~mnOVmrmVkF$=7xa+qapoav6rc z;(*F5-%O5Sc3;PN;b>h~oJ`^7lNNLuT?}zbDq0va!4_&E z6XhR;U0->8wadpEINML#K8r_DUm`9#gox>TQMfxAi^=o*eH~ehT4hTY4Sg)t@XG(( zzxACn&{d~1-6PVmiBKi>L_%)mYFjs#ayizpL) zB&DRll(`HoV!tP{J7Bx6MshN(J6}*;HvDA# zW5&OEr+;b>u0WSRuv`{om>7jCWi6}1xfl~?pRRpveOj;He_Ttn}?k>GWeKDzx^=lXM;U4!mi zz=4f!9Aj-1RnJ`D|8Ls{~-OUz`1KGybs^Zu*%-GJ^>!a!7CVW|QMO`GyaMp1Ldf(T6_yUQQcJd&tX% z&Ng;l3jHlXvkxV^wLB!&M&9J16Et zUKLLm$JoHp3$wSxejvh>t>qLokLD5ikwCYzfoy#%BO}P|)AWL+ON2o1FM@~yL^>|! zzwWuVPCW9@2 zF1X$+I2y;*^zmk-Sy(6fD3=uJJPKzyQUBJN|Eu@?siFP%gW=$#eLe8%IgiL2 zZ6c<8REwO;pKq^*F=m>dKdEp!oHLieM?i+wKr+8x_uU=xWz$2_kBG24GR{D;&J8K~ z4p09#@4tHA6X<$TwMet@hp>daiJKyap$W25JPaDrK|GHZF;6nRTwq8?DkL|=T1*Ub zvyu>RxVKk(s^M8a?{0=}h1THCZ35R!!mvCDy-?bRR5%)1bYXinbA^;f#Lb%p&#{<@I$KF>uNB22ujZEoGDpgZcc+D|(PrcE zp3=CtkK$+%=%T=NOi-Y!yc22i9i_{8blG~Qr6Z#2RyTPMvs;kAlxwjkJnQ8wVpj?^ zocq~4#M7_u4tGdzk|55bIB2}i3UP6Ar8AkyfxOV5%YZtT)@(26YTH>2(Y&Ua)evnO zWZ|8()J*hn2m$TqZg&nD+6;px6}4L_2eHTC?TE5`Tc4Joj$~*#G&zxp4!AI&d;G%8 z{aKXh)AwC9cc$asV*7**$vcvX-d54^knQCIGlucYTt&Ccef0IKh|yab!Oe5;m})M< zJybu0UY>WNm4FKix`(((9?n=yL#z!2RyyV>dHbbw24kKGcZolvO_~&523yBU*MAKp zSdLk=!}8s@c;V>b$5K=Ti5i}5LMvTdum`wspxc*Kk-m}QOu%o)&+<;s%>=T7QBpAc ze$VdxuJHYWy)9#2(>3mcHPp??4GrAybyV}Z?He7teeEZK@Xw&p{S*Kf9(0{d(k)~m zIIhvTh4uc zR7FUQaWFWJMF3rRyX4~FyV%bf95N2*`%5wwuiPPW#I>%qN_q?(=OIE ztIt30q@}hC?n7xI8zlW(oHS6w&`=~p` z=hb0?Ggj>l11HDi{ydSCNt|2=8|%F++}l^|T;@6$E*ys2t)qa83c4Bc(v%CXnH`ksM zAbedM*0NB|@rhqR8}_3o#-|+ldwL-X_tWRTffK#CHwsDr=5hXACow>`5p!yxZDF*V zMekGM`M_eCIb+|HZ#J`^Xhw{l+k0`WIYs7`jo)8?a&v9|{F>-k#5mA1#9@^td`}1k zPl5mJU;p=?iwU~eo8yQCSe6AjNch%!vVPt0eAdK1HKj*X(F2LeR0Ag()Q$SO+)+GG zjW&n%gOXx}2EHk8aX<48q&{bPYc}Kov;!9CzKl0a8e_z>7=JHu#c*Ye?kU-~CQC<$ zc-cqZjFLC+mTmR$nDqNAJ^}Ria&Z#FB6mTLZj77clB*_Yw*%*4V0|4MbQRbk-t(Wd z(-Bq=<_d+v2Zrqt4S`wc3EQptr;w`KZekuJ$AxYx6^~s8FvScP$)z%dP zeq5*8VFFjUbuoqm4hf>>{jra2qdYi2gbTV36fXj+RuOoFXsj^IMK5|aK8kSXM*Pry zlo)(`_`a|}ztzEC%0E0a;W0!PQ7q>yX=ChcZCS^Ye;YipQd9M>zy5E(Jp)~W#`kJ# z6QQHGqnyL|caQ83REX9LNyZm&kgtY37EwKx{NOC%d-fQd&zC9F8+u*dja!Tia+gNF1>EPLt41}sF>|Dpv?0t=H#zo<^BG?N#%b?Q zFOC8Yd=ycW1Jvc)cT`F#runEYeaNt#g#PM}?f0p6WuCac2|yQHPBbX+a6PMl zIF2&Bjj77Y`N5xXfAXMjEso2$G8Oraw#6Ba5oQ`hHnC)WMLjw$p{W=0l;Ab;c={$Q z?%rF#B?MjFWlsy!00$RB4G)bd#e<3DjCkoYNciL8Kz9CfblGZ!Mt@V8>;4gbl`C6w zd>O3Uu~)ipjQyS~HQH)dpcsAzTq4l*>|1K_bq>uBSEtI$i+tO0zMy=oK6aGHf=f&W z&m|dIoDCzFUU;k8oL-X`Hze$2t0gkJl44zpkW~|P!}g{VaEU<|t?j@)Pj1hDA^agY zS@QGi>v)#SE{7dvc!_x7#MC)$`^NW52r#Xj1j!EaEXp0sS_{{|KcD2wZ%A+PLN=Q_ z7H~;G*MFn-e4g?Y&#L&xY8#sRawQuk)j=s=Nje^}XAjPDq|397#bWCA!$!%Ulh!2r zkSKzb=AOcQ$CiuSyvi@6hXMB$=o)rm>g{vqy-okRn&UXo!rgURSIwiY8iy6OB7VbD zzR3KZI*DC#PDJkO?BEO8H`T{h5+1u!E~+rBOIs;ZV&HR&q@WwdK~H&xD_CzzNloSK zxT+JI&-OCl%`hH$j;UX`|Ax(&A`G_VY&YR-b_6eUg0qfr{iY>fI>A;Z8$!%k2nH39 zmke~NdUbH$UBHKWqObeJusKnORAhg3)XuBn$xyN(D)50OTqsz;-c69BomQ=U8XXY% zI5)jp_~QM(VURsu8}}u6e7}@A!KO5=fr}n!)`AUZF5#UJAv07ZQYGTOH2=mn3_v9TYp9Yx($gB6J9xjQW8T%uGyd9nQ&PIl%K{BBOBWMci0Qv?0!*AKh`THxAf5x4Zpey=vo*nvEfQ_7g@OK$;qi5DN zGg%$J&rV^i9Hda$J}(U@k``bJMd!Xv+Y0pjwN%Vq_w+Hyr8VG?`4e+>C|kl`_h0>i z3UpoL;MzWsaUWP1$5OM{8_;IFDCN{A!iZ#;IPNj|xib?oFVv<#Vc%VxA^kjR3K3uZ zc3aEvpf2DuJ4HHMMa;kY&cD3WpbLT2Uz?Y-!W;`dEO$zB#z9(M(D!%_ zNQ5)(<;1aOB+?5y*`#Y4@YkAqu@gd7l2nDHQO(cK9=%rvY74k5o68kxa&* zh6ETDYkFAnbTN5lby)XQbHu|5tYCk;p~&8cS{%2JMm>oyO}}NwjcH`F(sOz=ePewU z(nj-NJ=OcSOAEUDKHt&4M;OY<$x}!MC&(AlB*Hdmep5FY9oPEgntk(AllJ*GKI_9A zVWH0;QFAW3OAl(%bd~StENOG0doq`QKxSqPU6ot4>5>8H_+=L z?S4Tvt%8`{*nRQY&)_K0yi=-yuQJB+Xa>jTIyt&A!$S?o%L2LxYUg_1q^q2|!N_Z) zRr0PE-?iLKkn%I#S{K74J#v0P=Lx23y66&B0 zxU8VNqi)w!`|WozVXk6CiR87jgu&<+(|*V^)7QL1pO0-?7_(IZDJl-OaR>J=XZTC) z4vB3c_Qli5I_lg+7Y!BT0GADP2SiQIzDnF92TvWv93lQRLwL*o+?j3S=RsZ&yWTSz zvffp!hyu;E2(R!MV~XVG==(!y#}ZeV4Y9cRv^8*1;5v{upi9rFdOP!$s#O)SgD`{P z!Mz$m9!+^Dg(aK}s*B6Y%!V!3Y5}1f|Fa9VA9~sUWA8k`n&`H@A5g%C6tSS9fGCR6 z5djtK9aIz%6(m4_NC=pOrhs5?*n2_jy$dQ96tN=q-g`mBiXHv_YqGiIyd<9UzW2S~ zea^YbC+-M-+-%no?|BLB=d>Jed`f6^ zp_|+CrY);jb)Na+L6zG3zSk?fv;Vs5nj1I2>CC^SVAn;_?n}EP^Biv;@7O8ld9hok z=Kda6OG__^w>P?Viq*A?tUgk79d{S?B}>o z^7{<(_U5W+SC+m(`>=OsAMdzZYv%5dbkqKI)$B{tMY$$TbCw+5TdGsH?VWtz2B%*X zW!{V5aCy|bwJomJa5=u}@Yi0g0|dd>6yHa8Q?z^PhfA;c)~VrUCR(d6nA{wzHE-$E z`Jx|swez~Y-Li9v*XbJ%kM~N|X<<7)Ebh%S|HzN6#!j6&YT>8B38AmXj&GzGueVjS zdpGr|>-N(r$jyr+t`i}mb z@S)ea+m%-Jvk05KU%%gY?X-I0?{l5?Q%<)u^;p|`&Dxe;XP#tj%sN?VezVCbVvm?@<`Fly?k?Sx>VMB> zf$Lb~D+CI7PSon{IsM+Z+NsYS3chst{| ze%wLP?v62B~3`?#Bng56Gvb{Ea4 zvu$>f$h_fEk70FF{SN0ib?iR%@bOmO@5ildyzp1%$qr)@kEi?yj14TR6nUP%HS~V2 z_SRXJz4^0(`j~uMrnp|xS6yGy*W7ZSjb0N~++u=u za+maH>vbc$wa@VI7=HKQv%FV_s_H(@y(fHp$y1}Kw29(4)J4(mh3r?oE}xSv`q|^{ z*e&7G?X8yCv}>5!Ws>$C&q^mI>(%{O?|{K1-)cenvI}7`^Bm_qHk&q~GC-#eJV`esk6TeW!(c zHs~!}w_{0*l4Gf-77X8gYH$+;yFC=`8gE+Q*L={U-oF}Ls=WXBoaly04TitjG03lJ z=fiv2XFKL5o|o)+s(&GElksTJ8@v{Q3AUF8e^?eZ<%y9|-n3a)>@MbZ7h8jTG|ROVRFv4XJ}{1sP=cXQUF=l$PUXM9=S=%(QPF>6Wh83!|G zPTp2HUh%oXK8ki5=h!%eST_kYOK}MHd(y12X3v|u&g+ewzNq+S+V-2Fja_nk9)9#H z*{tW4m^ugdnJxTq=!d@PntKT}h3mIi*3ht4vtlca(p;fm>sH z&*xirNrGzT-FfY-*~&NRdr8`?sWbc5oBr#JciizF+iIWiEcMJEk~wkne7wj1T*0oF zqFtArwY1%LTzFMKrJ+fH^lqE(miF(GR?Qt%a>o7jlG};zHpkAr>QuYQ<%ky3GGf{s z)EvLZ+&x*d$CwYzO5Q%-&`kb5nY=#qRkV9#3U7P!O?$syebS}c#%kerEnf6^nq=AG zxoF9bmYLg2-R^uAozj>XUuS^Lm$}D>_PbwiXyVm*x%GK@!oBzXAH8p;kl%iac1>Eh zOf?+6eUd0-ty_K9jY)=?Z4a;foRw(*F|$F(@Pfu0>I$`A`rdmx+wFX{CsFk>&NVqX zHG0Z7-puKGUBdNWD~=ca743G)T&VM`U(W&0%!17JbUxJhg`LT2?I5#+Y7JgkJ~|Y_ zKk@UpC}PX1QAa9W3CuY;V~at1r+{J2uNAlN>f>|nv!UX8iMOI%+k>Ur)d~zwIP{;^ z^-JvdWQ+X?`^`SJE)<{rP&{kT1pU6k%{~|7FX@d*Z%cwrXdJmg0KfKt;QmmlHQ?Y7xa`REN zJI{6Jn>(53Hyr44M-~z|bMv4Nmg~Z6I4nKf=<$gh@21D6&2HYOVARRT2|~}C51r2S z37B;y&%&iayFm7lyq#8@qn)Cg)1R z^b{>?x9jhdd!1M$t9JU~qE%`Btyc%Eb+zr)t$m}1L46ncE%|m)!LF~O-MhEP=iWH@ zq0fkElTz&N^G-Laf1%;r&wXC-FFhUg`PCt>Hir(?3)A))Q!C^6hEo6~qJY93v1v~HCXudgmmcG=-p zXS-GZBJVGY-?y-B0c1Y-% zN<|H-)*f`Xv0$s!w#$y+#9N!%=_Ji-S0^F$!O?xzq63QKP=KP{z5Aj+&2b;{eTUQh zw{w?WZM1Bq`IZN_);yi#?KP(7{JfB*qelvF4o(-G6t|vytCgEW;RMueV*D^%(Qfw~zpzrfN`?~;jH>4_?8i*oC*lUWTWv12NI##~@n}kVa$Vup+L0?- zhSl6tFD5$HqSJ{FwF6Fl>1EKOc+uWo)ru7S8>nda*ROVqeCAj-ZkpHXt&FG9XU-?b zrm5GX(#>X^t#N41hW#nCAI(_4RD+RlJ zMZ4XnoYxq5WI%@`z2q_VJ&T+E`tCpRg4D{a$NH#Bh6X)unAHhr^k%S6hVW?X8l@vc z7v{a5e7)1$>aQQ$-+q&^#Z9rE1u5E{Ie*Wuk^^Io+iQ+7^Y?q(Aiwv~8}ss0ds^ph zThrWaamL^fH;MMgBWt#uIrGRxwBbkd7ctvIb-r(2wtrgBoI#fr$Kzl{yV}`Ni5Dv0 zy>7dCzu}K?*P|ccaP8C?6dKC>AL+cY5E@~h!=$F z?G^Wp%iq*{x`H1<6z%3le+ucl_G^>epM{2(O77LVRPw!#P57Cq^M91`jyJ!bD>}6& z)z560iAn!$Hd)pSTi<&B>YDcF83B)uRte0V)xcQ6u0YZ5?Cc>u&8B#UbqJm_)8}!` z7P8Imw|-PVav*n7&&Yg}=Yub%2mUl(dN8=r*CKV7#- z@qLC+MZ0e6&dps?x#I)lcYehBPL1|@*AdTxA)9C1@jNQIrz|N>ht0nUh~GMX>K?a zVq4t7?_$i}$&KpptJIvgX>rZIc_j^YL?zwOd(i7gNSMmN(xT0O* zfnOV*+qD1Mrhl#bdajEHc%NBP)NZ!No@J?TtafG8IcT0dWlZdZWwM&an~u+V+d0B$ zqsgn?jn~c0U-jvf_lei{74j=ov^#!?c{7WruM(br>uudIFmklk94lG%_03A2&zUsg zLF{&0)Q=^h-|I>n8@!o9Nf6UXV}gv@enM zzs-BEJO0M|Fopa^DB69{{^-lFFIQGC>f$Rp7g%U#w&|(Qn0-eyZXY^rx_`#^_#+D% z*L{@nI`)QU_c+{&$#Zntc{{{pV)UJ6-?I+*Ud>goD^j%Edp)nuxT`tCKAI2nZ&P$- z?rgmo9mmGTdp_3k)*kwz-|I-1UE!;)z4&Og&1vyc^F|I+yH1+YeffksEuFrWjL7b? zSix?jqTR1o49~27_}GL$@3rV?bWrOeWoj+NcxY*>gssrAGe1#Y=A8topR&9R<5ligv$m zxA3^Ld-vG0>oYwkoiaI_H#5Zh%Y)n#o6N2qzCF0jV#<5k6YRf6sR#c_*#a2?lP z9X@zw#p4;W@%&$j1^%zq8uFDy7%Ab0@_073K|=9=P~T4178wyDlwiTU0TxMXsbjeR zYt{QtT`$#_0`wa+U$AlI@eEYd7do!2FFA_i{!AZBX@ewDaZ-Uq8sny}lYgp!{tXVU z%<@>arLVMK22-myDm*~#BOmR8#_nK|@IPoYQgOj*@xP@9sGdp%k+A~Y1R0JO#c9px z-||BK=1h}c!bDL)WcHr-pBo$h=B%jA{V#fe>VZ1W`Clx6f3s6leF>HXJ7Su~(?IX> z@6ex8p2P7YSTtYwU93XKd57?L_}zrx9*4u!AGHV69{6v1fZCgSz5T!G#J`xFd~bw4 zk=CEZc(AMNUMiIbnY;uU&FyIaU-^(dNt8$wgEhR>vGP9jUrDFx7_ukki=%|-k2l8g zc(}F8-Rl)dgJOiD5Z)`u{!IQV8PMZ`9I%KMzoS{#RlFI!=cBA+(lO2`}T&eCprtYI!`m4yi0b z6oaQ@-0>q8|K020?D3_r2D{j*7sLPiwSs&afCrT+#@o6a^^?VaB7syI4BaotD0Zde z!~#Kx2vI9P{qHHuNMR%w1OIMJ=E|I{E6-h_`n+_UFUyxkhWuV7$pjLKI11a}odfE> z{GoIFo$+{O*sB6)TlV365F199!NU^?wo72s6C+efZ79U52!t$_JG<0Y7eMAp!R^;18NVbJ)ri0+5>72s6C+efZ79U52!t$ z_JG<0Y7eMAp!R^;18NVbJ)ri0+5>72s6C+efZ79U52!t$_JG<0Y7eMAp!R^;18NVb zJ)ri0+5>72s6C+efZ79U52!t$_JG<0Y7eMAp!R^;18NVbJ)ri0+5>72s6C+efZ79U z52!t$_JG<0Y7eMAp!R^;18NVbJ)ri0+5>72s6C+efZ79U52!t$_JG<0Y7eMAp!R^; z18NVbJ)ri0+5>72s6C+efZ79U52!t$_JG<0Y7eMAp!R^;18NVbJ)ri0+5<{G5HF;^ z*3089lgPK#+DRqBHbSvf#utffL{Y&Jp+b?sW}rkMa5r_ZGnEQQ38F$@(>!S_8(_JhgjZ+&MnSt*m@@2&IpG1*Thqsz%=vR_PwzuC?k z!el&L0L0ui;BQ%T9}Om>YtUyhO(v^}?*>d(2{Qbnzk$s&WHK#w9HpzpWZFzd>FDnr z(?^HNC|zw%g1=wRWR$KBlT~FhN>`W3sxcX*JH~ukoyjQO3dqRcHJFUjd9dSjnXDdU z{g|vKlNm$SpUL!?tUhGkOs3Cd4Irz|WCl#u5VBg3QCS&6Mm{zHbFoilWx`~QupfYZ z`ZULueBT%xCILPzn9LOWIV8Zxipk8de-2QYwq!DM?4JkpX$2W&s|mP50(@-QaTeHL z#7THOJ0@$2@4ifC&t%Q;y$_Q)FqtL3A7R()$YjkSo6KZRkl`P%1qfj>XLg(wWF@4; zrwx;}#C~mdoC{>6ZUvTLhy3WqWY*YU!({ESr82bv8=0&Fw&XusKxxU}9kInfo*kgH zBz+|qFRbjG$%$^%$RQ~iC#Exr=eH$k8WwLgVQM;he zU?yvieX85$*!nSAk%7e;uD3f)-{uk_1`3+;Tj@UnkeJU4!Y^kkv zVlwi#l*u|{|0TPQDUi`_7w`%@|Dy#WS)*JgKkWpDJU^1%njhJj9lX*gB&SZ<2%nPzw zkkMx`ll8^E5tC6pq}_hN9s5*%OPQ=c_B&voKFgTQ8~aqBs7#kL*#PXDW1q@2oyi7b zzZUkXOjlq_KJWqW*?Ct(Mq|ey@B}jQE!A~WQyb4^$8BP=!H^wevdv892ia66+X5Li zQ5q+vGud`_+)&75Otyo`hC$Yx$#ycCKV+>SqjK2=8UFDC0JSsn&mMN%aO`)%KKUmT zTm0h%f+pA@U+iTvKK4Jt9$oi-$mn!IpoGb?nJgGG8lUO7156fzeHx2Nc96*g*r&0W zWQQQbKVB%f0U7x$haDG&{o|0)=LnO9V}CxA9c5{Skj-SWW9+yQkadTQ{FBFyi@<(9 zJMIKKP6XLm$mm=r*>REB-vAk%>ok*zv3~_J&IXf3K~?}6*(hN4qOpIT$*9d@mp76f zM>ftgnS>ojvI|Tm#r{PkAiEctOvYqn;}Vmdl3)iPqh$HETDurW2X};0DuOD?106~A zit4WxpgOAqs(`AX8mJCx09{ZM>_URwU=PRySzs|(0+xbhfMTn3+Q;$BK{{9gGQdi( z3akcez*?{lYyca^?*Jw0EVCzFaos!^{;ioIb7FyK(S69I1WyLli(CM4bFgk za2Vu(ePBPx1_!`Fum-FJ>%e-j0jvV60gXLvv26$119w0%QwPuy)Ii}mVA~V)0=+>W z;0e4yUqJB`#ZMG3X#s7p08|AOFLeb@Ko1xILogi`g8F&t*C&EWU^1X_gT@IO7y5#J zpg-^iG+xs9=mTg>q%n}jJR0L@OrtT3#w;46DApPdf5fTJK690Pga zI5+`Lf>Yo$I0N#*Sx^AZgA3pyxCAbPE8rlYIBPDL2j+v(AQ_ASF(4Mi0qPs5&!9e= z`Wxzhn*vK<1zG}YU<2%cJ?I0>fGMDuyb{Pn*_?$hkAOp9E7%0;0b@`fGyn~O31|cw z15;oI%s~@i0h)qlz!EeEEr1nh30eVbFc+kNR4@)q029F^Kr!JI5DVf!JV*eez-W*N zl0Y&T1HwQ!2m%y43cx_%3tr&5sQ;$EnPSLKz!7pIK=ES@pbKh(6!;?*j0NLC1ddGv zNr1Yic#r@nMu`Ms5Dmh>ew-&8P|PA=bPtX^b1DanA!1)J) z&Y%mJjq9HUW`LPs1c(5UKn$WlG-!)s+ky6=0~i9?P%s!AhTYG=4*Sz_o-~kx?_bcLV@yap7fi9r;g_-rJQ04bo@jAAi;U;qpO#Z5+_HmD2g0b@`f=z^M{1I|M+ zd~4tgyddif`T+-gwBGJDBf5EW`c2GJm>*>0vF&4Y=9lG2VY@# z3Mj??BXA4c1{8ao0eiq&ummgx%fM{V3p@n(!5wfJTm{QPI#>ZRz)G+aeqM@mP<*oj z`&GaIPz%h(^?8AF&@BcOa}ES8fGy|^x`QsDBWMpAfXYadf%FuAg<{JGg8;>C6xUPC zPI2~fum-FH>%j)F5m1avG3}o@HVVhnJdh9Gf*Sa)3u=OU$kP(g1bBg?$jekP9k}Dz zFF3{)`}TlhL5ls(0gACGrn&(rhW(xH73|Pl=m-b`p&%TX0GgLH2Iim+&;wOLHQ)}r zy#dV^Xnyb#`Ab7SO0jps0ZqU2B0DM zh~rBD%@JtL?hE(|o`DkYyh)BS=uYuF97GkCa_uI`$gntc1axSQ&=7*P9+#8w0- zcA^-nGbn<*6SiU4Qd}AWDDJ>%xEO@mYE57c%z!Cq3>pC><8->%RtH)DRgYI0Q~}yR z2UG>sKn+00(%44rygn#PXN>)NfYR3mbwF*P5A*=pqxhJ<8vr9vi+yj1E!m@dl6}gD zDcdizuc%Ypr}HU(Z-Vd5K{H?h%HlD_W6Ji+Y?BQ>2n54H0H8Sl`JDPZU(f+~09RlK zsQNnc~A3%L+XV3|B1k~Spf!=^* zT>gfGxEf>VqkkqBu$$Jcn!!pf*JPqX0~U zU5cf{fe=t#_zChrDG0$a1=vmi1F`Q7`h$Le#=5>>7IYMAc!EBl1@HjWzf;WA7SQ+_ zf#c||0G)%zT*dR0ont(7Vh{;LfZay;H4gi!AO$3VI1meBfCNN?ksylg%dnM#crXUg zamgSNj0U3s9h(Hkf^&ebneuTAP(DtBxnK^M4d^G|{umfxd+rUadbtwZZ0t>+kkPeoEWnd{-0v5AtABO!?;3PN>PJlB1oWVZ%rpzyAv7ZlYKm$N_K7kT&8;}pLgY)1jxB@PN zOTZ9Z1Q*!8KDO6D6@~9Nu-_Wo0yjZf9?QzF;9yKDY-yD9B%9zbx$| z>{FVj;0bsPUV-P}87KrV+5QV`i@qFnE{GjEI?C0@kC2NeNJ;=3Fuhb zw*pjet+8zdYyp)y)hQ}#iub9!9hi>f_Sm-rwC{v%ZEV|M+Zs?kbHV|E5&=Yh4 ztBV~WQ>=@mKMFk^Q&u1TSeNJ+`gBFwZp>y6Y`cTrfcoD7z#jwy zD&s-e1_5e^KG>4Z50ISNwlB7eu^o&p#eYM=5I}nRPTN30^=de_0iaAzZC~;e5-<`(fG8jaBY+6@h1il$ zMA(u(5<~+_ri){;SZt*r2FSoDkOWcz`J5Q1@SV;x6-)*b!6YyR&^hQ@%JM+@oDIkp zomVlBU10MWWKY2fuoXN655Qb-AKV3Zz*%q`oC6tv@^cH@3!p6RP3+$Q*TFTg9$W^O zzJV1W=-G|OY$5NUFUfueN~WAP*b^x!@=`0&>7%a0na(2S7I15B7n*APZ!I zJzzK31$KfRfc#B)JPl5P0&oV9Oi`DQ?`35`ez^!N03AoZy9%xVN^=h=`tS+9KL(Eg ztu;}s_5%A<2dMlj;X4mdIllzIz)w&Let_@b8~6&ofY0C)C;=bA2k;)e18>0_Pz+v! zBJc_n0!^HQ=7ZgEIw}LY29nWQT3P%^*G6$A)lG^GsjO+Slv|dU1r?s_c*tW;k5zsmnt-rZ}_JH!BSjWri6Zzg7 z`u?CN=nlF7Y71Sl?FQ)jXiiSs-q`j7o}dq)c{IuT0xv*v+LrAnAx#9n2Z3RrGx9nV zTOUC4*df3V3tYS*XEup7{{wsEwvLk?r45ed-LEe>wm zwm54YG%hxFWX+ZG0&CG;SvKb)hCYYJ-o}ZnMN0%SnNT3P6JY1PtL6SQXdG}J7rF0h zAWdmp{MrSlKb(ce(Z-&vNn^vJV34P=Lu;?+n&XL_#?Hn8g70;vr3=AzRi`>uu~ph2FUY@B(cqC)62JZtC2 zuex^`bCf%egM*C|H>X5glj8E)ZLz=3Bm=nym&6+t&n4k~sXX?v);@1nXxiXB$Tj)Q z0BM$uv8Zu(?{+;+x*iAe8%2m@ZMk^L>&u^l-atd%f#w`blkarfX6PmDSZI*K#@>mG zbZa8bCZCiho4VUhfTlIPgESQH>OYkem8EgyB0#c>=r*G)pzC4W$>K$Frkm91g15WGLEKlPB z4V|a%?(f@%jPC5jX}B6f@wxI`ry&h#GJ0L>WwyLsF*^??0yIuiJ#Y)%B%Ny+FajDU z)HjseA8R6~u_sNaFf2wQkn&Qxn>M_aSv3wC=Igt#W&~?9R_^jCO*-$xoyX1w=aHhx zRENgPHg}crnPW!G8azr1Sd_P}$AW_kEI&w~X(RV_IA3ZVD&mLDy%V0TJNWh)E{z?P zLbpoX>P||~NQ?Fzs_VHx!<8Ij0cfZ#TpYaVLeGyYo@#0&qYO}WcnuK7Q=2<#*tTSN zpE>zRgIY~hUbS~FBMp_0SNDk@>o%(C&86Ym!c%DIdS=@WNo$tb-j#AdP1u3=78)v_ z(227P8#xyc}?W(j4{{9@G4Jc~<#(oS-3J zo0vara-^#HerTMj{b2ND)_g7(S&WL(_v18NYgAefxE!P+4c8-yG21$`l7?8D=i8c;&Zp%kuK0sZ;3QRps5SZmMHr@qT=9mXxNpi zzMgFu0w`})quQM)?7!pyY8Co7bP2qQ^}q_PkUoE6`tLo@7*uNVwO*|bk{UU+dT=#_Ygs5CNr*tkyVvM@Y_!EGM`-LYqN7$_K^kfc zr?;oeSE-^;KN& zvKShwZ(nuIGi!Iqc&n+A#w365mHriLf2CHbF1c&CO!9SigZ-xI+iNy}ckJP6YFSJZ z?YiR1Xp3dpq>;xI728~ZJ%T4^8^@1GLt{zjJB?~QTwRHx0P6iQW@+lmJzAycboY*R zo5`SItzJo+qu2#y8Y;CG#LFan|D;W={gP{#%ku_UviGzCx-!@CzuX<9__0i^Va3l|25 zV|zAo#^=?2-*zX}I39 zC)^3Aro7qP;c&^GDmyhb+EeB*p31@{Q88iRJm(oT?@oBy;1y~wA~DK#NKCW{_9P)g z4`oF*_;?-~6ewvzB~g)-gNr)mz0Wn5JtPf%$GDC2kPmJbp6!t!oao8YK)ZtFVE6>x zg~g{|eAU!I#%%0iO&To{BDCZ^U)bQG#q=9TNP|!ipUp@^wW?lbmDTO8it;#Xc9d(? zd8>Fma18gUsG%z*)f9bse9-3Tw5$c4AL2?e26KK}3JqP4$GVq492$vBxKiNakhRbl zK%;Bp)ahYKm;Nk`y&X?Q8f2qA5>OgRul>cXZdh+d8fql)ju*s6(D-e5b+XIKv+`Js zb3=$wVokMCns@wm{`@!LTn@O=Inz+y@7Q~+X_`3BpgyNT9YH<7TMrUcghKBVr*8<> zQ8Y+x0e*`VNWuij$;Wku%QWYNQWQW@v^`2e#FtWid%e7>Q42xZIcS&<=G2l$LeoO# z?L2tv^nGY3N`sYEOq0`U>8-Xt^?GsEIG^r@I*8anhooDo0li$$8)0G~91{Eu%@?eL71=^dAL&KsCLoBP3H7na5KfVk#de733 zN2OdL@Z!dYKC|f?(;6De8?2p18ahw4-3XMT#ps5l0FqjjDN2Ag>JH`$PCRi# z`IQbHTYB@s87DD!rH-D|KSF~E2K5!HbHERdl8BMVo1bTfWM@2i zhcqsT@Zp1Lutqh+?4Z%}zRx@|I1T5~V16)nUBw5rf5sH*xkKZOI0Q3SjAlYo4IeWh zul=BB9iXB49D0`!K~PK>G&9EWoF3LcbAoBmO6KD{RC{#|G{#HorXmhORD)DlHHC)C zXF*o))m7T$edaWdRDGlQvTzzPY{nh1@H2l<7aAIAQF}MBTuZ0)__=4TMIxu+%2X-~ zu@;D9c_F65c1BNp{u&w@OK_e&NP|HzW!te;_f~rpZDVO*?I_FJm$W+ZMyKQ2LgQeA zR)_INC{BouiW1f1-G4tWD1zpIEEc0R2l7Gl%0m6_RllJoo`DtoOL>O>YGK>3S^e!v z5v>td!5UYuzd}Q8J8R1gm+^_F7%|u~1y9FBp0^HFR<+#v#l3I2#t0hnTWg+=!l0<(jt8Q2S}@GS2I&cswG=GHczS zq1I?%(YV&YWj|gR{a3yAfre^`cJGrbw%mF%x?D3H8p>OszD-R3e78&Gni0|vZV=v_ z`aEm)wXoLZns8=qd&q`>HG$tZmTM%?P(2vyGHdM9TDl44nq+7w*FOTP?fYOJtdM33 zG<2mSXCIR^YZaED|6jSj3=JB7%7XKW*V8n*!#(K}OcXv@ML5F~2lVFWX zdu02}8ZV>gP@l+V64P1Ubo6JG?zP>EF{`W|ga~3~=t895s~QW&A2>W8eLPgCjlZdh z7nrrx`HK=(jJSlhjWk%JMUTWvSz($<*Efv4cIgs0>Z$t<$&eefM4r4LTkQtm33x5}r=wo=N*=w4=BRYsXZk zhNki|z0lfdpx>R3Iz}4q?Wtlr@Jykh8WJwu_UoJ8W+6Pv;+=`mP^}7cbN9L;{n3NV z8&`K0KvNqUJ>%Cltrz)HPfo_r`)_7xQkOnh_}=Q?cW5XULkN>eH&(?$yoA99SBRr#fbG9~`eAeZ9opm{yor%c>0xl>-0T!%NzU4=KWD z8Z)MG{9HI}yT%6U512-^HAi!K%j*BQ|ClaS_kBYeDpTaG9W-jbROg&7}m(6#g%zmP8R#pSkG4GRC}jc zQ+cl(*`iUJdYAn>z+;R6|ZX|5|AiBA_^))hg9(u7IVve5l_~QTM3PgR7F&`1?QG> zk2=)d(rlD{;v|$dtG(TzF+kl}6EZw$RiCHarFy*BDant<4deVQ5T9&brUwo z2rr9WP~T$2qlD4X0!gaRk>Xy1j@!T*YA^mdDOvqu{f?3~E}VsWiW20FTI0vf)s8(f zK1gkjdJ064K|(QKg4Mhv*P;6lW;en*UoyrvE+;AQm=72 zfX;#U$Js74)Kj1tn8F(MqoW^8zp5ROgLxx&9$b$#G!zNtzt$Suv008YG_D zE6RuNUcx(Bw(=|0dOqJ-yl7huR;D5GUbBN26ZnExUQnGBFl$ z6`aX^_9A~&cl>gSwU*s`-JDBfZ_@^K4Tn(q`1Zfz>Hq#T)^536-#-Y~J^&GC&-`~8YZ7Hq?g-tCh zI!1oWrrWNgT4R@F@}Yr0={&QMhOV^t{E2r8G_KMLAe90}^dKib=fC>TOS?q`{2 z<4j}YbwI6t+_gc?9>;Vs;56J=FK_hmyaU7L_@&&hq5%ztCYop|O~YMjU7U+@kWg^4 zsLtsADV#OV*(K0We_*MxrrW4Y_xGHJOQWI`;2otJZb1EeSGH@S{!p$3rJLPMT*s6k zZ!|8z*A=4xxQqK#)S&0%?mQ^9#$BoEG)f{AwyrFS3KI!p1tRAkGm}T$vRuvi4Y3`1 zFcq`Z7Ld2hL? z`csD+D>{#&n2*Z)ZcQO$aYG}P*y&2ufLZO5yEh!eS`PF@0E5+=nFGhaR0)F!2v`ouQ0ri$oRB#aS4 zQ_pfd|4N2KKa>K^SfCL|gZUzUh~S6lSgGgGc#I2Ne*lenTX{daUAXz`*;-zam-ia)pB|PSK^mGN!&)a;qu#82 z*oBb9Nh2)Cnta$)VGZS@r1r8ps^qy17Qg+y&uz&2YpjCx>@vOisH2FHa6Rbz&|g=$ zs|de2(p}Ps_VRwz*LxZ7=bLZzG!U(=BaKiX5VUFS#2fDu^V7R=7n<>NE^y>2?I~3B zJ7vAgpN?VC=FHvYd3&3e6us>F*~`cQt;QpBEuo?D^zhUk2?1Hds&g8y?zlliHE~9^ z?(-$9Gvwm}*NgRlhHA*22C?mbq(-kr8mezN&tJJ7DSqdS>h(TpL7n<>0}5e{oJ zqj2M|LmFyXXeCO#L$wMuQ7n)}@}&{HV|>ZT^HoP;7Rt44l+SBeqp^NR@x3XN zbcRwih_a?Z>l4%LD{gvf?z<|qYDkk>oJSyyMtI5R9hq9 z{k+K|FW)%{4SO;{AdQg;MN(e8)q@6!NAhT8f%VF&tzBf+o)l%*KVn*Xu`?BmN?mXhZwFr%b2N~3jL5uVSj zc<+$S=ak$bgx8c=E5AdiG;dtr`_@$MYlRg+wsM-lj~ON6;cbodyGvv0>=$s}!Ccdh z7u!`{-%J~Y)af~H-VB_FJ)2i?1hj$$`n*9Jsv%uwn;f!gw`c*I<={%cFlz@-UlBYE zv-99$Sg!Yv7Krhr2cFKjQj+$~#xsLU!+A$_q*^iBfUCJVt?D%{)ps~lM<_~Hzqop! zWM;&z&^r8Py(+A`yfymxp6xFvN~Sep@-%!MDinuU$3*jLJ`>igpV?mu4Gs428z#;n z*3l7Rxt(4Yo_xHI)*xA}s<`q~){8ai!M%B$@;-5Ehn)VJ6S*?wX73%K!R_~y?*jsi zZ{C}V8FJY=-ymox77K4Ze4TBp*Ylxay^HGeEJGRtr0JFU>%qNY4}7>Z+&yH0L=q*z z<3)F0KAU{UX8s~*Xf#6~vX$kn?bKCw9L&BRg@%F`TTgjG)1@)KEDpiIwpT2<1&l z6hKe@!kX$Qf0aDnTlPeI#piq3l`46@7tbZo^;CSmmpWyN2D|pbI1FDu>o=;Br_bWO zW!K|ir}}!rkcL|0iw#rtu3ginyH>1s5qQeS?ID&&ol|EGyu?}KNZQ=U6=E(s1j&W08jLKQDb-YxA)?i*=!)D@8#16B-(` zMs;ZU$kBQr#Rtp>)x6|)MclUc@qg~wk?w&p%}8h{rqJ;aP0cnvOsmIiEJ=YzADU+Q z7W;D^yr6sU|J0i5G)kfx*2gE{2UPJW8}I$X9oOn7n$cX7`3=u(Q&+{C(tcEfoEaH2 zph2HZ1*F6p*S76>^ZU!|=%D`jUVQyMG|sWvR0h*@Ppq{vDBvNY^|H}9+8V##%9jbQ zH)*FcAz>1=V3s#%@SL5DSK{Aqda3k`6*Mew^S$Ngv0d+emjbNQXf_ZU`wlC6ZD6PMB_Cum!U|N5>@ohavW=bV^v#IvQ|U=0dk;vttMlje3c-5 z)0|gzYG0aw9I)7OD>PJhHYEIva?EJZ5u+JwkrR~6B-q@!pN~Avmv5uPa|h2ur0NO@ z9v(_jGRL6a5_yZk5!8M{{Ep?O>t$$ZY6L=38xke657v_}#1XnU!oJ$OS61DODr;(t zgTx3DB|Q>GIVw4&x#n`9I&X~z$@AuS!r8m9*ViI=hk8p`Q}R5yD>Ud6Ram$Ao+b1XDe<5Sz}+{kub;U$081DRG5Czh=RRD8}Mm078HM;a9b zSETH2AI0?#b)Cn^nr;5>FSq}cb)d;%MzjrmFFDz0VQueM@`Stvj8Q7nm zXW@b>_Epqh|7Ny}G=F-wi`r{wDsPQ{<|zXu>tftf4i3D^!{mN5Fh0Jp-UXLysJ(2a zClCimg$TuA+dHtN=ERE{CRlF<0^*iuR#d}6vu91U^_l&r)9vY?hjJQ5NSQ2dQh$}Yhw=(@n zjlFb7fIUwUjKzKO&Xz;knSS+i%dQlDi-LwmvqWwGrR}G$rI|P@Zq?VL`aDY0puCmd zXQFW%8r5^>iMTUG;Dh;z*yZ;dLM%u7gWbcO5!&*I!_&>*0o`A;+-H|J1On&xg^ zYibrFf`(#$w8CguqsYOq$L-$yu>0Gfq4g@%UMWAG9_r^ApSP`HcF4CoG%WTX&C-ZI z`)dhP6A&ljdbsmUgoeD6=vgFQp!4+(G^p`(o;lDMKr_;9z!JAcTMls=&TmTkcox5{ zMjEOIiT;(h$4f`kT$9QadE3P_MXT4?E%)T^88MG48GjH}k$WmeHMD|3)%Pf@8R9$( z1y`CC%-E(-a>0CYEKRjaTW>rv-b$+l#;mgEqAQG9+?ApfR9{bYj5q;fprD0&(3Cbc zwfwp3;o48d_u8ls(Dm{vzN2;{Oy0Mv&ULg@gp~Nzk2QY5AL|uy>pLg~M@QUqRgwd4 zWlrfj9~_63pKy6ANp}wJyE8A0X2`e~OPR}phI-|9Z=2?BFv6|FCB|H-_AHSZD7P`_iVF?V4=KK~=<9eC6Mv)xF6bx08J*zq;* zN>9)Th(h4}W+RrDf>C^O1B;9YnC&JrU#qT(s(Z^n-?Hp}(}x&F%dcn7uqexqUtKS7 zSBm~$MQNjlQ}K=`*BDe^kLprTeLbq*&kDus@bqrOfjbS2n|Pl}=1PuR=Ocwo5W>5d zasSG;tj3$5p`Nb|^{{{8O%0(WmMY$hcwR4u8iQ|hrOm~?s^5nA<1anvYox)))Pw&U zzApp6Rcyg%_1yCZ>i1<3c`JWk1|zwOH(a1m@xBZ+D&Bp8Mn!#tM#Vce(EO*pFN0wT zu~UV2x==?|dq=fL>Afi_9{w6IC?;+C!}D2O+vdi`T_ffF^_BJ|TOBk%+$D`G7h8&= zVkjKr8N?T^u6wKw_mlzJ0tUMyNJHbPe)@#DXHqZG$~Mwacd0LtYnI244jr77=q1-s zcd2B}j>VR^mlG_r7D{K<_UG@#TV|@?> zQ4V_Ty4hCiW7ZNnk31GL#yp&&v`WK`KU~q<(w?j#3P4ZZ92)AGY)AC)Nu6Ai)&gi` z!f+cR5JX!GMv6{-URY#dw})bK7ALAcj|%T#ETO(P78Co&etk^a9qU@3xC0p+T-yzxAiOuZk3j@SGo3338gwK8E-OZU zXG0(jiV=!Jc=}D+caGEfKoK!QTRiH`i;j}YFw@};ZO7TrV9dg@D&D;R<7_IKrc;RQM0gU2u4hTROE1poR(f0hCYljOEQ;`x z_r*w0xmudbF{jMy~{X;|&Gj+d{BpVH~Ku-l8s+{$SYNL3Wohbt`)2Qb##vCViGZdy(xf-A%f9?Fcu2V>1sb|8yG~1n z@731REZ59s=h3a(4tneNd2rl*KY zkeHoczTk+vJfTt4OnI75AAR!MJ6f*cW|S|GhT7>K?>XCEL`mpL7>ZQU zBPs2xIE{+F3Tc$)np=@kkp_M5pUgG4O7K_SgjPK^ju|U|3+t9Xbj`4aJb^kyB)1Z#3F4IOxLp@)A*AGCpeD|QrWQ2Eu6HR)eLkAvDvE?q z465fCe;jG`HCDk2E+<84?~k7(vs2#ta~h?+Kc`XJ`*Rwly+5Z>+WT`FrM*9=QQG@+ z8l}BIr%~Gba~h?+Kc`XJ`*Rwly+5Z>+WT`FrM*9=QQG@+8l}BIr%~Gba~h?+Kc`XJ z`*Rwly+5Z>+WT{w#WUrt#63Xs;FUL3?w8kiCGCf5FY2i3-%$BuWT&sO4)z@k-E?q1HgdGeTiY3;p*^(P#RV0lBDCD0hdTEe@`8@D|U z%GWv_ZCnvk&X=bN>=|6$e2UL4q+!p5WbE#tV&2%)K#phK8$Es^{BE z$1LOlzm|`@86a;V)3XK%@1z&QJ1kbNn1cYiQsh9XHSW32fW`8*5dJkWrLspR-J_&A zI@+8N8k&W+@e_u=TWMoc8TU)@*e$H3KtoRnj;ZY3MxGBZ*K~rW9yEgRn}t)J+`Ce)aY>htn)kM4 zS{AjBDtlfTzU~SQ^&v|a?EN{lUO)M}FI;IWeHVe7H{ywDG0iEP=X+eUI`;FM{P{#G zxj#Mu0S#NT^Tl~6@@_lg>%_%(QWkRWJaG4NBKZ-xYbBJ-EsZI3y6`FvX;@8^&oJ;t zZ8G*|+d=O1P{)UfZ?`NN~#Tkxzzjr0;Z=46i*ZHgDHL+6FyOR@t zUEWNyU9QO~`+W-fMRAne4WyyEqj$Yo!!fTG9)=It^C4Kxmdx%uM}~;4L-;a&qwp;zEv{OBmcRMv;G(R* z=6V<8KzSN0wkql4%hCklCy;{pQh^=+%FSf|{VS1c>Z_23@S=8h`Ah7xM=E^!W-6 z^{~*W&cSP>p%G)!>A^pmG->yNr9s}lGfmHcuovT2S3bjOxSm2q-q81|PNQ0*!Wu?E zrOyR$bw|k?2W-T^@1oMfWV|FlKa;?Za~mSpYz$WNh70v#xKgFR%8B(Nls4X-qt7;b zXV*h!cWBj}?r^lmyCUo4<&zfBb&H$j(>>+q`QzUNpyx-a80>hy>*cY_+yh$ke`WGt zA`RslehY(!*6fO(Y%d<(b7BnBAa7D=DCRr&#LMJX->XI?VSc|wQ!zjpYwyC`%1=?p9dqLFxWa&yxqS`lj;kX6>=J`Cen^A8{KNy6@*XebXm(yd}SfPGM z&)dfMP99hrF?3pJ_l^yNm_DIk`;W2l&s&S|-2nR0k=MFB2y>|Z3HGSW%HH8jf?glr z^@jJa+k8>COEM`vkBfVv-;LHv=FKv~ugBPuOz+<6cEu(mvt?4;IKmr3{+CTty+eC{ z8GsRnN_xCY>$4j1HGk^Am;2)+{qbCU@V7kiw?*ug{b>@X)V8d}2gQi3ISIW~DGd%6MDjURg7wH4VQ>Ve3YG|?W%%h+Ygv>v z9cC>*u7gmFVa}2!>X$!!A2Y%IYMd^B?+^waICF$St@I8 zrQb#tHmdv}bW16I;W#sP@)yvmieDHk?j|HhuXOor6j1mhCvKQ;) z6Dy|duuhFZxen^o3i##dhQoTd<3wKJ=k?v`u>w6J@66VbV=!hAZrkFjNDP@ADM8JbOq*_~-+7NGGDVe}hBD7t^(txcAjWi%sjBa>F zrWH`pZ}&geLDI1PyFYI>A%hHq@kzMewV3G@2nu`U7bKlOd@GW`RK+^83Uau#>ULGS zFadRz3~cjw<{n^kcoEeV3j$lkO!9i=W=;k+hZj*?kB11Hh6nNq_qk4ur{fD8h3S`c zS2b3F)sXG%Q6v)z=iS}7@@Ws^kGP&Yeh>P`^bnUHKyQN&bK z7QhihbRsJpmx`h=Mg0Q|Nfj|U{{|GM(ExAXx0a9IfO-UU2)woIplu1<)UHsvH6L%I zm}cIEUmC4B$!WBVU>R0%K&~|rbA$WTnm&0_2ORumwqkv1eX(axW_w^quR%x719T2k zBcC4%S%8)Z%K{qv z+LYjlR&$mHgng}dK+WK9_{9acEyjbRiJbUC!;E%f54_x07|Bq!xeQmpbGkEUmS z08c^S{2^t|k5#6g76L-mY7eLAund?OGQRqk168*Tpmo&hhu?*Ev89;-FA=MxCjs;d z6HxkC{@aHjTcY1(UaP` zrqSjquj=#O0M$G(w4>AYN$i3l1x;*t{H-JHn-`!$phMZw1}i+RCyeY#qy`_@lTrZN z*XZ=>93F=fmG(}R%|c#_hi!FWLO|N3yZFx31D3;OAY7{#c_jDK{qT`p%u^kI=3!s8 zM#m;4CkJe?GX8Y5-e`!DNma`b)+DA>AJ9cSBsmW_a=6TXjpD-*KVTt1J)@?iaoinO zyN8yRRx+uvG6XYyT(BZ7Y|-mt8fOICIH4?oS!?dj+neSDlkJEDIbCX4i!h1(Ol!k`s)R6hrE15u?UOaKtJSqJI8vEq#@kD+O(^8eiCE^n}Y1h`FleZrGQp3nvC)24af23x_QI%MnTxrm@hoM8jjaX5L=XgUt~pK zO=>`zhN6d7ahTZK#%6#`lU;YLdh6*Nd~g6dQJ{!|=E-@xx2{ z>E^h9=6p6q&+A9MkF2i5 zzSFE~=`Ab}Ibi&=90TKd;%D;=@ih=I7kCrp-mt4`1aK8&x81JciVL3a*88wu^bo@M z&wrrVES6EGA@ZALG0xV**O*_<_^O{?xO9r=uyOu?vU29QO^6tGoTPm;zQ=Gd=y?cjn49 zw^pO?bDp|&>$Z(Teh_80km;HS?azY{4Z@&lhu%4#?z?}f*)RY;@!qFi#ZY@Uhdpm>1z6j$g%eAVf20&dytpH%>R zP54b54jsDdZNE`r3Dai%)KY%xY*ep~nil2Fv10_j@>e}Qmbp6xMP=|o_MYFG7p>3@`huj z;Q(%$PCdV8)q)K*Q#P6DZ?XH48X*-j=#vker0qj6__*$v=AKuaM@Y4?BdQc>pZH`L zXvty3c3j^w;WF}>SDOvOqv6&Pd|};q$kTw>N-5b6CS5&+GgAOa4tM50#_6c=NF`t) z0A+E4Yfx4z?}Ds!`9;Sjr89so5v!@k7#h!Jj|FHB3o;s^HONjcTLPJa^r3G%v-@%d z2!E+uJd$mcazSqf`aHB!;hsM4RQSjD{?aB;$}QIJAEF z_0p{#*oe1AnI&8{Z5{8wESZwV2fte9Wg=dYLFxT2=ubhhC;!=WcC&uyFvY?i^ceJe zVw@lE@AIKmI`F)bk!#Na`F79BRF~yU0T0Kitl8JwEtVUs6B=w$XM>pqDBT%Vr2Dk;!VG?zz=cV8<3AmdTx-=8}0toX5ka!v9JQLwp&`UC-h{4+1nQ zGtQ{?RcRU0D&&c*anWiLGtf=6m~{1exT=W|lzQ15<56&_Z9sD=nZ}KqWsO#euXutY zh89VeJOK(+2vAww zVrZ)q@w~?ldt~KomE+)rF|g4tyX~~2nyhYEjA8QH=%r~^2$?1=s=YiV1FH}D{dvLG z*xDip0V~66s=So~SPt8A#vtu5kzWZ)R^f(W}%61GgA+}^UxlnG!9QZ z3(5l2z*orvolZ z?nZWfti_E{cnhvW*>jtDln*SUIK|6@b(`36--2SC0N?q>*mi1T=2yU%2-Wc$%X+U? z%t0|rvvqpg(Ldgd-QA zLqJ;$dfHF@Ns7H@%#p_#-)|7t->-i)Fv3XjLJasyWKoNhTPSKxU3m-kJo#cvquk4c zhB{rS0o*39p>2*$IBP7t*crrv){$kCr9B~*e4r{3^z*n_Q5wc3r^nV=YRMF_1PB|; zws87r*1I+=Y-QPKuJOuKdc7xW;!f{70PQF*>_CRy3OizomgTZ;lVY*8OQ)W7_w{_s zi?&F+Ux=ZoM4KrHu75d*tCr^H-3zOb{mn?Y>fj*$@2YBz!7XikDU4A3|avP-P; z`@v4+{`eB|+pXc&E?Au{mlB{l&hGs+z20vYARl;0tlVbg8KD5r(lq4-)^704qy@k; zNwHO%w~W{QLcMbhcnaEl?ah=}|DV?Y+1HK%JcxYZ2&f!hBv!}F0{A$=raW(T8Pqvo zqbB-WVkAu~-@kDqy3y3}8ET+oh$7WR?XJ$4Rca~)$f(RT%BuznuvLtiB;IV`pf8;0 z99FmWJQXsV0eHXrX)i?AKQ{`U<)!FZn)S3NpA0HP=jHUk;ql2ouc@;MNd>iNGk7h{ ziiuB>)SIx!tp(gTfzI-khe-zr$+%05$BkL8PkT8t-R#)S3WugYun*l1b~V4>2`(PX zwq#bFEtZy`%5b`48<7pd6|%6==kdL3u*8tHn%BRnh1EKqysPM-lqzP@(pp7k<2END zfY|ke?l5~srw`2M{g4bF(l0sQ9JlewYzmGc7$|N4^h0c)-n54tqqLBaNO1~?*{p~d zHt8KSdbF;UtQ|R$KOfnbY42K;OrR?f6eL+LwuMc6H{9sZ=BJKnq78DR|G7pU2{gbI zF>S~jJGt8c&0%Qe;KS4A%oP}5_JvSgyKYxcQybS%fQcc~sSOIzDxW5&)_%|>dqXLY zUL9+*Q_8NRs;NtMvMK~N1&sy0a_4tCz%Wm=M({Wzw+|?C*hZf>XFB2vd}jDDl3_H< zmA}oBXD@K%Fv1I4G><4G^aJ8fTQn)SjMZh59Q05?E3MR^qjYm zz97*#j>E+lK#UXa@45khFZtYuX9T}qH7JNWjAes@I;!^f?=a^AfzIJ&vmLt)0O{d+ zQ-VBB)^J70a77TP5`q6DpW1^yEQ#smV0oxwQ@A>NZ?scD!2T~jSbz?J3REXnGHB)b z`39CM7f7m@tZ#f7k`ILe&S9j0zeAsjs!PpMD{^5m$3ZQ4V&B8;>Mp0+y2gC}G-_Ki zQEZ85aE1=M=GDV~Lu29t;Qok>gPGKXoVqyL-Sjfo491hN^{(d_1a852^t|1*)a=|k zqn1M9jXH0G>RBSaB&ZjV*D zz*5D+@b|{mv}Hjc-24Fx{Ke$IgPFVVr=7@NXU^ zmq9?M;G#aTEv?|~2+%49w7;?oPJR$4ax7$xS33;)!u11h77G~U87PBiH$fikv{O{~ z)Ip*1xC2pjUcbSVHkl4%>Ab#^d&B#6e`Mx9?VtMQpv-wFCWjX(F^SIC%NOOZ|613j z!FZQt9jGt=P;JKUF`~HZ9x%VsQyPpSJG0*I@6K#fMoa4s?`Lf81<|TG8uR4_F)c7i zYW-|{YntP=_I-A(hfXi$>X)Z2=x9NHO(W4cQ5#B&a5NZ~68(9yo#=r_fNo zGMpO+_#Bo><%2eLAJDxr@|R3X(N`--Vu-Gb?H3ILbv9rI8aN#rnzuNrT;Qu>w)*n4 z->NvZ5SOpG|71v(xYbJ@QdKZFGYnXVH(sgHe`)~J9i_sAFMD>@b+zZ*l7Lk%kW?{a zEi2wk82Vvr<_qmhYqgyXtbrnE7%=(oAC7xmNZ})s$LW3`pa*<2KAEfH&vwa7wY{>C zxbd^K+;Dq79$VK=t6XXVIYkXHP;c5k^Xi}SxAny^8@GOLNCO$k$Tt+oQqTs6H^j1W zO$0R47wl*KEuD!S4e*l`(}KN~YHm>AbJzrMxG{)9+3I!(yZ_g$pg19yKjTPR>f>s zn(93~_BS}dKm#)?`bG;)a)NM@Vq?wPDE;91f*j?m5QgJ-%|u?4o6zE-48SQ^8mUp4 zbgC>_WmgY%MCNeo_@<=D9jC|zfPbESdEF0tNZz$6I6mB5J=#(_hKwt{Lr;|HzaUm0 z$@Mra&EO}#({x_7?nF&;f@+eoNX9ag9$zk9Kn35czu7G6N$-3#Zz~$mjT7X$F*fb( zBd%)J=WTbh#)qSgAhYQan|=B6?f38BzqVK=)#0%yP6zu3FbA8cSVny$2 zKv(xhRoN3p<;powB?3G6d)?FP>jgu;(GDJeLyXm5z7h|PItsk6 zfXuGlgJhOwLda8L^EH1kyQq>0>?L9YKd3|L(!JD} z_OMss)deCDPEz20|A;o|s_D86NX7~Dkl)JHjTs>r-JkK*MQR%S48$sfVwzO7kIvX) zJJ&Ki2>^Q+@ zFJqz2>hBjik+ZwTpbCNuEFmBv!~TS)p%m1D%;lJ1@nGvcfhB9I%WG+^ro0KI9+l8p zM@`^(bDFuRR|5|(JNk*f@q}hLv6OceEAOz;s?pyND}HPMD-n&ksOVLR+U0I^XnJ7} zOeu)8^NqSEC5#DCnH4pS;(rXdU;)^^olc^{A|P5nY;>`DjpqUkb!z{a*$Kqs2?xOD zRz#Zs!)`54DVhfN+?YJ!*rmHY52yXM<7JR7DV@$;j`I1_G4J605taV;f&!#)07Dpu|&h0e ztz~S{8fJZ*`$el}jlAaTE2Dg19>u}#?|6*M1;sdluJiTp+O$j6tGpD_eLnnQki_OM z6#Ls2m5>3diY=NXctw(D5TqaRHI33^OoR#N^G5-t;G$NkG zVe>8KB%|dd45$=@N&R)t?s-@pWFHs;Ry%L|%9|Cy=4CPd^b{5o{k0V~h-Yagiae`s=I?Qz0r?oalQV?O_8?)8Qno6$xvzN|k(w@{lqdP@(U@Ye~?QP<$ zJPJ0rw8uhPM7!0+R!UXnLw9Q;ZTH;-)V)k0=tZ;fPh-m%VLFCWbVVTqR$Y#?7ci64%TUpM&}^oTs*BcZB5RD9*Q zi>u`8qnW_+CS;>gW_iJ=H5E|w@YV0`os-S}Y){wOm)_Ox70fT|K0Oc;8Xd32tL2^)|xgk*812@R*|YEh56b3&7-Siy5<2##axgxzsipRHtPMTEux-((vT`Kk(s@72n0gha zH#5MMk7T6$pXRjJisFf9&0?*kWHy&7&c1>9jj5$QC8X^iC`v&aO*Y$_5szwh+;28* z`+3U%l8{qN9N$3pfJGS<1uBNv2xAmje^pnbnyop?2c}Vc5fc^f)*>Xkx;9uNMGdf9 z?e^=tk8P8XkO?dyKqEw{Bn(~nr$AE5*T^6jOx@84#r zzpAvm)$tj(0szkw>wNdezP}l)lqzFNt#e|4fBrS1CZ|-8A#J_-dX>owNqDl{JDe5FxJdiEcPxuk?}L87=ITo8(0~W#omP{joXYWCAQ!o%J!R6EG3|FX zKc|(uaPaDtR967VIx0Qa-Cn{;H(>l_3zzM2_jp(f1nmUG$4-DvK^TP%8*k5~e!2zV zIw}PGr!~R#51vAK=%4$|CMwN(hf=3=w~gj&K#5NCfRORP1FQi(a?}1$cn$_EA+W5j z7oL{^!-Z59HPLDUyXxDg8~$%pGv`sIQhq4%?Ob`MTo=s*7eb3R6SPZp*zdJ`PC-hG zMuH7GmD!%)iGUWSM1Lz#M|k-qAFE{*r{nx#&#NDt!OLTR3^5q|U0PjJu?L2L%VFy3 zLzYL104)*5us;MZua5opjc~R<6P`+<>?&prWy7h_NfnX=t=hWd!lbm7R)cw)(`h)_ z<|TmDCZ-2EtdG{6e2iB(E%&-_kmPg2sCJ z?Z{qPFuxs9S|I0!N(t|4t;Ul1?X+E7Grt{88YFq?izmJ}@^=Q!%>>f7B1y~Juq3Qv z??sd%3!-;XloqBJm(FkL{)8yC(uZk^2G@stU zQ%!be7h^hE)YrmvjQXRqmw*2GQ(C6J(q#0tx!sO3DBEGbHp1Ak9-jmP{H8ACMi zf@OiX)b@%^)Lyi0@PMa>zrnz=!BL|_YN|SlFXE``EE)JJW*VW_H)^d{&PKhu)`y;Q zixppeV8aGCQtgeQkU>3bIc2P%5pZz}L(Uhg6Ts+fsL`bJ%oH?Fg!`>n3XP7~=Dn>*529j8Tg}1%bNhvIjUNC-U+d68KaixSMNV+OBt}>PLpa*)ZWI5F9(+`ab zzY0UqBODSWI@X-@ANO?aZAu(KE-a;jpo}Vpobe47YI>`xgQ^!5y2_XKv z7808Cs}~aNB0d<-4{V$2fINoGg2SY^_Bv&Rc5W>SLk59cPO9@=dsu3E9>Trp?am(l zYBxRudE>_0hd*p$Z}eq`fSw$N9^VJ*?IYJpP|Z}47=$_Fy9<~d(}}!Z zVh&##<;N>Y8pJ6G7P&s5BO7qz0z~|%MC3`7qmc~!W#akDxjsD03*K4UqRDr)dohnE zAV@(Qx!x>P+sFW0N5y54OQOXS{_gP}f>*m}RDcj3l`lX!6Z-<{3 zahZNQg30R@mO4{>`8WN-qsr^Y`&VJN=K&{C74?P8*-vQ|Ld_aHF~U}XOdGQLscO`v zh{t43agTp}H~O%+Q9E2Np#1*t6j6HV)ly29f2W|pDz6q2ett&*la=9!0qWo0fqFbN zrlgO5eFyr&CybOS_R){;Kwjj)6m$8dLK}RNS3;$2<5y(_eH8;`)Zq}CpEfxBYn`^~ zcag`Z%zw9gte}yYr$u~F9YHUvi#VRQr7kaSar zfpVeaEyoYsm7_#`#wuLttu{lIe4r^2TbH$C}^b;v1~Nb84I4M2u207o7R`7K zN7a|gK5+5+wsk3jOhThi*?4P^Z0i6{#{!Jq+%_fCYwGRY&YWcfmx9JcSDqRCMMTwMx7y`vkZPYz){7`HTbHCP~pGU(HXsy3BQjJo{hxAuj!*kTD)9oY3xogV3C>&2OKuoTLlpwA7FZbS0DGSIFv02sX z7v*Di2x2=m%=mH<5yIU2ZoXTaK~)02J%e9PF^eZOz#k_15HR-ehFe7w=tsc;bb=Dpq>EF^-~RT!8^y z#Y~F0Wk<)lDmeMrT|{%Yk!RfiWJw^(_W+;YizVwtB77cn%NRRrZ;G)r1w;8Z?w5atBR>TQSZhw_sMHjVI z?nr=h*dRSA^H}o((4#m**WWPbv}*GNq=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-arm@0.19.9: - resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/android-x64@0.19.9: - resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-arm64@0.19.9: - resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/darwin-x64@0.19.9: - resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-arm64@0.19.9: - resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/freebsd-x64@0.19.9: - resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm64@0.19.9: - resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-arm@0.19.9: - resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ia32@0.19.9: - resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-loong64@0.19.9: - resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-mips64el@0.19.9: - resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-ppc64@0.19.9: - resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-riscv64@0.19.9: - resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-s390x@0.19.9: - resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/linux-x64@0.19.9: - resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@esbuild/netbsd-x64@0.19.9: - resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/openbsd-x64@0.19.9: - resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - - /@esbuild/sunos-x64@0.19.9: - resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-arm64@0.19.9: - resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-ia32@0.19.9: - resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@esbuild/win32-x64@0.19.9: - resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@inquirer/checkbox@1.5.0: - resolution: {integrity: sha512-3cKJkW1vIZAs4NaS0reFsnpAjP0azffYII4I2R7PTI7ZTMg5Y1at4vzXccOH3762b2c2L4drBhpJpf9uiaGNxA==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - figures: 3.2.0 - dev: false - - /@inquirer/confirm@2.0.15: - resolution: {integrity: sha512-hj8Q/z7sQXsF0DSpLQZVDhWYGN6KLM/gNjjqGkpKwBzljbQofGjn0ueHADy4HUY+OqDHmXuwk/bY+tZyIuuB0w==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - chalk: 4.1.2 - dev: false - - /@inquirer/core@5.1.1: - resolution: {integrity: sha512-IuJyZQUg75+L5AmopgnzxYrgcU6PJKL0hoIs332G1Gv55CnmZrhG6BzNOeZ5sOsTi1YCGOopw4rYICv74ejMFg==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/type': 1.1.5 - '@types/mute-stream': 0.0.4 - '@types/node': 20.10.4 - '@types/wrap-ansi': 3.0.0 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-spinners: 2.9.2 - cli-width: 4.1.0 - figures: 3.2.0 - mute-stream: 1.0.0 - run-async: 3.0.0 - signal-exit: 4.1.0 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: false - - /@inquirer/editor@1.2.13: - resolution: {integrity: sha512-gBxjqt0B9GLN0j6M/tkEcmcIvB2fo9Cw0f5NRqDTkYyB9AaCzj7qvgG0onQ3GVPbMyMbbP4tWYxrBOaOdKpzNA==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - chalk: 4.1.2 - external-editor: 3.1.0 - dev: false - - /@inquirer/expand@1.1.14: - resolution: {integrity: sha512-yS6fJ8jZYAsxdxuw2c8XTFMTvMR1NxZAw3LxDaFnqh7BZ++wTQ6rSp/2gGJhMacdZ85osb+tHxjVgx7F+ilv5g==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - chalk: 4.1.2 - figures: 3.2.0 - dev: false - - /@inquirer/input@1.2.14: - resolution: {integrity: sha512-tISLGpUKXixIQue7jypNEShrdzJoLvEvZOJ4QRsw5XTfrIYfoWFqAjMQLerGs9CzR86yAI89JR6snHmKwnNddw==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - chalk: 4.1.2 - dev: false - - /@inquirer/password@1.1.14: - resolution: {integrity: sha512-vL2BFxfMo8EvuGuZYlryiyAB3XsgtbxOcFs4H9WI9szAS/VZCAwdVqs8rqEeaAf/GV/eZOghIOYxvD91IsRWSg==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/input': 1.2.14 - '@inquirer/type': 1.1.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - dev: false - - /@inquirer/prompts@3.3.0: - resolution: {integrity: sha512-BBCqdSnhNs+WziSIo4f/RNDu6HAj4R/Q5nMgJb5MNPFX8sJGCvj9BoALdmR0HTWXyDS7TO8euKj6W6vtqCQG7A==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/checkbox': 1.5.0 - '@inquirer/confirm': 2.0.15 - '@inquirer/core': 5.1.1 - '@inquirer/editor': 1.2.13 - '@inquirer/expand': 1.1.14 - '@inquirer/input': 1.2.14 - '@inquirer/password': 1.1.14 - '@inquirer/rawlist': 1.2.14 - '@inquirer/select': 1.3.1 - dev: false - - /@inquirer/rawlist@1.2.14: - resolution: {integrity: sha512-xIYmDpYgfz2XGCKubSDLKEvadkIZAKbehHdWF082AyC2I4eHK44RUfXaoOAqnbqItZq4KHXS6jDJ78F2BmQvxg==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - chalk: 4.1.2 - dev: false - - /@inquirer/select@1.3.1: - resolution: {integrity: sha512-EgOPHv7XOHEqiBwBJTyiMg9r57ySyW4oyYCumGp+pGyOaXQaLb2kTnccWI6NFd9HSi5kDJhF7YjA+3RfMQJ2JQ==} - engines: {node: '>=14.18.0'} - dependencies: - '@inquirer/core': 5.1.1 - '@inquirer/type': 1.1.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - figures: 3.2.0 - dev: false - - /@inquirer/type@1.1.5: - resolution: {integrity: sha512-wmwHvHozpPo4IZkkNtbYenem/0wnfI6hvOcGKmPEa0DwuaH5XUQzFqy6OpEpjEegZMhYIk8HDYITI16BPLtrRA==} - engines: {node: '>=14.18.0'} - dev: false - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: true - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /@rollup/rollup-android-arm-eabi@4.9.0: - resolution: {integrity: sha512-+1ge/xmaJpm1KVBuIH38Z94zj9fBD+hp+/5WLaHgyY8XLq1ibxk/zj6dTXaqM2cAbYKq8jYlhHd6k05If1W5xA==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.9.0: - resolution: {integrity: sha512-im6hUEyQ7ZfoZdNvtwgEJvBWZYauC9KVKq1w58LG2Zfz6zMd8gRrbN+xCVoqA2hv/v6fm9lp5LFGJ3za8EQH3A==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.9.0: - resolution: {integrity: sha512-u7aTMskN6Dmg1lCT0QJ+tINRt+ntUrvVkhbPfFz4bCwRZvjItx2nJtwJnJRlKMMaQCHRjrNqHRDYvE4mBm3DlQ==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-x64@4.9.0: - resolution: {integrity: sha512-8FvEl3w2ExmpcOmX5RJD0yqXcVSOqAJJUJ29Lca29Ik+3zPS1yFimr2fr5JSZ4Z5gt8/d7WqycpgkX9nocijSw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.9.0: - resolution: {integrity: sha512-lHoKYaRwd4gge+IpqJHCY+8Vc3hhdJfU6ukFnnrJasEBUvVlydP8PuwndbWfGkdgSvZhHfSEw6urrlBj0TSSfg==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.9.0: - resolution: {integrity: sha512-JbEPfhndYeWHfOSeh4DOFvNXrj7ls9S/2omijVsao+LBPTPayT1uKcK3dHW3MwDJ7KO11t9m2cVTqXnTKpeaiw==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.9.0: - resolution: {integrity: sha512-ahqcSXLlcV2XUBM3/f/C6cRoh7NxYA/W7Yzuv4bDU1YscTFw7ay4LmD7l6OS8EMhTNvcrWGkEettL1Bhjf+B+w==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-riscv64-gnu@4.9.0: - resolution: {integrity: sha512-uwvOYNtLw8gVtrExKhdFsYHA/kotURUmZYlinH2VcQxNCQJeJXnkmWgw2hI9Xgzhgu7J9QvWiq9TtTVwWMDa+w==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-gnu@4.9.0: - resolution: {integrity: sha512-m6pkSwcZZD2LCFHZX/zW2aLIISyzWLU3hrLLzQKMI12+OLEzgruTovAxY5sCZJkipklaZqPy/2bEEBNjp+Y7xg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-musl@4.9.0: - resolution: {integrity: sha512-VFAC1RDRSbU3iOF98X42KaVicAfKf0m0OvIu8dbnqhTe26Kh6Ym9JrDulz7Hbk7/9zGc41JkV02g+p3BivOdAg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-arm64-msvc@4.9.0: - resolution: {integrity: sha512-9jPgMvTKXARz4inw6jezMLA2ihDBvgIU9Ml01hjdVpOcMKyxFBJrn83KVQINnbeqDv0+HdO1c09hgZ8N0s820Q==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.9.0: - resolution: {integrity: sha512-WE4pT2kTXQN2bAv40Uog0AsV7/s9nT9HBWXAou8+++MBCnY51QS02KYtm6dQxxosKi1VIz/wZIrTQO5UP2EW+Q==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.9.0: - resolution: {integrity: sha512-aPP5Q5AqNGuT0tnuEkK/g4mnt3ZhheiXrDIiSVIHN9mcN21OyXDVbEMqmXPE7e2OplNLDkcvV+ZoGJa2ZImFgw==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true - - /@trysound/sax@0.2.0: - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - dev: true - - /@types/chai-subset@1.3.5: - resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} - dependencies: - '@types/chai': 4.3.11 - dev: true - - /@types/chai@4.3.11: - resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} - dev: true - - /@types/fs-extra@11.0.4: - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 18.19.3 - dev: true - - /@types/jsonfile@6.1.4: - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - dependencies: - '@types/node': 18.19.3 - dev: true - - /@types/minimatch@3.0.5: - resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: true - - /@types/minimist@1.2.5: - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - dev: true - - /@types/mute-stream@0.0.4: - resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} - dependencies: - '@types/node': 20.10.4 - dev: false - - /@types/node@18.19.3: - resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} - dependencies: - undici-types: 5.26.5 - dev: true - - /@types/node@20.10.4: - resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} - dependencies: - undici-types: 5.26.5 - - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - dev: true - - /@types/ps-tree@1.1.6: - resolution: {integrity: sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ==} - dev: true - - /@types/which@3.0.3: - resolution: {integrity: sha512-2C1+XoY0huExTbs8MQv1DuS5FS86+SEjdM9F/+GS61gg5Hqbtj8ZiDSx8MfWcyei907fIPbfPGCOrNUTnVHY1g==} - dev: true - - /@types/wrap-ansi@3.0.0: - resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} - dev: false - - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} - dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - chai: 4.3.10 - dev: true - - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} - dependencies: - '@vitest/utils': 0.34.6 - p-limit: 4.0.0 - pathe: 1.1.1 - dev: true - - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} - dependencies: - magic-string: 0.30.5 - pathe: 1.1.1 - pretty-format: 29.7.0 - dev: true - - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - - /acorn-walk@8.3.1: - resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: false - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true - - /array-differ@3.0.0: - resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} - engines: {node: '>=8'} - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - - /arrify@2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: true - - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true - - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: true - - /bun-types@0.8.1: - resolution: {integrity: sha512-VuCBox66P/3a8gVOffLCWIS6vdpXq4y3eJuF3VnsyC5HpykmIjkcr5wYDn22qQdeTUmOfCcBy1SZmtrZCeUr3A==} - dev: true - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true - - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: false - - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: false - - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 - dev: true - - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: false - - /cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - dev: true - - /css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.0.2 - dev: true - - /css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.0.2 - dev: true - - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true - - /csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - dependencies: - css-tree: 2.2.1 - dev: true - - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: true - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - dev: true - - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true - - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: true - - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: true - - /duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: true - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true - - /esbuild@0.19.9: - resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.19.9 - '@esbuild/android-arm64': 0.19.9 - '@esbuild/android-x64': 0.19.9 - '@esbuild/darwin-arm64': 0.19.9 - '@esbuild/darwin-x64': 0.19.9 - '@esbuild/freebsd-arm64': 0.19.9 - '@esbuild/freebsd-x64': 0.19.9 - '@esbuild/linux-arm': 0.19.9 - '@esbuild/linux-arm64': 0.19.9 - '@esbuild/linux-ia32': 0.19.9 - '@esbuild/linux-loong64': 0.19.9 - '@esbuild/linux-mips64el': 0.19.9 - '@esbuild/linux-ppc64': 0.19.9 - '@esbuild/linux-riscv64': 0.19.9 - '@esbuild/linux-s390x': 0.19.9 - '@esbuild/linux-x64': 0.19.9 - '@esbuild/netbsd-x64': 0.19.9 - '@esbuild/openbsd-x64': 0.19.9 - '@esbuild/sunos-x64': 0.19.9 - '@esbuild/win32-arm64': 0.19.9 - '@esbuild/win32-ia32': 0.19.9 - '@esbuild/win32-x64': 0.19.9 - dev: true - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: false - - /event-stream@3.3.4: - resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} - dependencies: - duplexer: 0.1.2 - from: 0.1.7 - map-stream: 0.1.0 - pause-stream: 0.0.11 - split: 0.3.3 - stream-combiner: 0.0.4 - through: 2.3.8 - dev: true - - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: false - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: true - - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: false - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: true - - /from@0.1.7: - resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} - dev: true - - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /fx@31.0.0: - resolution: {integrity: sha512-OoeYSPKqNKmfnH4s+rGYI0c8OZmqqOOXsUtqy0YyHqQQoQSDiDs3m3M9uXKx5OQR+jDx7/FhYqpO3kl/As/xgg==} - hasBin: true - dev: true - - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: true - - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 4.0.0 - dev: true - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true - - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} - engines: {node: '>= 4'} - dev: true - - /immer@10.0.3: - resolution: {integrity: sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==} - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isomorphic-unfetch@4.0.2: - resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} - dependencies: - node-fetch: 3.3.1 - unfetch: 5.0.0 - dev: true - - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true - - /jsonschema@1.4.1: - resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} - dev: true - - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true - - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: true - - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - dependencies: - get-func-name: 2.0.2 - dev: true - - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /map-stream@0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - dev: true - - /mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - dev: true - - /mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: true - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true - - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} - dependencies: - acorn: 8.11.2 - pathe: 1.1.1 - pkg-types: 1.0.3 - ufo: 1.3.2 - dev: true - - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true - - /multimatch@4.0.0: - resolution: {integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==} - engines: {node: '>=8'} - dependencies: - '@types/minimatch': 3.0.5 - array-differ: 3.0.0 - array-union: 2.1.0 - arrify: 2.0.1 - minimatch: 3.1.2 - dev: true - - /mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dev: false - - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: true - - /node-fetch@3.3.1: - resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: true - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: true - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - dev: false - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: true - - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - - /pause-stream@0.0.11: - resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} - dependencies: - through: 2.3.8 - dev: true - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true - - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 - dev: true - - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - dev: true - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true - - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-quick@3.1.3(prettier@2.8.8): - resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} - engines: {node: '>=10.13'} - hasBin: true - peerDependencies: - prettier: '>=2.0.0' - dependencies: - chalk: 3.0.0 - execa: 4.1.0 - find-up: 4.1.0 - ignore: 5.3.0 - mri: 1.2.0 - multimatch: 4.0.0 - prettier: 2.8.8 - dev: true - - /ps-tree@1.2.0: - resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} - engines: {node: '>= 0.10'} - hasBin: true - dependencies: - event-stream: 3.3.4 - dev: true - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /ramda@0.29.1: - resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} - dev: true - - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - dev: true - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rollup@4.9.0: - resolution: {integrity: sha512-bUHW/9N21z64gw8s6tP4c88P382Bq/L5uZDowHlHx6s/QWpjJXivIAbEw6LZthgSvlEizZBfLC4OAvWe7aoF7A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.0 - '@rollup/rollup-android-arm64': 4.9.0 - '@rollup/rollup-darwin-arm64': 4.9.0 - '@rollup/rollup-darwin-x64': 4.9.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.0 - '@rollup/rollup-linux-arm64-gnu': 4.9.0 - '@rollup/rollup-linux-arm64-musl': 4.9.0 - '@rollup/rollup-linux-riscv64-gnu': 4.9.0 - '@rollup/rollup-linux-x64-gnu': 4.9.0 - '@rollup/rollup-linux-x64-musl': 4.9.0 - '@rollup/rollup-win32-arm64-msvc': 4.9.0 - '@rollup/rollup-win32-ia32-msvc': 4.9.0 - '@rollup/rollup-win32-x64-msvc': 4.9.0 - fsevents: 2.3.3 - dev: true - - /run-async@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} - engines: {node: '>=0.12.0'} - dev: false - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: false - - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: true - - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - dev: true - - /split@0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} - dependencies: - through: 2.3.8 - dev: true - - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true - - /std-env@3.6.0: - resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} - dev: true - - /stream-combiner@0.0.4: - resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} - dependencies: - duplexer: 0.1.2 - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - dependencies: - acorn: 8.11.2 - dev: true - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /svgo@3.1.0: - resolution: {integrity: sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.0.0 - dev: true - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - dev: true - - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - dev: true - - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - dev: true - - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - dev: true - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - dev: false - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: true - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: false - - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - - /ufo@1.3.2: - resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} - dev: true - - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - /unfetch@5.0.0: - resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} - dev: true - - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: true - - /vite-node@0.34.6(@types/node@20.10.4): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.2 - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 5.0.9(@types/node@20.10.4) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite@5.0.9(@types/node@20.10.4): - resolution: {integrity: sha512-wVqMd5kp28QWGgfYPDfrj771VyHTJ4UDlCteLH7bJDGDEamaz5hV8IX6h1brSGgnnyf9lI2RnzXq/JmD0c2wwg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - dependencies: - '@types/node': 20.10.4 - esbuild: 0.19.9 - postcss: 8.4.32 - rollup: 4.9.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.11 - '@types/chai-subset': 1.3.5 - '@types/node': 20.10.4 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - acorn: 8.11.2 - acorn-walk: 8.3.1 - cac: 6.7.14 - chai: 4.3.10 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.5 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.6.0 - strip-literal: 1.3.0 - tinybench: 2.5.1 - tinypool: 0.7.0 - vite: 5.0.9(@types/node@20.10.4) - vite-node: 0.34.6(@types/node@20.10.4) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /web-streams-polyfill@3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - dev: true - - /webpod@0.0.2: - resolution: {integrity: sha512-cSwwQIeg8v4i3p4ajHhwgR7N6VyxAf+KYSSsY6Pd3aETE+xEU4vbitz7qQkB0I321xnhDdgtxuiSfk5r/FVtjg==} - hasBin: true - dev: true - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /which@3.0.1: - resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - dev: true - - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /yaml@2.3.4: - resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} - engines: {node: '>= 14'} - dev: true - - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true - - /zod-to-json-schema@3.22.3(zod@3.22.4): - resolution: {integrity: sha512-9isG8SqRe07p+Aio2ruBZmLm2Q6Sq4EqmXOiNpDxp+7f0LV6Q/LX65fs5Nn+FV/CzfF3NLBoksXbS2jNYIfpKw==} - peerDependencies: - zod: ^3.22.4 - dependencies: - zod: 3.22.4 - dev: true - - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: true - - /zx@7.2.3: - resolution: {integrity: sha512-QODu38nLlYXg/B/Gw7ZKiZrvPkEsjPN3LQ5JFXM7h0JvwhEdPNNl+4Ao1y4+o3CLNiDUNcwzQYZ4/Ko7kKzCMA==} - engines: {node: '>= 16.0.0'} - hasBin: true - dependencies: - '@types/fs-extra': 11.0.4 - '@types/minimist': 1.2.5 - '@types/node': 18.19.3 - '@types/ps-tree': 1.1.6 - '@types/which': 3.0.3 - chalk: 5.3.0 - fs-extra: 11.2.0 - fx: 31.0.0 - globby: 13.2.2 - minimist: 1.2.8 - node-fetch: 3.3.1 - ps-tree: 1.2.0 - webpod: 0.0.2 - which: 3.0.1 - yaml: 2.3.4 - dev: true From eca0ecdc839d8d221fd0002ed9b4830b9ab4af8a Mon Sep 17 00:00:00 2001 From: alanrsoares Date: Sat, 3 Feb 2024 19:57:35 +1300 Subject: [PATCH 18/24] chore: rename property srcTxHash -> deploymentTxHash --- cli/schemas/interchain-tokenlist.ts | 2 +- cli/wizard/commands/list-squid-token/index.ts | 2 +- registry/mainnet/interchain/squid.tokenlist.json | 2 +- registry/schemas/interchain-tokenlist.schema.json | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 047ba6f..5f5c01a 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -29,7 +29,7 @@ export const interchainToken = z.object({ salt: z.string(), chains: z.array(chains), coinGeckoId: z.string().optional(), - srcTxHash: hash, + deploymentTxHash: hash, }); export const version = z.object({ diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 98aa311..187590a 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -189,7 +189,7 @@ function parseAsInterchainTokenConfig( iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, - srcTxHash: data.deploymentMessageId?.split("-")[0] ?? "", + deploymentTxHash: data.deploymentMessageId?.split("-")[0] ?? "", chains: [ ...[ { diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index acb04fd..ff7c939 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -22,7 +22,7 @@ "svg": "/images/tokens/rmrk.svg" }, "salt": "0x", - "srcTxHash": "", + "deploymentTxHash": "", "chains": [ { "axelarChainId": "moonbeam", diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index d10c8d3..3362c6f 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -42,7 +42,7 @@ "name": { "type": "string" }, "originAxelarChainId": { "type": "string" }, "tokenType": { "type": "string" }, - "srcTxHash": { "type": "string" }, + "deploymentTxHash": { "type": "string" }, "iconUrls": { "$ref": "#/definitions/IconUrlsSchema" }, "chains": { "type": "array", @@ -66,7 +66,7 @@ "tokenType", "iconUrls", "chains", - "srcTxHash", + "deploymentTxHash", "tokenManager", "tokenManagerType" ], From 88cfcff3385b0b3f1b646c3d595faee9dedbcd11 Mon Sep 17 00:00:00 2001 From: alanrsoares Date: Sat, 3 Feb 2024 19:59:35 +1300 Subject: [PATCH 19/24] chore: rename property tokenManagerAddress -> tokenManager --- cli/wizard/commands/list-squid-token/index.ts | 12 ++++++------ registry/mainnet/interchain/squid.tokenlist.json | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 187590a..e2088a6 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -125,7 +125,7 @@ export async function listSquidToken() { export type InterchainTokenInfo = { tokenId: string; tokenAddress: string; - tokenManagerAddress: string; + tokenManager: string; tokenManagerType: string; isOriginToken: boolean; isRegistered: boolean; @@ -143,7 +143,7 @@ export type InterchainTokenSearchResult = InterchainTokenInfo & { export type RemoteInterchainToken = { axelarChainId: string; tokenAddress: string; - tokenManagerAddress: string; + tokenManager: string; tokenManagerType: string; deploymentStatus: string; deploymentTxHash: string; @@ -156,7 +156,7 @@ export type InterchainTokenDetails = { tokenSymbol: string; tokenDecimals: number; tokenAddress: string; - tokenManagerAddress: string; + tokenManager: string; tokenManagerType: string; originalMinterAddress: string; axelarChainId: string; @@ -172,7 +172,7 @@ function parseAsInterchainTokenConfig( return { tokenId: hash.parse(data.tokenId), tokenAddress: address.parse(data.tokenAddress), - tokenManager: address.parse(data.tokenManagerAddress), + tokenManager: address.parse(data.tokenManager), tokenManagerType: convertCase( "CONSTANT_CASE", "camelCase" @@ -195,7 +195,7 @@ function parseAsInterchainTokenConfig( { axelarChainId: data.axelarChainId, tokenAddress: address.parse(data.tokenAddress), - tokenManager: address.parse(data.tokenManagerAddress), + tokenManager: address.parse(data.tokenManager), tokenManagerType: convertCase( "CONSTANT_CASE", "camelCase" @@ -205,7 +205,7 @@ function parseAsInterchainTokenConfig( ...data.remoteTokens.map((token) => ({ axelarChainId: token.axelarChainId, tokenAddress: address.parse(token.tokenAddress), - tokenManager: address.parse(token.tokenManagerAddress), + tokenManager: address.parse(token.tokenManager), tokenManagerType: convertCase( "CONSTANT_CASE", "camelCase" diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index ff7c939..ecf2825 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -27,31 +27,31 @@ { "axelarChainId": "moonbeam", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", "tokenManagerType": "mintBurn" }, { "axelarChainId": "polygon", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", "tokenManagerType": "mintBurn" }, { "axelarChainId": "ethereum", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", "tokenManagerType": "mintBurn" }, { "axelarChainId": "base", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", "tokenManagerType": "mintBurn" }, { "axelarChainId": "binance", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManagerAddress": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", + "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", "tokenManagerType": "mintBurn" } ] From 0cb026658eb3eb82932b12a9bec01f31f9a37790 Mon Sep 17 00:00:00 2001 From: alanrsoares Date: Sat, 3 Feb 2024 20:12:39 +1300 Subject: [PATCH 20/24] fix: type mapping on script --- cli/schemas/interchain-tokenlist.ts | 2 +- cli/wizard/commands/list-squid-token/index.ts | 10 +++++----- registry/mainnet/interchain/squid.tokenlist.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 5f5c01a..21ccfc7 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -26,7 +26,7 @@ export const interchainToken = z.object({ originAxelarChainId: z.string(), tokenType: z.string(), iconUrls: IconUrlsSchema, - salt: z.string(), + deploySalt: z.string(), chains: z.array(chains), coinGeckoId: z.string().optional(), deploymentTxHash: hash, diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index e2088a6..892a65e 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -125,7 +125,7 @@ export async function listSquidToken() { export type InterchainTokenInfo = { tokenId: string; tokenAddress: string; - tokenManager: string; + tokenManagerAddress: string; tokenManagerType: string; isOriginToken: boolean; isRegistered: boolean; @@ -156,7 +156,7 @@ export type InterchainTokenDetails = { tokenSymbol: string; tokenDecimals: number; tokenAddress: string; - tokenManager: string; + tokenManagerAddress: string; tokenManagerType: string; originalMinterAddress: string; axelarChainId: string; @@ -172,7 +172,7 @@ function parseAsInterchainTokenConfig( return { tokenId: hash.parse(data.tokenId), tokenAddress: address.parse(data.tokenAddress), - tokenManager: address.parse(data.tokenManager), + tokenManager: address.parse(data.tokenManagerAddress), tokenManagerType: convertCase( "CONSTANT_CASE", "camelCase" @@ -185,7 +185,7 @@ function parseAsInterchainTokenConfig( name: data.tokenName, originAxelarChainId: data.axelarChainId, tokenType: data.kind, - salt: data.salt, + tokenSalt: data.salt, iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, @@ -195,7 +195,7 @@ function parseAsInterchainTokenConfig( { axelarChainId: data.axelarChainId, tokenAddress: address.parse(data.tokenAddress), - tokenManager: address.parse(data.tokenManager), + tokenManager: address.parse(data.tokenManagerAddress), tokenManagerType: convertCase( "CONSTANT_CASE", "camelCase" diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index ecf2825..922394b 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -21,7 +21,7 @@ "iconUrls": { "svg": "/images/tokens/rmrk.svg" }, - "salt": "0x", + "deploySalt": "0x", "deploymentTxHash": "", "chains": [ { From ab42ea3f5886ec118cfa21db433980285df55126 Mon Sep 17 00:00:00 2001 From: alanrsoares Date: Sat, 3 Feb 2024 20:32:30 +1300 Subject: [PATCH 21/24] chore: fix tokenList --- cli/wizard/commands/list-squid-token/index.ts | 2 +- registry/mainnet/cosmos/chains.json | 2 +- registry/mainnet/evm/chains.json | 2 +- .../mainnet/interchain/squid.tokenlist.json | 6 +- .../schemas/interchain-tokenlist.schema.json | 85 +++--- registry/testnet/cosmos/chains.json | 252 +++++++++--------- registry/testnet/evm/chains.json | 42 +-- specs/interchain.spec.ts | 4 +- 8 files changed, 198 insertions(+), 197 deletions(-) diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 892a65e..8837131 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -185,7 +185,7 @@ function parseAsInterchainTokenConfig( name: data.tokenName, originAxelarChainId: data.axelarChainId, tokenType: data.kind, - tokenSalt: data.salt, + deploySalt: data.salt, iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, diff --git a/registry/mainnet/cosmos/chains.json b/registry/mainnet/cosmos/chains.json index 1c04581..f061c03 100644 --- a/registry/mainnet/cosmos/chains.json +++ b/registry/mainnet/cosmos/chains.json @@ -1,7 +1,7 @@ { "$schema": "../../schemas/cosmos-chains.schema.json", "name": "MAINNET chain list for COSMOS [generated by 'scripts/codegen-chains.ts', do not edit manually]", - "timestamp": "2023-08-27T08:52:43.243Z", + "timestamp": "2024-02-03T07:24:15.576Z", "chains": [ { "rest": "https://api.cosmos.network", diff --git a/registry/mainnet/evm/chains.json b/registry/mainnet/evm/chains.json index 01ec12c..e40049e 100644 --- a/registry/mainnet/evm/chains.json +++ b/registry/mainnet/evm/chains.json @@ -1,7 +1,7 @@ { "$schema": "../../schemas/evm-chains.schema.json", "name": "MAINNET chain list for EVM [generated by 'scripts/codegen-chains.ts', do not edit manually]", - "timestamp": "2023-08-27T08:52:43.242Z", + "timestamp": "2024-02-03T07:24:15.575Z", "chains": [ { "id": 42161, diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index 922394b..6b6ed4d 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -19,10 +19,12 @@ "originAxelarChainId": "moonbeam", "tokenType": "interchain", "iconUrls": { - "svg": "/images/tokens/rmrk.svg" + "svg": "https://raw.githubusercontent.com/axelarnetwork/axelar-configs/main/images/tokens/rmrk.svg" }, + "deployer": "0x0000000000000000000000000000000000000000", + "originalMinter": "0x0000000000000000000000000000000000000000", "deploySalt": "0x", - "deploymentTxHash": "", + "deploymentTxHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "chains": [ { "axelarChainId": "moonbeam", diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index 3362c6f..be572fb 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -11,15 +11,7 @@ "version": { "$ref": "#/definitions/version" }, "tokens": { "type": "object", - "properties": { - "$id": { - "type": "string" - }, - "$schema": { - "type": "object", - "$ref": "#/definitions/interchainToken" - } - } + "additionalProperties": { "$ref": "#/definitions/interchainToken" } } }, "required": ["$schema", "name", "version", "tokens"], @@ -27,37 +19,67 @@ "definitions": { "IconUrlsSchema": { "type": "object", - "properties": { "svg": { "type": "string" } }, + "properties": { "svg": { "type": "string", "format": "uri" } }, "required": ["svg"], "additionalProperties": false }, + "chains": { + "type": "object", + "properties": { + "axelarChainId": { "type": "string" }, + "tokenAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, + "tokenManager": { + "$ref": "#/definitions/chains/properties/tokenAddress" + }, + "tokenManagerType": { "type": "string" } + }, + "required": [ + "axelarChainId", + "tokenAddress", + "tokenManager", + "tokenManagerType" + ], + "additionalProperties": false + }, "interchainToken": { "type": "object", "properties": { "tokenId": { "type": "string", "pattern": "^0x[a-fA-F0-9]{64}$" }, - "tokenAddress": { "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, + "tokenAddress": { + "$ref": "#/definitions/chains/properties/tokenAddress" + }, + "tokenManager": { + "$ref": "#/definitions/chains/properties/tokenAddress" + }, + "deployer": { "$ref": "#/definitions/chains/properties/tokenAddress" }, + "originalMinter": { + "$ref": "#/definitions/chains/properties/tokenAddress" + }, + "tokenManagerType": { "type": "string" }, "symbol": { "type": "string" }, "prettySymbol": { "type": "string" }, "decimals": { "type": "integer" }, "name": { "type": "string" }, "originAxelarChainId": { "type": "string" }, "tokenType": { "type": "string" }, - "deploymentTxHash": { "type": "string" }, "iconUrls": { "$ref": "#/definitions/IconUrlsSchema" }, + "deploySalt": { "type": "string" }, "chains": { "type": "array", "items": { "$ref": "#/definitions/chains" } }, - "tokenManager": { - "type": "string", - "pattern": "^0x[a-fA-F0-9]{40}$" - }, - "tokenManagerType": { "type": "string" }, - "coinGeckoId": { "type": "string" } + "coinGeckoId": { "type": "string" }, + "deploymentTxHash": { + "$ref": "#/definitions/interchainToken/properties/tokenId" + } }, "required": [ "tokenId", "tokenAddress", + "tokenManager", + "deployer", + "originalMinter", + "tokenManagerType", "symbol", "prettySymbol", "decimals", @@ -65,32 +87,9 @@ "originAxelarChainId", "tokenType", "iconUrls", + "deploySalt", "chains", - "deploymentTxHash", - "tokenManager", - "tokenManagerType" - ], - "additionalProperties": false - }, - "chains": { - "type": "object", - "properties": { - "axelarChainId": { "type": "string" }, - "tokenAddress": { - "$ref": "#/definitions/interchainToken/properties/tokenAddress" - }, - "tokenManager": { - "$ref": "#/definitions/interchainToken/properties/tokenManager" - }, - "tokenManagerType": { - "$ref": "#/definitions/interchainToken/properties/tokenManagerType" - } - }, - "required": [ - "axelarChainId", - "tokenAddress", - "tokenManager", - "tokenManagerType" + "deploymentTxHash" ], "additionalProperties": false }, diff --git a/registry/testnet/cosmos/chains.json b/registry/testnet/cosmos/chains.json index 42d3135..72d2f25 100644 --- a/registry/testnet/cosmos/chains.json +++ b/registry/testnet/cosmos/chains.json @@ -1,48 +1,8 @@ { "$schema": "../../schemas/cosmos-chains.schema.json", "name": "TESTNET chain list for COSMOS [generated by 'scripts/codegen-chains.ts', do not edit manually]", - "timestamp": "2023-08-27T08:52:43.244Z", + "timestamp": "2024-02-03T07:24:15.577Z", "chains": [ - { - "rest": "https://lcd.euphoria.aura.network", - "rpc": "https://testnet.rpc.axelar.dev/chain/aura", - "chainId": "euphoria-2", - "chainName": "Aura Testnet", - "stakeCurrency": { - "coinDenom": "EAURA", - "coinMinimalDenom": "ueaura", - "coinDecimals": 6, - "coinImageUrl": "/images/tokens/eaura.svg" - }, - "bech32Config": { - "bech32PrefixAccAddr": "aura", - "bech32PrefixAccPub": "aurapub", - "bech32PrefixConsAddr": "auravalcons", - "bech32PrefixConsPub": "auravalconspub", - "bech32PrefixValAddr": "auravaloper", - "bech32PrefixValPub": "auravaloperpub" - }, - "bip44": { - "coinType": 118 - }, - "feeCurrencies": [ - { - "coinDenom": "EAURA", - "coinMinimalDenom": "ueaura", - "coinDecimals": 6, - "coinImageUrl": "/images/tokens/eaura.svg" - } - ], - "currencies": [ - { - "coinDenom": "EAURA", - "coinMinimalDenom": "ueaura", - "coinDecimals": 6, - "coinImageUrl": "/images/tokens/eaura.svg" - } - ], - "chainIconUrl": "/images/chains/aura.svg" - }, { "rest": "http://testnet.securesecrets.org:1317", "rpc": "https://testnet.rpc.axelar.dev/chain/secret", @@ -84,176 +44,216 @@ "chainIconUrl": "/images/chains/secret.svg" }, { - "rest": "https://axelar-testnet-lcd.axelar-dev.workers.dev", - "rpc": "https://testnet.rpc.axelar.dev/chain/axelar", - "chainId": "axelar-testnet-lisbon-3", - "chainName": "Axelar Testnet", + "rest": "https://lcd.osmotest5.osmosis.zone", + "rpc": "https://testnet.rpc.axelar.dev/chain/osmosis", + "chainId": "osmo-test-5", + "chainName": "Osmosis Testnet", "stakeCurrency": { - "coinDenom": "AXL", - "coinMinimalDenom": "uaxl", + "coinDenom": "OSMO", + "coinMinimalDenom": "uosmo", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/axl.svg" + "coinImageUrl": "/images/tokens/osmo.svg" }, "bech32Config": { - "bech32PrefixAccAddr": "axelar", - "bech32PrefixAccPub": "axelarpub", - "bech32PrefixConsAddr": "axelarvalcons", - "bech32PrefixConsPub": "axelarvalconspub", - "bech32PrefixValAddr": "axelarvaloper", - "bech32PrefixValPub": "axelarvaloperpub" + "bech32PrefixAccAddr": "osmo", + "bech32PrefixAccPub": "osmopub", + "bech32PrefixConsAddr": "osmovalcons", + "bech32PrefixConsPub": "osmovalconspub", + "bech32PrefixValAddr": "osmovaloper", + "bech32PrefixValPub": "osmovaloperpub" }, "bip44": { "coinType": 118 }, "feeCurrencies": [ { - "coinDenom": "AXL", - "coinMinimalDenom": "uaxl", + "coinDenom": "OSMO", + "coinMinimalDenom": "uosmo", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/axl.svg" + "coinImageUrl": "/images/tokens/osmo.svg" } ], "currencies": [ { - "coinDenom": "AXL", - "coinMinimalDenom": "uaxl", + "coinDenom": "OSMO", + "coinMinimalDenom": "uosmo", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/axl.svg" + "coinImageUrl": "/images/tokens/osmo.svg" + }, + { + "coinDenom": "ION", + "coinMinimalDenom": "uion", + "coinDecimals": 6, + "coinImageUrl": "/images/tokens/osmosis-ion.svg" } ], - "chainIconUrl": "/images/chains/axelar.svg" + "chainIconUrl": "/images/chains/osmosis.svg" }, { - "rest": "https://api.xion-testnet-1.burnt.com", - "rpc": "https://testnet.rpc.axelar.dev/chain/burnt", - "chainId": "xion-testnet-1", - "chainName": "Burnt Testnet", + "rest": "https://api.cosmos.network", + "rpc": "https://testnet.rpc.axelar.dev/chain/cosmoshub", + "chainId": "cosmoshub-4", + "chainName": "Cosmoshub", "stakeCurrency": { - "coinDenom": "XION", - "coinMinimalDenom": "uxion", + "coinDenom": "ATOM", + "coinMinimalDenom": "uatom", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/xion.svg" + "coinImageUrl": "/images/tokens/atom.svg" }, "bech32Config": { - "bech32PrefixAccAddr": "xion", - "bech32PrefixAccPub": "xionpub", - "bech32PrefixConsAddr": "xionvalcons", - "bech32PrefixConsPub": "xionvalconspub", - "bech32PrefixValAddr": "xionvaloper", - "bech32PrefixValPub": "xionvaloperpub" + "bech32PrefixAccAddr": "cosmos", + "bech32PrefixAccPub": "cosmospub", + "bech32PrefixConsAddr": "cosmosvalcons", + "bech32PrefixConsPub": "cosmosvalconspub", + "bech32PrefixValAddr": "cosmosvaloper", + "bech32PrefixValPub": "cosmosvaloperpub" }, "bip44": { "coinType": 118 }, "feeCurrencies": [ { - "coinDenom": "XION", - "coinMinimalDenom": "uxion", + "coinDenom": "ATOM", + "coinMinimalDenom": "uatom", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/xion.svg" + "coinImageUrl": "/images/tokens/atom.svg" } ], "currencies": [ { - "coinDenom": "XION", - "coinMinimalDenom": "uxion", + "coinDenom": "ATOM", + "coinMinimalDenom": "uatom", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/xion.svg" - }, + "coinImageUrl": "/images/tokens/atom.svg" + } + ], + "chainIconUrl": "/images/chains/cosmoshub.svg" + }, + { + "rest": "https://axelar-testnet-lcd.axelar-dev.workers.dev", + "rpc": "https://testnet.rpc.axelar.dev/chain/axelar", + "chainId": "axelar-testnet-lisbon-3", + "chainName": "Axelar Testnet", + "stakeCurrency": { + "coinDenom": "AXL", + "coinMinimalDenom": "uaxl", + "coinDecimals": 6, + "coinImageUrl": "/images/tokens/axl.svg" + }, + "bech32Config": { + "bech32PrefixAccAddr": "axelar", + "bech32PrefixAccPub": "axelarpub", + "bech32PrefixConsAddr": "axelarvalcons", + "bech32PrefixConsPub": "axelarvalconspub", + "bech32PrefixValAddr": "axelarvaloper", + "bech32PrefixValPub": "axelarvaloperpub" + }, + "bip44": { + "coinType": 118 + }, + "feeCurrencies": [ { "coinDenom": "AXL", - "coinMinimalDenom": "ibc/D934516FBE457F3A98AFABD87E0EFF7F95A15325C191EA8CDD7763C702FDDEC2", + "coinMinimalDenom": "uaxl", "coinDecimals": 6, "coinImageUrl": "/images/tokens/axl.svg" } ], - "chainIconUrl": "/images/chains/burnt.svg" + "currencies": [ + { + "coinDenom": "AXL", + "coinMinimalDenom": "uaxl", + "coinDecimals": 6, + "coinImageUrl": "/images/tokens/axl.svg" + } + ], + "chainIconUrl": "/images/chains/axelar.svg" }, { - "rest": "https://api.cosmos.network", - "rpc": "https://testnet.rpc.axelar.dev/chain/cosmoshub", - "chainId": "cosmoshub-4", - "chainName": "Cosmoshub", + "rest": "https://lcd.euphoria.aura.network", + "rpc": "https://testnet.rpc.axelar.dev/chain/aura", + "chainId": "euphoria-2", + "chainName": "Aura Testnet", "stakeCurrency": { - "coinDenom": "ATOM", - "coinMinimalDenom": "uatom", + "coinDenom": "EAURA", + "coinMinimalDenom": "ueaura", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/atom.svg" + "coinImageUrl": "/images/tokens/eaura.svg" }, "bech32Config": { - "bech32PrefixAccAddr": "cosmos", - "bech32PrefixAccPub": "cosmospub", - "bech32PrefixConsAddr": "cosmosvalcons", - "bech32PrefixConsPub": "cosmosvalconspub", - "bech32PrefixValAddr": "cosmosvaloper", - "bech32PrefixValPub": "cosmosvaloperpub" + "bech32PrefixAccAddr": "aura", + "bech32PrefixAccPub": "aurapub", + "bech32PrefixConsAddr": "auravalcons", + "bech32PrefixConsPub": "auravalconspub", + "bech32PrefixValAddr": "auravaloper", + "bech32PrefixValPub": "auravaloperpub" }, "bip44": { "coinType": 118 }, "feeCurrencies": [ { - "coinDenom": "ATOM", - "coinMinimalDenom": "uatom", + "coinDenom": "EAURA", + "coinMinimalDenom": "ueaura", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/atom.svg" + "coinImageUrl": "/images/tokens/eaura.svg" } ], "currencies": [ { - "coinDenom": "ATOM", - "coinMinimalDenom": "uatom", + "coinDenom": "EAURA", + "coinMinimalDenom": "ueaura", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/atom.svg" + "coinImageUrl": "/images/tokens/eaura.svg" } ], - "chainIconUrl": "/images/chains/cosmoshub.svg" + "chainIconUrl": "/images/chains/aura.svg" }, { - "rest": "https://lcd.osmotest5.osmosis.zone", - "rpc": "https://testnet.rpc.axelar.dev/chain/osmosis", - "chainId": "osmo-test-5", - "chainName": "Osmosis Testnet", + "rest": "https://api.xion-testnet-1.burnt.com", + "rpc": "https://testnet.rpc.axelar.dev/chain/burnt", + "chainId": "xion-testnet-1", + "chainName": "Burnt Testnet", "stakeCurrency": { - "coinDenom": "OSMO", - "coinMinimalDenom": "uosmo", + "coinDenom": "XION", + "coinMinimalDenom": "uxion", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/osmo.svg" + "coinImageUrl": "/images/tokens/xion.svg" }, "bech32Config": { - "bech32PrefixAccAddr": "osmo", - "bech32PrefixAccPub": "osmopub", - "bech32PrefixConsAddr": "osmovalcons", - "bech32PrefixConsPub": "osmovalconspub", - "bech32PrefixValAddr": "osmovaloper", - "bech32PrefixValPub": "osmovaloperpub" + "bech32PrefixAccAddr": "xion", + "bech32PrefixAccPub": "xionpub", + "bech32PrefixConsAddr": "xionvalcons", + "bech32PrefixConsPub": "xionvalconspub", + "bech32PrefixValAddr": "xionvaloper", + "bech32PrefixValPub": "xionvaloperpub" }, "bip44": { "coinType": 118 }, "feeCurrencies": [ { - "coinDenom": "OSMO", - "coinMinimalDenom": "uosmo", + "coinDenom": "XION", + "coinMinimalDenom": "uxion", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/osmo.svg" + "coinImageUrl": "/images/tokens/xion.svg" } ], "currencies": [ { - "coinDenom": "OSMO", - "coinMinimalDenom": "uosmo", + "coinDenom": "XION", + "coinMinimalDenom": "uxion", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/osmo.svg" + "coinImageUrl": "/images/tokens/xion.svg" }, { - "coinDenom": "ION", - "coinMinimalDenom": "uion", + "coinDenom": "AXL", + "coinMinimalDenom": "ibc/D934516FBE457F3A98AFABD87E0EFF7F95A15325C191EA8CDD7763C702FDDEC2", "coinDecimals": 6, - "coinImageUrl": "/images/tokens/osmosis-ion.svg" + "coinImageUrl": "/images/tokens/axl.svg" } ], - "chainIconUrl": "/images/chains/osmosis.svg" + "chainIconUrl": "/images/chains/burnt.svg" } ] } diff --git a/registry/testnet/evm/chains.json b/registry/testnet/evm/chains.json index eb754e0..894cce6 100644 --- a/registry/testnet/evm/chains.json +++ b/registry/testnet/evm/chains.json @@ -1,28 +1,8 @@ { "$schema": "../../schemas/evm-chains.schema.json", "name": "TESTNET chain list for EVM [generated by 'scripts/codegen-chains.ts', do not edit manually]", - "timestamp": "2023-08-27T08:52:43.243Z", + "timestamp": "2024-02-03T07:24:15.576Z", "chains": [ - { - "id": 80001, - "network": "maticmum", - "name": "Polygon Mumbai", - "nativeCurrency": { - "name": "MATIC", - "symbol": "MATIC", - "decimals": 18, - "iconUrl": "/images/tokens/matic.svg" - }, - "rpcUrls": ["https://matic-mumbai.chainstacklabs.com"], - "blockExplorers": [ - { - "name": "PolygonScan", - "url": "https://mumbai.polygonscan.com" - } - ], - "iconUrl": "/images/chains/polygon.svg", - "testnet": true - }, { "id": 5, "network": "goerli", @@ -62,6 +42,26 @@ ], "iconUrl": "/images/chains/polygon.svg", "testnet": true + }, + { + "id": 80001, + "network": "maticmum", + "name": "Polygon Mumbai", + "nativeCurrency": { + "name": "MATIC", + "symbol": "MATIC", + "decimals": 18, + "iconUrl": "/images/tokens/matic.svg" + }, + "rpcUrls": ["https://matic-mumbai.chainstacklabs.com"], + "blockExplorers": [ + { + "name": "PolygonScan", + "url": "https://mumbai.polygonscan.com" + } + ], + "iconUrl": "/images/chains/polygon.svg", + "testnet": true } ] } diff --git a/specs/interchain.spec.ts b/specs/interchain.spec.ts index 9bb5776..ea0854c 100644 --- a/specs/interchain.spec.ts +++ b/specs/interchain.spec.ts @@ -15,10 +15,10 @@ describe("InterchainTokenList Configs", async () => { const result = validate(config, schema); if (!result.valid) { - console.log({ errors: result.errors }); + console.log({ errors: result.errors.map((x) => x.message) }); } - expect(result.valid).toBe(true); + expect(result.errors).toEqual([]); }); } }); From 383635c19757ee424520e8c271c3e7803a8a75b6 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Sat, 3 Feb 2024 23:10:18 -0500 Subject: [PATCH 22/24] chore: schema cleanup --- cli/schemas/interchain-tokenlist.ts | 7 +-- cli/wizard/commands/list-squid-token/index.ts | 50 +++++++++---------- .../mainnet/interchain/squid.tokenlist.json | 27 ++++++---- .../schemas/interchain-tokenlist.schema.json | 21 +++----- 4 files changed, 47 insertions(+), 58 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index 21ccfc7..cd88705 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -10,19 +10,16 @@ export const chains = z.object({ tokenAddress: address, tokenManager: address, tokenManagerType: z.string(), + symbol: z.string(), + name: z.string(), }); export const interchainToken = z.object({ tokenId: hash, - tokenAddress: address, - tokenManager: address, deployer: address, originalMinter: address, - tokenManagerType: z.string(), - symbol: z.string(), prettySymbol: z.string(), decimals: z.number().int(), - name: z.string(), originAxelarChainId: z.string(), tokenType: z.string(), iconUrls: IconUrlsSchema, diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 8837131..00dfc9a 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -58,7 +58,7 @@ export async function listSquidToken() { () => fetch(detailsApiUrl) .then((res) => res.json()) - .catch(() => ({})) as Promise + .catch(() => ({})) as Promise ); const newTokenConfig = parseAsInterchainTokenConfig(tokenDetails); @@ -92,7 +92,7 @@ export async function listSquidToken() { process.cwd(), "images", "tokens", - `${newTokenConfig.symbol.toLowerCase()}.svg` + `${newTokenConfig.prettySymbol.toLowerCase()}.svg` ); const tokenIconContent = await fs.readFile( path.resolve(process.cwd(), "images", "tokens", "axl.svg"), @@ -115,9 +115,9 @@ export async function listSquidToken() { const tokenListPath = path.resolve(process.cwd(), ...relativePath); await spinner("Creating PR...", async () => { - await $`git checkout -b feat/add-${newTokenConfig.symbol}-token`; + await $`git checkout -b feat/add-${newTokenConfig.prettySymbol}-token`; await $`git add ${tokenListPath}`; - await $`git commit -m "feat: add ${newTokenConfig.symbol} token"`; + await $`git commit -m "feat: add ${newTokenConfig.prettySymbol} token"`; await $`git push -u origin HEAD`; }); } @@ -133,23 +133,25 @@ export type InterchainTokenInfo = { axelarChainId: string; chainName: string; wasDeployedByAccount?: boolean; - kind: "canonical" | "standardized"; + kind: "canonical" | "interchain" | "customInterchain"; }; export type InterchainTokenSearchResult = InterchainTokenInfo & { matchingTokens: InterchainTokenInfo[]; }; -export type RemoteInterchainToken = { +export type RemoteInterchainTokenApiResponse = { + name: string; + symbol: string; axelarChainId: string; tokenAddress: string; - tokenManager: string; + tokenManagerAddress: string; tokenManagerType: string; deploymentStatus: string; deploymentTxHash: string; }; -export type InterchainTokenDetails = { +export type InterchainTokenDetailsApiResponse = { kind: string; salt: string; tokenName: string; @@ -163,26 +165,18 @@ export type InterchainTokenDetails = { tokenId: string; deploymentMessageId: string; deployer: string; - remoteTokens: RemoteInterchainToken[]; + remoteTokens: RemoteInterchainTokenApiResponse[]; }; function parseAsInterchainTokenConfig( - data: InterchainTokenDetails + data: InterchainTokenDetailsApiResponse ): InterchainTokenConfig { return { tokenId: hash.parse(data.tokenId), - tokenAddress: address.parse(data.tokenAddress), - tokenManager: address.parse(data.tokenManagerAddress), - tokenManagerType: convertCase( - "CONSTANT_CASE", - "camelCase" - )(data.tokenManagerType), deployer: data.deployer, originalMinter: data.originalMinterAddress, - symbol: data.tokenSymbol, prettySymbol: data.tokenSymbol, decimals: data.tokenDecimals, - name: data.tokenName, originAxelarChainId: data.axelarChainId, tokenType: data.kind, deploySalt: data.salt, @@ -193,23 +187,21 @@ function parseAsInterchainTokenConfig( chains: [ ...[ { + symbol: data.tokenSymbol, + name: data.tokenName, axelarChainId: data.axelarChainId, tokenAddress: address.parse(data.tokenAddress), tokenManager: address.parse(data.tokenManagerAddress), - tokenManagerType: convertCase( - "CONSTANT_CASE", - "camelCase" - )(data.tokenManagerType), + tokenManagerType: convertToCamelCase(data.tokenManagerType), }, ], ...data.remoteTokens.map((token) => ({ + symbol: data.tokenSymbol, + name: data.tokenName, axelarChainId: token.axelarChainId, tokenAddress: address.parse(token.tokenAddress), - tokenManager: address.parse(token.tokenManager), - tokenManagerType: convertCase( - "CONSTANT_CASE", - "camelCase" - )(token.tokenManagerType), + tokenManager: address.parse(token.tokenManagerAddress), + tokenManagerType: convertToCamelCase(token.tokenManagerType), })), ], }; @@ -220,3 +212,7 @@ function getEnvironmentFromUrl(tokenDetailsUrl: string) { ? "mainnet" : "testnet"; } + +function convertToCamelCase(input: string) { + return convertCase("CONSTANT_CASE", "camelCase")(input ?? "unknown"); +} diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index 6b6ed4d..a2c1e18 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -9,15 +9,10 @@ "tokens": { "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb": { "tokenId": "0xb689de707e78469c6a115fdcfd9a0c2db9f8e7ce5ade7b29526d63f4e01d77fb", - "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", - "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mintBurn", - "symbol": "RMRK", "prettySymbol": "RMRK", "decimals": 18, - "name": "RMRK", "originAxelarChainId": "moonbeam", - "tokenType": "interchain", + "tokenType": "customInterchain", "iconUrls": { "svg": "https://raw.githubusercontent.com/axelarnetwork/axelar-configs/main/images/tokens/rmrk.svg" }, @@ -30,31 +25,41 @@ "axelarChainId": "moonbeam", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mintBurn" + "tokenManagerType": "mintBurn", + "symbol": "RMRK", + "name": "RMRK" }, { "axelarChainId": "polygon", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mintBurn" + "tokenManagerType": "mintBurn", + "symbol": "RMRK", + "name": "RMRK" }, { "axelarChainId": "ethereum", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mintBurn" + "tokenManagerType": "mintBurn", + "symbol": "RMRK", + "name": "RMRK" }, { "axelarChainId": "base", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mintBurn" + "tokenManagerType": "mintBurn", + "symbol": "RMRK", + "name": "RMRK" }, { "axelarChainId": "binance", "tokenAddress": "0x524d524B4c9366be706D3A90dcf70076ca037aE3", "tokenManager": "0x5F53895484af488e27fd33CE70a3dbD745aeAA52", - "tokenManagerType": "mintBurn" + "tokenManagerType": "mintBurn", + "symbol": "RMRK", + "name": "RMRK" } ] } diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index be572fb..99927b9 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -31,13 +31,17 @@ "tokenManager": { "$ref": "#/definitions/chains/properties/tokenAddress" }, - "tokenManagerType": { "type": "string" } + "tokenManagerType": { "type": "string" }, + "name": { "type": "string" }, + "symbol": { "type": "string" } }, "required": [ "axelarChainId", "tokenAddress", "tokenManager", - "tokenManagerType" + "tokenManagerType", + "name", + "symbol" ], "additionalProperties": false }, @@ -45,18 +49,10 @@ "type": "object", "properties": { "tokenId": { "type": "string", "pattern": "^0x[a-fA-F0-9]{64}$" }, - "tokenAddress": { - "$ref": "#/definitions/chains/properties/tokenAddress" - }, - "tokenManager": { - "$ref": "#/definitions/chains/properties/tokenAddress" - }, "deployer": { "$ref": "#/definitions/chains/properties/tokenAddress" }, "originalMinter": { "$ref": "#/definitions/chains/properties/tokenAddress" }, - "tokenManagerType": { "type": "string" }, - "symbol": { "type": "string" }, "prettySymbol": { "type": "string" }, "decimals": { "type": "integer" }, "name": { "type": "string" }, @@ -75,15 +71,10 @@ }, "required": [ "tokenId", - "tokenAddress", - "tokenManager", "deployer", "originalMinter", - "tokenManagerType", - "symbol", "prettySymbol", "decimals", - "name", "originAxelarChainId", "tokenType", "iconUrls", From e51dce94550419d51ea63755ed5c724034a21230 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Sun, 4 Feb 2024 15:42:13 -0500 Subject: [PATCH 23/24] chore: change interface name for InterchainTokenInfoBaseAPIResponse --- cli/wizard/commands/list-squid-token/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index 00dfc9a..b4bf88b 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -122,7 +122,7 @@ export async function listSquidToken() { }); } -export type InterchainTokenInfo = { +export type InterchainTokenInfoBaseAPIResponse = { tokenId: string; tokenAddress: string; tokenManagerAddress: string; @@ -136,8 +136,8 @@ export type InterchainTokenInfo = { kind: "canonical" | "interchain" | "customInterchain"; }; -export type InterchainTokenSearchResult = InterchainTokenInfo & { - matchingTokens: InterchainTokenInfo[]; +export type InterchainTokenSearchResult = InterchainTokenInfoBaseAPIResponse & { + matchingTokens: InterchainTokenInfoBaseAPIResponse[]; }; export type RemoteInterchainTokenApiResponse = { From 80da059f7971fedf7bc5cea64cc9e33e091202a0 Mon Sep 17 00:00:00 2001 From: Canh Trinh Date: Sun, 4 Feb 2024 15:57:10 -0500 Subject: [PATCH 24/24] chore: replace deploymentMessageId with deploymentTxHash --- cli/schemas/interchain-tokenlist.ts | 2 +- cli/wizard/commands/list-squid-token/index.ts | 4 ++-- registry/mainnet/interchain/squid.tokenlist.json | 2 +- registry/schemas/interchain-tokenlist.schema.json | 6 ++---- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cli/schemas/interchain-tokenlist.ts b/cli/schemas/interchain-tokenlist.ts index cd88705..8f8a44b 100644 --- a/cli/schemas/interchain-tokenlist.ts +++ b/cli/schemas/interchain-tokenlist.ts @@ -26,7 +26,7 @@ export const interchainToken = z.object({ deploySalt: z.string(), chains: z.array(chains), coinGeckoId: z.string().optional(), - deploymentTxHash: hash, + deploymentMessageId: z.string(), }); export const version = z.object({ diff --git a/cli/wizard/commands/list-squid-token/index.ts b/cli/wizard/commands/list-squid-token/index.ts index b4bf88b..be9d4fc 100644 --- a/cli/wizard/commands/list-squid-token/index.ts +++ b/cli/wizard/commands/list-squid-token/index.ts @@ -148,7 +148,7 @@ export type RemoteInterchainTokenApiResponse = { tokenManagerAddress: string; tokenManagerType: string; deploymentStatus: string; - deploymentTxHash: string; + deploymentMessageId: string; }; export type InterchainTokenDetailsApiResponse = { @@ -183,7 +183,7 @@ function parseAsInterchainTokenConfig( iconUrls: { svg: `${BASE_REPO_URL}/images/tokens/${data.tokenSymbol.toLowerCase()}.svg`, }, - deploymentTxHash: data.deploymentMessageId?.split("-")[0] ?? "", + deploymentMessageId: data.deploymentMessageId ?? "", chains: [ ...[ { diff --git a/registry/mainnet/interchain/squid.tokenlist.json b/registry/mainnet/interchain/squid.tokenlist.json index a2c1e18..4d9ad81 100644 --- a/registry/mainnet/interchain/squid.tokenlist.json +++ b/registry/mainnet/interchain/squid.tokenlist.json @@ -19,7 +19,7 @@ "deployer": "0x0000000000000000000000000000000000000000", "originalMinter": "0x0000000000000000000000000000000000000000", "deploySalt": "0x", - "deploymentTxHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "deploymentMessageId": "0x0000000000000000000000000000000000000000000000000000000000000000-0", "chains": [ { "axelarChainId": "moonbeam", diff --git a/registry/schemas/interchain-tokenlist.schema.json b/registry/schemas/interchain-tokenlist.schema.json index 99927b9..b6323e1 100644 --- a/registry/schemas/interchain-tokenlist.schema.json +++ b/registry/schemas/interchain-tokenlist.schema.json @@ -65,9 +65,7 @@ "items": { "$ref": "#/definitions/chains" } }, "coinGeckoId": { "type": "string" }, - "deploymentTxHash": { - "$ref": "#/definitions/interchainToken/properties/tokenId" - } + "deploymentMessageId": { "type": "string" } }, "required": [ "tokenId", @@ -80,7 +78,7 @@ "iconUrls", "deploySalt", "chains", - "deploymentTxHash" + "deploymentMessageId" ], "additionalProperties": false },